Rev 1498 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1498 | Rev 2216 | ||
---|---|---|---|
Line 6... | Line 6... | ||
6 | 6 | ||
7 | /****************************************************************************** |
7 | /****************************************************************************** |
8 | * |
8 | * |
9 | * 1. Copyright Notice |
9 | * 1. Copyright Notice |
10 | * |
10 | * |
11 | * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp. |
11 | * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp. |
12 | * All rights reserved. |
12 | * All rights reserved. |
13 | * |
13 | * |
14 | * 2. License |
14 | * 2. License |
15 | * |
15 | * |
Line 259... | Line 259... | ||
259 | char *ExtraMessage) |
259 | char *ExtraMessage) |
260 | { |
260 | { |
Line 261... | Line 261... | ||
261 | 261 | ||
Line -... | Line 262... | ||
- | 262 | DtError (ASL_ERROR, MessageId, FieldObject, ExtraMessage); |
|
- | 263 | ||
- | 264 | /* |
|
- | 265 | * TBD: remove this entire function, DtFatal |
|
- | 266 | * |
|
- | 267 | * We cannot abort the compiler on error, because we may be compiling a |
|
- | 268 | * list of files. We must move on to the next file. |
|
262 | DtError (ASL_ERROR, MessageId, FieldObject, ExtraMessage); |
269 | */ |
263 | 270 | #ifdef __OBSOLETE |
|
- | 271 | CmCleanupAndExit (); |
|
264 | CmCleanupAndExit (); |
272 | exit (1); |
Line 265... | Line 273... | ||
265 | exit (1); |
273 | #endif |
266 | } |
274 | } |
Line 386... | Line 394... | ||
386 | /****************************************************************************** |
394 | /****************************************************************************** |
387 | * |
395 | * |
388 | * FUNCTION: DtGetFieldValue |
396 | * FUNCTION: DtGetFieldValue |
389 | * |
397 | * |
390 | * PARAMETERS: Field - Current field list pointer |
398 | * PARAMETERS: Field - Current field list pointer |
391 | * Name - Field name |
- | |
392 | * |
399 | * |
393 | * RETURN: Field value |
400 | * RETURN: Field value |
394 | * |
401 | * |
395 | * DESCRIPTION: Get field value |
402 | * DESCRIPTION: Get field value |
396 | * |
403 | * |
397 | *****************************************************************************/ |
404 | *****************************************************************************/ |
Line 398... | Line 405... | ||
398 | 405 | ||
399 | char * |
406 | char * |
400 | DtGetFieldValue ( |
407 | DtGetFieldValue ( |
401 | DT_FIELD *Field, |
- | |
402 | char *Name) |
408 | DT_FIELD *Field) |
403 | { |
- | |
404 | - | ||
405 | /* Search the field list for the name */ |
- | |
406 | 409 | { |
|
407 | while (Field) |
410 | if (!Field) |
408 | { |
- | |
409 | if (!ACPI_STRCMP (Name, Field->Name)) |
- | |
410 | { |
411 | { |
411 | return (Field->Value); |
- | |
412 | } |
- | |
413 | - | ||
414 | Field = Field->Next; |
412 | return (NULL); |
Line 415... | Line 413... | ||
415 | } |
413 | } |
416 | 414 | ||
Line 417... | Line 415... | ||
417 | return (NULL); |
415 | return (Field->Value); |
418 | } |
416 | } |
Line 469... | Line 467... | ||
469 | case ACPI_DMT_STRING: |
467 | case ACPI_DMT_STRING: |
470 | Type = DT_FIELD_TYPE_STRING; |
468 | Type = DT_FIELD_TYPE_STRING; |
471 | break; |
469 | break; |
Line 472... | Line 470... | ||
472 | 470 | ||
- | 471 | case ACPI_DMT_BUFFER: |
|
473 | case ACPI_DMT_BUFFER: |
472 | case ACPI_DMT_BUF7: |
474 | case ACPI_DMT_BUF16: |
473 | case ACPI_DMT_BUF16: |
475 | Type = DT_FIELD_TYPE_BUFFER; |
- | |
476 | break; |
- | |
477 | 474 | case ACPI_DMT_BUF128: |
|
478 | case ACPI_DMT_PCI_PATH: |
475 | case ACPI_DMT_PCI_PATH: |
479 | Type = DT_FIELD_TYPE_PCI_PATH; |
476 | Type = DT_FIELD_TYPE_BUFFER; |
Line 480... | Line 477... | ||
480 | break; |
477 | break; |
481 | 478 | ||
482 | case ACPI_DMT_GAS: |
479 | case ACPI_DMT_GAS: |
483 | case ACPI_DMT_HESTNTFY: |
480 | case ACPI_DMT_HESTNTFY: |
Line -... | Line 481... | ||
- | 481 | Type = DT_FIELD_TYPE_INLINE_SUBTABLE; |
|
- | 482 | break; |
|
- | 483 | ||
- | 484 | case ACPI_DMT_UNICODE: |
|
- | 485 | Type = DT_FIELD_TYPE_UNICODE; |
|
- | 486 | break; |
|
- | 487 | ||
- | 488 | case ACPI_DMT_UUID: |
|
- | 489 | Type = DT_FIELD_TYPE_UUID; |
|
- | 490 | break; |
|
- | 491 | ||
- | 492 | case ACPI_DMT_DEVICE_PATH: |
|
- | 493 | Type = DT_FIELD_TYPE_DEVICE_PATH; |
|
- | 494 | break; |
|
- | 495 | ||
- | 496 | case ACPI_DMT_LABEL: |
|
484 | Type = DT_FIELD_TYPE_INLINE_SUBTABLE; |
497 | Type = DT_FIELD_TYPE_LABEL; |
485 | break; |
498 | break; |
486 | 499 | ||
487 | default: |
500 | default: |
Line 534... | Line 547... | ||
534 | 547 | ||
535 | /****************************************************************************** |
548 | /****************************************************************************** |
536 | * |
549 | * |
537 | * FUNCTION: DtGetFieldLength |
550 | * FUNCTION: DtGetFieldLength |
538 | * |
551 | * |
539 | * PARAMETERS: Field - Current field list pointer |
552 | * PARAMETERS: Field - Current field |
540 | * Info - Data table info |
553 | * Info - Data table info |
541 | * |
554 | * |
542 | * RETURN: Field length |
555 | * RETURN: Field length |
543 | * |
556 | * |
544 | * DESCRIPTION: Get length of bytes needed to compile the field |
557 | * DESCRIPTION: Get length of bytes needed to compile the field |
- | 558 | * |
|
- | 559 | * Note: This function must remain in sync with AcpiDmDumpTable. |
|
545 | * |
560 | * |
Line 546... | Line 561... | ||
546 | *****************************************************************************/ |
561 | *****************************************************************************/ |
547 | 562 | ||
548 | UINT32 |
563 | UINT32 |
Line 566... | Line 581... | ||
566 | case ACPI_DMT_FLAG5: |
581 | case ACPI_DMT_FLAG5: |
567 | case ACPI_DMT_FLAG6: |
582 | case ACPI_DMT_FLAG6: |
568 | case ACPI_DMT_FLAG7: |
583 | case ACPI_DMT_FLAG7: |
569 | case ACPI_DMT_FLAGS0: |
584 | case ACPI_DMT_FLAGS0: |
570 | case ACPI_DMT_FLAGS2: |
585 | case ACPI_DMT_FLAGS2: |
- | 586 | case ACPI_DMT_LABEL: |
|
571 | ByteLength = 0; |
587 | ByteLength = 0; |
572 | break; |
588 | break; |
Line 573... | Line 589... | ||
573 | 589 | ||
574 | case ACPI_DMT_UINT8: |
590 | case ACPI_DMT_UINT8: |
575 | case ACPI_DMT_CHKSUM: |
591 | case ACPI_DMT_CHKSUM: |
- | 592 | case ACPI_DMT_SPACEID: |
|
- | 593 | case ACPI_DMT_ACCWIDTH: |
|
576 | case ACPI_DMT_SPACEID: |
594 | case ACPI_DMT_IVRS: |
577 | case ACPI_DMT_MADT: |
595 | case ACPI_DMT_MADT: |
578 | case ACPI_DMT_SRAT: |
596 | case ACPI_DMT_SRAT: |
579 | case ACPI_DMT_ASF: |
597 | case ACPI_DMT_ASF: |
580 | case ACPI_DMT_HESTNTYP: |
598 | case ACPI_DMT_HESTNTYP: |
- | 599 | case ACPI_DMT_FADTPM: |
|
581 | case ACPI_DMT_FADTPM: |
600 | case ACPI_DMT_EINJACT: |
- | 601 | case ACPI_DMT_EINJINST: |
|
- | 602 | case ACPI_DMT_ERSTACT: |
|
582 | case ACPI_DMT_IVRS: |
603 | case ACPI_DMT_ERSTINST: |
583 | ByteLength = 1; |
604 | ByteLength = 1; |
Line 584... | Line 605... | ||
584 | break; |
605 | break; |
585 | 606 | ||
Line 594... | Line 615... | ||
594 | ByteLength = 3; |
615 | ByteLength = 3; |
595 | break; |
616 | break; |
Line 596... | Line 617... | ||
596 | 617 | ||
597 | case ACPI_DMT_UINT32: |
618 | case ACPI_DMT_UINT32: |
- | 619 | case ACPI_DMT_NAME4: |
|
598 | case ACPI_DMT_NAME4: |
620 | case ACPI_DMT_SLIC: |
599 | case ACPI_DMT_SIG: |
621 | case ACPI_DMT_SIG: |
600 | ByteLength = 4; |
622 | ByteLength = 4; |
Line 601... | Line 623... | ||
601 | break; |
623 | break; |
602 | 624 | ||
603 | case ACPI_DMT_NAME6: |
625 | case ACPI_DMT_NAME6: |
Line 604... | Line 626... | ||
604 | ByteLength = 6; |
626 | ByteLength = 6; |
- | 627 | break; |
|
605 | break; |
628 | |
606 | 629 | case ACPI_DMT_UINT56: |
|
Line 607... | Line 630... | ||
607 | case ACPI_DMT_UINT56: |
630 | case ACPI_DMT_BUF7: |
608 | ByteLength = 7; |
631 | ByteLength = 7; |
609 | break; |
632 | break; |
610 | 633 | ||
Line 611... | Line 634... | ||
611 | case ACPI_DMT_UINT64: |
634 | case ACPI_DMT_UINT64: |
612 | case ACPI_DMT_NAME8: |
635 | case ACPI_DMT_NAME8: |
613 | ByteLength = 8; |
- | |
614 | break; |
636 | ByteLength = 8; |
615 | 637 | break; |
|
616 | case ACPI_DMT_STRING: |
638 | |
- | 639 | case ACPI_DMT_STRING: |
|
- | 640 | Value = DtGetFieldValue (Field); |
|
- | 641 | if (Value) |
|
- | 642 | { |
|
- | 643 | ByteLength = ACPI_STRLEN (Value) + 1; |
|
- | 644 | } |
|
- | 645 | else |
|
- | 646 | { /* At this point, this is a fatal error */ |
|
617 | Value = DtGetFieldValue (Field, Info->Name); |
647 | |
Line 618... | Line 648... | ||
618 | 648 | sprintf (MsgBuffer, "Expected \"%s\"", Info->Name); |
|
619 | /* TBD: error if Value is NULL? (as below?) */ |
649 | DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); |
620 | 650 | return (0); |
|
Line 628... | Line 658... | ||
628 | case ACPI_DMT_HESTNTFY: |
658 | case ACPI_DMT_HESTNTFY: |
629 | ByteLength = sizeof (ACPI_HEST_NOTIFY); |
659 | ByteLength = sizeof (ACPI_HEST_NOTIFY); |
630 | break; |
660 | break; |
Line 631... | Line 661... | ||
631 | 661 | ||
632 | case ACPI_DMT_BUFFER: |
662 | case ACPI_DMT_BUFFER: |
633 | Value = DtGetFieldValue (Field, Info->Name); |
663 | Value = DtGetFieldValue (Field); |
634 | if (Value) |
664 | if (Value) |
635 | { |
665 | { |
636 | ByteLength = DtGetBufferLength (Value); |
666 | ByteLength = DtGetBufferLength (Value); |
637 | } |
667 | } |
638 | else |
668 | else |
Line 639... | Line 669... | ||
639 | { /* At this point, this is a fatal error */ |
669 | { /* At this point, this is a fatal error */ |
640 | 670 | ||
- | 671 | sprintf (MsgBuffer, "Expected \"%s\"", Info->Name); |
|
641 | sprintf (MsgBuffer, "Expected \"%s\"", Info->Name); |
672 | DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); |
642 | DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); |
673 | return (0); |
Line 643... | Line 674... | ||
643 | } |
674 | } |
- | 675 | break; |
|
644 | break; |
676 | |
645 | 677 | case ACPI_DMT_BUF16: |
|
Line -... | Line 678... | ||
- | 678 | case ACPI_DMT_UUID: |
|
- | 679 | ByteLength = 16; |
|
- | 680 | break; |
|
- | 681 | ||
- | 682 | case ACPI_DMT_BUF128: |
|
- | 683 | ByteLength = 128; |
|
- | 684 | break; |
|
- | 685 | ||
- | 686 | case ACPI_DMT_UNICODE: |
|
- | 687 | Value = DtGetFieldValue (Field); |
|
- | 688 | ||
- | 689 | /* TBD: error if Value is NULL? (as below?) */ |
|
646 | case ACPI_DMT_BUF16: |
690 | |
647 | ByteLength = 16; |
691 | ByteLength = (ACPI_STRLEN (Value) + 1) * sizeof(UINT16); |
648 | break; |
692 | break; |
649 | 693 | ||
Line 650... | Line 694... | ||
650 | default: |
694 | default: |
651 | DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid table opcode"); |
695 | DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid table opcode"); |
Line 751... | Line 795... | ||
751 | while (1) |
795 | while (1) |
752 | { |
796 | { |
753 | ChildTable = DtGetNextSubtable (ParentTable, ChildTable); |
797 | ChildTable = DtGetNextSubtable (ParentTable, ChildTable); |
754 | if (ChildTable) |
798 | if (ChildTable) |
755 | { |
799 | { |
- | 800 | if (ChildTable->LengthField) |
|
- | 801 | { |
|
- | 802 | DtSetSubtableLength (ChildTable); |
|
- | 803 | } |
|
- | 804 | ||
756 | if (ChildTable->Child) |
805 | if (ChildTable->Child) |
757 | { |
806 | { |
758 | ParentTable = ChildTable; |
807 | ParentTable = ChildTable; |
759 | ChildTable = NULL; |
808 | ChildTable = NULL; |
760 | } |
809 | } |