376{
377
378#define ROM_AREA_START 0xE0000
379#define ROM_AREA_END 0xFFFFF
380
381#define OPTION_ROM_SIGNATURE 0xAA55
382
384 ULONG StartAddress = 0;
387
389
392
394
395
396
397 ULONG RomBoundaries[] = {0xA0000, 0xC0000, 0xF0000, 0x100000};
398 ULONG SizeIncrement[] = {0x20000, 0x00800, 0x10000, 0x0000 };
399
400
401
402
403
404
406 {
408 End = RomBoundaries[
i+1];
410
412 {
413 if (StartAddress == 0)
414 {
415
419 }
420
421
423 {
424
427
428
430 if (!UmaDesc)
return FALSE;
431
432 StartAddress = 0;
433 continue;
434 }
435
437 {
438
441
442
444 if (!UmaDesc)
return FALSE;
445
446 StartAddress = 0;
447 continue;
448 }
449
451 {
453 ULONG PrevRomAddress = 0;
454 ULONG PrevRomSize = 0;
455
456
458 {
459
460#if 0
461 {
462
463
464
465
466
467
468
469
471 {
472
473 }
475 {
476
477
478
480 if (!UmaDesc)
return FALSE;
481
482 StartAddress = 0;
483
484 }
486 {
488 }
489 }
490#endif
491
494
495 if (StartAddress == 0)
496 {
497
501
502 PrevRomAddress = 0;
503 PrevRomSize = 0;
504 }
505
507 {
508
509
510
511
512
513
514
516
518
520
521 if (StartAddress != 0 &&
Size != 0 &&
523 {
524
526 if (!UmaDesc)
return FALSE;
527 }
528
529
530
531
532
533 if (PrevRomAddress + PrevRomSize >
Address)
534 {
535
536
537
538
539
540
541 PrevRomSize =
max(PrevRomSize, RomSize +
Address - PrevRomAddress);
542
543
544
545 StartAddress = PrevRomAddress;
548 }
549 else
550 {
551
552
554 PrevRomSize = RomSize;
555
556
560
561 }
562 }
563#if 1
564 else
565 {
566
567
568
569
570
571
572
573
575 {
576
577 }
579 {
580
581
582
584 if (!UmaDesc)
return FALSE;
585
586 StartAddress = 0;
588 }
590 {
592 }
593 }
594#endif
595
596
597
598 }
599
600 if (StartAddress != 0 &&
Size != 0)
601 {
602
604 if (!UmaDesc)
return FALSE;
605
606 StartAddress = 0;
607 }
608
609 }
610 }
611 }
612
614}
#define REAL_TO_PHYS(ptr)
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define OPTION_ROM_SIGNATURE