Changeset 107065 in vbox
- Timestamp:
- Nov 20, 2024 8:22:49 PM (3 months ago)
- svn:sync-xref-src-repo-rev:
- 166019
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/SystemTableBuilder.cpp
r107037 r107065 704 704 RTAcpiTblMethodFinalize(m_hAcpiDsdt); 705 705 706 /* Build the PPI interface. */ 706 /* Build the PPI interface (this is as a verbatim translation from src/VBox/Devices/PC/vbox-tpm.dsl as possible). */ 707 RTAcpiTblMethodStart(m_hAcpiDsdt, "TPFS", 1, RTACPI_METHOD_F_SERIALIZED, 0 /*uSyncLvl*/); 708 709 RTAcpiTblIfStart(m_hAcpiDsdt); 710 /* LGreaterEqual(Arg0, 0x100). */ 711 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LGreaterEqual); 712 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 0); 713 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0x100); 714 715 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 716 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 717 RTAcpiTblIfFinalize(m_hAcpiDsdt); 718 719 RTAcpiTblOpRegionAppendEx(m_hAcpiDsdt, "TPP1", kAcpiOperationRegionSpace_SystemMemory); 720 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Add); /* Region offset */ 721 RTAcpiTblIntegerAppend(m_hAcpiDsdt, m_GCPhysTpm20Mmio + 0x5000); 722 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 0); /* Arg0 */ 723 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 724 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); /* Region size */ 725 726 /* Define the field accessor. */ 727 const RTACPIFIELDENTRY aPpiTpp1Fields[] = 728 { 729 { "TPPF", 8 }, 730 }; 731 RTAcpiTblFieldAppend(m_hAcpiDsdt, "TPP1", kAcpiFieldAcc_Any, false /*fLock*/, kAcpiFieldUpdate_Preserve, 732 &aPpiTpp1Fields[0], RT_ELEMENTS(aPpiTpp1Fields)); 733 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 734 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPPF"); 735 736 RTAcpiTblMethodFinalize(m_hAcpiDsdt); 737 738 739 /* Device specific method. */ 707 740 RTAcpiTblMethodStart(m_hAcpiDsdt, "_DSM", 4, RTACPI_METHOD_F_SERIALIZED, 0 /*uSyncLvl*/); 741 742 /* Define the MMIO region for the PPI interface. */ 743 RTAcpiTblOpRegionAppend(m_hAcpiDsdt, "TPMP", kAcpiOperationRegionSpace_SystemMemory, 744 m_GCPhysTpm20Mmio + 0x5100, 0x5a /*cbRegion*/); 745 746 /* Define the field accessors for the PPI interface. */ 747 const RTACPIFIELDENTRY aPpiFields[] = 748 { 749 { "PPIN", 8 }, 750 { "PPIP", 32 }, 751 { "PPRP", 32 }, 752 { "PPRQ", 32 }, 753 { "PPRM", 32 }, 754 { "LPPR", 32 } 755 }; 756 RTAcpiTblFieldAppend(m_hAcpiDsdt, "TPMP", kAcpiFieldAcc_Any, false /*fLock*/, kAcpiFieldUpdate_Preserve, 757 &aPpiFields[0], RT_ELEMENTS(aPpiFields)); 758 759 /* Define some packages we need later on. */ 760 RTAcpiTblNameAppend(m_hAcpiDsdt, "TPB2"); 761 RTAcpiTblPackageStart(m_hAcpiDsdt, 2 /*cElements*/); 762 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 763 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 764 RTAcpiTblPackageFinalize(m_hAcpiDsdt); 765 766 RTAcpiTblNameAppend(m_hAcpiDsdt, "TPB3"); 767 RTAcpiTblPackageStart(m_hAcpiDsdt, 3 /*cElements*/); 768 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 769 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 770 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 771 RTAcpiTblPackageFinalize(m_hAcpiDsdt); 772 708 773 709 774 /* … … 753 818 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 754 819 755 /** @todo */ 820 /* Store(DerefOf(Index(Arg3, Zero)), Local0) */ 821 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 822 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_DerefOf); 823 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 824 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 3); /* Arg3 */ 825 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); /* Zero */ 826 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 827 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 828 829 /* Store (TPFS (Local0), Local1) */ 830 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 831 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPFS"); 832 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 833 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 834 835 /* If (LEqual (And (Local1, 0x07), Zero)) */ 836 RTAcpiTblIfStart(m_hAcpiDsdt); 837 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 838 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_And); 839 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 840 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0x7); 841 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 842 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 843 844 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 845 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 846 847 RTAcpiTblIfFinalize(m_hAcpiDsdt); 848 849 /* Store (Local0, PPRQ) */ 850 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 851 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 852 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRQ"); 853 /* Store (Zero, PPRM) */ 854 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 855 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 856 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRM"); 857 858 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 859 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 756 860 757 861 RTAcpiTblIfFinalize(m_hAcpiDsdt); … … 766 870 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 3); 767 871 768 /** @todo */ 872 RTAcpiTblIfStart(m_hAcpiDsdt); 873 874 /* LEqual(Arg1, One). */ 875 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 876 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 1); 877 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 878 879 /* Store (PPRQ, Index(TPB2, One) */ 880 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 881 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRQ"); 882 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 883 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB2"); 884 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 885 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 886 887 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 888 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB2"); 889 890 RTAcpiTblIfFinalize(m_hAcpiDsdt); 891 892 RTAcpiTblIfStart(m_hAcpiDsdt); 893 894 /* LEqual(Arg1, 0x02). */ 895 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 896 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 1); 897 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 898 899 /* Store (PPRQ, Index(TPB3, One) */ 900 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 901 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRQ"); 902 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 903 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB3"); 904 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 905 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 906 907 /* Store (PPRM, Index(TPB3, 0x2) */ 908 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 909 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRM"); 910 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 911 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB3"); 912 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 913 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 914 915 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 916 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB2"); 917 918 RTAcpiTblIfFinalize(m_hAcpiDsdt); 919 920 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 921 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB3"); 769 922 770 923 RTAcpiTblIfFinalize(m_hAcpiDsdt); … … 793 946 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 5); 794 947 795 /** @todo */ 948 /* Store (LPPR, Index(TPB3, One) */ 949 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 950 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "LPPR"); 951 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 952 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB3"); 953 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 954 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 955 956 /* Store (PPRP, Index(TPB3, 0x2) */ 957 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 958 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRP"); 959 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 960 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB3"); 961 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 962 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 963 964 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 965 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPB3"); 796 966 797 967 RTAcpiTblIfFinalize(m_hAcpiDsdt); … … 820 990 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 7); 821 991 822 /** @todo */ 992 /* Store(DerefOf(Index(Arg3, Zero)), Local0) */ 993 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 994 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_DerefOf); 995 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 996 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 3); /* Arg3 */ 997 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); /* Zero */ 998 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 999 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 1000 1001 /* Store (TPFS (Local0), Local1) */ 1002 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1003 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPFS"); 1004 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 1005 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 1006 1007 /* Store(And(Local1, 0x07), Local1) */ 1008 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1009 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_And); 1010 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 1011 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0x7); 1012 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 1013 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 1014 1015 /* LEqual(Local1, Zero) */ 1016 RTAcpiTblIfStart(m_hAcpiDsdt); 1017 1018 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 1019 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); 1020 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 1021 1022 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 1023 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 1024 1025 RTAcpiTblIfFinalize(m_hAcpiDsdt); 1026 1027 /* LEqual(Local1, 2) */ 1028 RTAcpiTblIfStart(m_hAcpiDsdt); 1029 1030 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 1031 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); 1032 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 1033 1034 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 1035 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 3); 1036 1037 RTAcpiTblIfFinalize(m_hAcpiDsdt); 1038 1039 /* LEqual(Arg1, One) */ 1040 RTAcpiTblIfStart(m_hAcpiDsdt); 1041 1042 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 1043 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 1); 1044 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); 1045 1046 /* Store(Local0, PPRQ) */ 1047 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1048 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); 1049 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRQ"); 1050 1051 /* Store(Zero, PPRM) */ 1052 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1053 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 1054 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRM"); 1055 1056 RTAcpiTblIfFinalize(m_hAcpiDsdt); 1057 1058 /* LEqual(Arg1, 2) */ 1059 RTAcpiTblIfStart(m_hAcpiDsdt); 1060 1061 RTAcpiTblBinaryOpAppend(m_hAcpiDsdt, kAcpiBinaryOp_LEqual); 1062 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 1); 1063 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 2); 1064 1065 /* Store(DerefOf(Index(Arg3, One)), Local2) */ 1066 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1067 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_DerefOf); 1068 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 1069 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 3); /* Arg3 */ 1070 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 1); /* ONe */ 1071 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 1072 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 2); /* Local2 */ 1073 1074 /* Store(Local0, PPRQ) */ 1075 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1076 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); 1077 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRQ"); 1078 1079 /* Store(Local2, PPRM) */ 1080 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1081 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 2); 1082 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "PPRM"); 1083 1084 RTAcpiTblIfFinalize(m_hAcpiDsdt); 1085 1086 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 1087 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); 823 1088 824 1089 RTAcpiTblIfFinalize(m_hAcpiDsdt); … … 833 1098 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 8); 834 1099 835 /** @todo */ 1100 /* Store(DerefOf(Index(Arg3, Zero)), Local0) */ 1101 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1102 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_DerefOf); 1103 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Index); 1104 RTAcpiTblArgOpAppend(m_hAcpiDsdt, 3); /* Arg3 */ 1105 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0); /* Zero */ 1106 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 1107 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 1108 1109 /* Store (TPFS (Local0), Local1) */ 1110 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Store); 1111 RTAcpiTblNameStringAppend(m_hAcpiDsdt, "TPFS"); 1112 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 0); /* Local0 */ 1113 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 1114 1115 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_Return); 1116 RTAcpiTblStmtSimpleAppend(m_hAcpiDsdt, kAcpiStmt_And); 1117 RTAcpiTblLocalOpAppend(m_hAcpiDsdt, 1); /* Local1 */ 1118 RTAcpiTblIntegerAppend(m_hAcpiDsdt, 0x7); 1119 RTAcpiTblNullNameAppend(m_hAcpiDsdt); /* Target -> NullName */ 836 1120 837 1121 RTAcpiTblIfFinalize(m_hAcpiDsdt);
Note:
See TracChangeset
for help on using the changeset viewer.