ReactOS  0.4.14-dev-297-g23e575c
exoparg1.c File Reference
#include "acpi.h"
#include "accommon.h"
#include "acparser.h"
#include "acdispat.h"
#include "acinterp.h"
#include "amlcode.h"
#include "acnamesp.h"
Include dependency graph for exoparg1.c:

Go to the source code of this file.

Macros

#define _COMPONENT   ACPI_EXECUTER
 

Functions

ACPI_STATUS AcpiExOpcode_0A_0T_1R (ACPI_WALK_STATE *WalkState)
 
ACPI_STATUS AcpiExOpcode_1A_0T_0R (ACPI_WALK_STATE *WalkState)
 
ACPI_STATUS AcpiExOpcode_1A_1T_0R (ACPI_WALK_STATE *WalkState)
 
ACPI_STATUS AcpiExOpcode_1A_1T_1R (ACPI_WALK_STATE *WalkState)
 
ACPI_STATUS AcpiExOpcode_1A_0T_1R (ACPI_WALK_STATE *WalkState)
 

Macro Definition Documentation

◆ _COMPONENT

#define _COMPONENT   ACPI_EXECUTER

Definition at line 53 of file exoparg1.c.

Function Documentation

◆ AcpiExOpcode_0A_0T_1R()

ACPI_STATUS AcpiExOpcode_0A_0T_1R ( ACPI_WALK_STATE WalkState)

Naming convention for AML interpreter execution routines.

The routines that begin execution of AML opcodes are named with a common convention based upon the number of arguments, the number of target operands, and whether or not a value is returned:

 AcpiExOpcode_xA_yT_zR

Where:

xA - ARGUMENTS: The number of arguments (input operands) that are required for this opcode type (0 through 6 args). yT - TARGETS: The number of targets (output operands) that are required for this opcode type (0, 1, or 2 targets). zR - RETURN VALUE: Indicates whether this opcode type returns a value as the function return (0 or 1).

The AcpiExOpcode* functions are called via the Dispatcher component with fully resolved operands. !

Definition at line 92 of file exoparg1.c.

94 {
96  ACPI_OPERAND_OBJECT *ReturnDesc = NULL;
97 
98 
99  ACPI_FUNCTION_TRACE_STR (ExOpcode_0A_0T_1R,
100  AcpiPsGetOpcodeName (WalkState->Opcode));
101 
102 
103  /* Examine the AML opcode */
104 
105  switch (WalkState->Opcode)
106  {
107  case AML_TIMER_OP: /* Timer () */
108 
109  /* Create a return object of type Integer */
110 
111  ReturnDesc = AcpiUtCreateIntegerObject (AcpiOsGetTimer ());
112  if (!ReturnDesc)
113  {
115  goto Cleanup;
116  }
117  break;
118 
119  default: /* Unknown opcode */
120 
121  ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
122  WalkState->Opcode));
124  break;
125  }
126 
127 Cleanup:
128 
129  /* Delete return object on error */
130 
131  if ((ACPI_FAILURE (Status)) || WalkState->ResultObj)
132  {
133  AcpiUtRemoveReference (ReturnDesc);
134  WalkState->ResultObj = NULL;
135  }
136  else
137  {
138  /* Save the return value */
139 
140  WalkState->ResultObj = ReturnDesc;
141  }
142 
144 }
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
UINT64 AcpiOsGetTimer(void)
Definition: osl.c:884
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define AML_TIMER_OP
Definition: amlcode.h:179
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AE_INFO
Definition: acoutput.h:230
smooth NULL
Definition: ftsmooth.c:416
#define AE_AML_BAD_OPCODE
Definition: acexcep.h:180
union acpi_operand_object * ResultObj
Definition: acstruct.h:121
ACPI_OPERAND_OBJECT * AcpiUtCreateIntegerObject(UINT64 Value)
Definition: utobject.c:223
static const WCHAR Cleanup[]
Definition: register.c:80
Status
Definition: gdiplustypes.h:24
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE_STR(a, b)
Definition: acoutput.h:483
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:784
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
UINT16 Opcode
Definition: acstruct.h:78
#define AE_OK
Definition: acexcep.h:97

◆ AcpiExOpcode_1A_0T_0R()

ACPI_STATUS AcpiExOpcode_1A_0T_0R ( ACPI_WALK_STATE WalkState)

Definition at line 161 of file exoparg1.c.

163 {
164  ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
166 
167 
168  ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_0T_0R,
169  AcpiPsGetOpcodeName (WalkState->Opcode));
170 
171 
172  /* Examine the AML opcode */
173 
174  switch (WalkState->Opcode)
175  {
176  case AML_RELEASE_OP: /* Release (MutexObject) */
177 
178  Status = AcpiExReleaseMutex (Operand[0], WalkState);
179  break;
180 
181  case AML_RESET_OP: /* Reset (EventObject) */
182 
183  Status = AcpiExSystemResetEvent (Operand[0]);
184  break;
185 
186  case AML_SIGNAL_OP: /* Signal (EventObject) */
187 
188  Status = AcpiExSystemSignalEvent (Operand[0]);
189  break;
190 
191  case AML_SLEEP_OP: /* Sleep (MsecTime) */
192 
193  Status = AcpiExSystemDoSleep (Operand[0]->Integer.Value);
194  break;
195 
196  case AML_STALL_OP: /* Stall (UsecTime) */
197 
198  Status = AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value);
199  break;
200 
201  case AML_UNLOAD_OP: /* Unload (Handle) */
202 
203  Status = AcpiExUnloadTable (Operand[0]);
204  break;
205 
206  default: /* Unknown opcode */
207 
208  ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
209  WalkState->Opcode));
211  break;
212  }
213 
215 }
#define AML_STALL_OP
Definition: amlcode.h:166
#define AML_RESET_OP
Definition: amlcode.h:171
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
ACPI_STATUS AcpiExSystemResetEvent(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: exsystem.c:327
#define AML_SIGNAL_OP
Definition: amlcode.h:169
#define AML_SLEEP_OP
Definition: amlcode.h:167
UINT32 ACPI_STATUS
Definition: actypes.h:460
unsigned int UINT32
ACPI_STATUS AcpiExSystemSignalEvent(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: exsystem.c:260
#define AE_INFO
Definition: acoutput.h:230
#define AE_AML_BAD_OPCODE
Definition: acexcep.h:180
#define AML_RELEASE_OP
Definition: amlcode.h:172
ACPI_STATUS AcpiExReleaseMutex(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState)
Definition: exmutex.c:408
Status
Definition: gdiplustypes.h:24
union acpi_operand_object * Operands[ACPI_OBJ_NUM_OPERANDS+1]
Definition: acstruct.h:105
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
ACPI_STATUS AcpiExUnloadTable(ACPI_OPERAND_OBJECT *DdbHandle)
Definition: exconfig.c:554
#define ACPI_FUNCTION_TRACE_STR(a, b)
Definition: acoutput.h:483
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
UINT16 Opcode
Definition: acstruct.h:78
ACPI_STATUS AcpiExSystemDoSleep(UINT64 HowLong)
Definition: exsystem.c:218
#define AML_UNLOAD_OP
Definition: amlcode.h:175
#define AE_OK
Definition: acexcep.h:97
ACPI_STATUS AcpiExSystemDoStall(UINT32 HowLong)
Definition: exsystem.c:174

◆ AcpiExOpcode_1A_0T_1R()

ACPI_STATUS AcpiExOpcode_1A_0T_1R ( ACPI_WALK_STATE WalkState)

Definition at line 624 of file exoparg1.c.

626 {
627  ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
628  ACPI_OPERAND_OBJECT *TempDesc;
629  ACPI_OPERAND_OBJECT *ReturnDesc = NULL;
631  UINT32 Type;
632  UINT64 Value;
633 
634 
635  ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_0T_1R,
636  AcpiPsGetOpcodeName (WalkState->Opcode));
637 
638 
639  /* Examine the AML opcode */
640 
641  switch (WalkState->Opcode)
642  {
643  case AML_LOGICAL_NOT_OP: /* LNot (Operand) */
644 
645  ReturnDesc = AcpiUtCreateIntegerObject ((UINT64) 0);
646  if (!ReturnDesc)
647  {
649  goto Cleanup;
650  }
651 
652  /*
653  * Set result to ONES (TRUE) if Value == 0. Note:
654  * ReturnDesc->Integer.Value is initially == 0 (FALSE) from above.
655  */
656  if (!Operand[0]->Integer.Value)
657  {
658  ReturnDesc->Integer.Value = ACPI_UINT64_MAX;
659  }
660  break;
661 
662  case AML_DECREMENT_OP: /* Decrement (Operand) */
663  case AML_INCREMENT_OP: /* Increment (Operand) */
664  /*
665  * Create a new integer. Can't just get the base integer and
666  * increment it because it may be an Arg or Field.
667  */
669  if (!ReturnDesc)
670  {
672  goto Cleanup;
673  }
674 
675  /*
676  * Since we are expecting a Reference operand, it can be either a
677  * NS Node or an internal object.
678  */
679  TempDesc = Operand[0];
681  {
682  /* Internal reference object - prevent deletion */
683 
684  AcpiUtAddReference (TempDesc);
685  }
686 
687  /*
688  * Convert the Reference operand to an Integer (This removes a
689  * reference on the Operand[0] object)
690  *
691  * NOTE: We use LNOT_OP here in order to force resolution of the
692  * reference operand to an actual integer.
693  */
695  &TempDesc, WalkState);
696  if (ACPI_FAILURE (Status))
697  {
699  "While resolving operands for [%s]",
700  AcpiPsGetOpcodeName (WalkState->Opcode)));
701 
702  goto Cleanup;
703  }
704 
705  /*
706  * TempDesc is now guaranteed to be an Integer object --
707  * Perform the actual increment or decrement
708  */
709  if (WalkState->Opcode == AML_INCREMENT_OP)
710  {
711  ReturnDesc->Integer.Value = TempDesc->Integer.Value + 1;
712  }
713  else
714  {
715  ReturnDesc->Integer.Value = TempDesc->Integer.Value - 1;
716  }
717 
718  /* Finished with this Integer object */
719 
720  AcpiUtRemoveReference (TempDesc);
721 
722  /*
723  * Store the result back (indirectly) through the original
724  * Reference object
725  */
726  Status = AcpiExStore (ReturnDesc, Operand[0], WalkState);
727  break;
728 
729  case AML_OBJECT_TYPE_OP: /* ObjectType (SourceObject) */
730  /*
731  * Note: The operand is not resolved at this point because we want to
732  * get the associated object, not its value. For example, we don't
733  * want to resolve a FieldUnit to its value, we want the actual
734  * FieldUnit object.
735  */
736 
737  /* Get the type of the base object */
738 
739  Status = AcpiExResolveMultiple (WalkState, Operand[0], &Type, NULL);
740  if (ACPI_FAILURE (Status))
741  {
742  goto Cleanup;
743  }
744 
745  /* Allocate a descriptor to hold the type. */
746 
747  ReturnDesc = AcpiUtCreateIntegerObject ((UINT64) Type);
748  if (!ReturnDesc)
749  {
751  goto Cleanup;
752  }
753  break;
754 
755  case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */
756  /*
757  * Note: The operand is not resolved at this point because we want to
758  * get the associated object, not its value.
759  */
760 
761  /* Get the base object */
762 
764  WalkState, Operand[0], &Type, &TempDesc);
765  if (ACPI_FAILURE (Status))
766  {
767  goto Cleanup;
768  }
769 
770  /*
771  * The type of the base object must be integer, buffer, string, or
772  * package. All others are not supported.
773  *
774  * NOTE: Integer is not specifically supported by the ACPI spec,
775  * but is supported implicitly via implicit operand conversion.
776  * rather than bother with conversion, we just use the byte width
777  * global (4 or 8 bytes).
778  */
779  switch (Type)
780  {
781  case ACPI_TYPE_INTEGER:
782 
783  Value = AcpiGbl_IntegerByteWidth;
784  break;
785 
786  case ACPI_TYPE_STRING:
787 
788  Value = TempDesc->String.Length;
789  break;
790 
791  case ACPI_TYPE_BUFFER:
792 
793  /* Buffer arguments may not be evaluated at this point */
794 
795  Status = AcpiDsGetBufferArguments (TempDesc);
796  Value = TempDesc->Buffer.Length;
797  break;
798 
799  case ACPI_TYPE_PACKAGE:
800 
801  /* Package arguments may not be evaluated at this point */
802 
803  Status = AcpiDsGetPackageArguments (TempDesc);
804  Value = TempDesc->Package.Count;
805  break;
806 
807  default:
808 
810  "Operand must be Buffer/Integer/String/Package"
811  " - found type %s",
813 
815  goto Cleanup;
816  }
817 
818  if (ACPI_FAILURE (Status))
819  {
820  goto Cleanup;
821  }
822 
823  /*
824  * Now that we have the size of the object, create a result
825  * object to hold the value
826  */
827  ReturnDesc = AcpiUtCreateIntegerObject (Value);
828  if (!ReturnDesc)
829  {
831  goto Cleanup;
832  }
833  break;
834 
835 
836  case AML_REF_OF_OP: /* RefOf (SourceObject) */
837 
839  Operand[0], &ReturnDesc, WalkState);
840  if (ACPI_FAILURE (Status))
841  {
842  goto Cleanup;
843  }
844  break;
845 
846 
847  case AML_DEREF_OF_OP: /* DerefOf (ObjReference | String) */
848 
849  /* Check for a method local or argument, or standalone String */
850 
852  {
853  TempDesc = AcpiNsGetAttachedObject (
854  (ACPI_NAMESPACE_NODE *) Operand[0]);
855  if (TempDesc &&
856  ((TempDesc->Common.Type == ACPI_TYPE_STRING) ||
857  (TempDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE)))
858  {
859  Operand[0] = TempDesc;
860  AcpiUtAddReference (TempDesc);
861  }
862  else
863  {
865  goto Cleanup;
866  }
867  }
868  else
869  {
870  switch ((Operand[0])->Common.Type)
871  {
873  /*
874  * This is a DerefOf (LocalX | ArgX)
875  *
876  * Must resolve/dereference the local/arg reference first
877  */
878  switch (Operand[0]->Reference.Class)
879  {
880  case ACPI_REFCLASS_LOCAL:
881  case ACPI_REFCLASS_ARG:
882 
883  /* Set Operand[0] to the value of the local/arg */
884 
886  Operand[0]->Reference.Class,
887  Operand[0]->Reference.Value,
888  WalkState, &TempDesc);
889  if (ACPI_FAILURE (Status))
890  {
891  goto Cleanup;
892  }
893 
894  /*
895  * Delete our reference to the input object and
896  * point to the object just retrieved
897  */
898  AcpiUtRemoveReference (Operand[0]);
899  Operand[0] = TempDesc;
900  break;
901 
902  case ACPI_REFCLASS_REFOF:
903 
904  /* Get the object to which the reference refers */
905 
906  TempDesc = Operand[0]->Reference.Object;
907  AcpiUtRemoveReference (Operand[0]);
908  Operand[0] = TempDesc;
909  break;
910 
911  default:
912 
913  /* Must be an Index op - handled below */
914  break;
915  }
916  break;
917 
918  case ACPI_TYPE_STRING:
919 
920  break;
921 
922  default:
923 
925  goto Cleanup;
926  }
927  }
928 
930  {
931  if ((Operand[0])->Common.Type == ACPI_TYPE_STRING)
932  {
933  /*
934  * This is a DerefOf (String). The string is a reference
935  * to a named ACPI object.
936  *
937  * 1) Find the owning Node
938  * 2) Dereference the node to an actual object. Could be a
939  * Field, so we need to resolve the node to a value.
940  */
942  Operand[0]->String.Pointer,
945  ACPI_NAMESPACE_NODE, &ReturnDesc));
946  if (ACPI_FAILURE (Status))
947  {
948  goto Cleanup;
949  }
950 
953  ACPI_NAMESPACE_NODE, &ReturnDesc),
954  WalkState);
955  goto Cleanup;
956  }
957  }
958 
959  /* Operand[0] may have changed from the code above */
960 
962  {
963  /*
964  * This is a DerefOf (ObjectReference)
965  * Get the actual object from the Node (This is the dereference).
966  * This case may only happen when a LocalX or ArgX is
967  * dereferenced above, or for references to device and
968  * thermal objects.
969  */
970  switch (((ACPI_NAMESPACE_NODE *) Operand[0])->Type)
971  {
972  case ACPI_TYPE_DEVICE:
973  case ACPI_TYPE_THERMAL:
974 
975  /* These types have no node subobject, return the NS node */
976 
977  ReturnDesc = Operand[0];
978  break;
979 
980  default:
981  /* For most types, get the object attached to the node */
982 
983  ReturnDesc = AcpiNsGetAttachedObject (
984  (ACPI_NAMESPACE_NODE *) Operand[0]);
985  AcpiUtAddReference (ReturnDesc);
986  break;
987  }
988  }
989  else
990  {
991  /*
992  * This must be a reference object produced by either the
993  * Index() or RefOf() operator
994  */
995  switch (Operand[0]->Reference.Class)
996  {
997  case ACPI_REFCLASS_INDEX:
998  /*
999  * The target type for the Index operator must be
1000  * either a Buffer or a Package
1001  */
1002  switch (Operand[0]->Reference.TargetType)
1003  {
1005 
1006  TempDesc = Operand[0]->Reference.Object;
1007 
1008  /*
1009  * Create a new object that contains one element of the
1010  * buffer -- the element pointed to by the index.
1011  *
1012  * NOTE: index into a buffer is NOT a pointer to a
1013  * sub-buffer of the main buffer, it is only a pointer to a
1014  * single element (byte) of the buffer!
1015  *
1016  * Since we are returning the value of the buffer at the
1017  * indexed location, we don't need to add an additional
1018  * reference to the buffer itself.
1019  */
1020  ReturnDesc = AcpiUtCreateIntegerObject ((UINT64)
1021  TempDesc->Buffer.Pointer[Operand[0]->Reference.Value]);
1022  if (!ReturnDesc)
1023  {
1024  Status = AE_NO_MEMORY;
1025  goto Cleanup;
1026  }
1027  break;
1028 
1029  case ACPI_TYPE_PACKAGE:
1030  /*
1031  * Return the referenced element of the package. We must
1032  * add another reference to the referenced object, however.
1033  */
1034  ReturnDesc = *(Operand[0]->Reference.Where);
1035  if (!ReturnDesc)
1036  {
1037  /*
1038  * Element is NULL, do not allow the dereference.
1039  * This provides compatibility with other ACPI
1040  * implementations.
1041  */
1043  }
1044 
1045  AcpiUtAddReference (ReturnDesc);
1046  break;
1047 
1048  default:
1049 
1050  ACPI_ERROR ((AE_INFO,
1051  "Unknown Index TargetType 0x%X in reference object %p",
1052  Operand[0]->Reference.TargetType, Operand[0]));
1053 
1055  goto Cleanup;
1056  }
1057  break;
1058 
1059  case ACPI_REFCLASS_REFOF:
1060 
1061  ReturnDesc = Operand[0]->Reference.Object;
1062 
1063  if (ACPI_GET_DESCRIPTOR_TYPE (ReturnDesc) ==
1065  {
1066  ReturnDesc = AcpiNsGetAttachedObject (
1067  (ACPI_NAMESPACE_NODE *) ReturnDesc);
1068  if (!ReturnDesc)
1069  {
1070  break;
1071  }
1072 
1073  /*
1074  * June 2013:
1075  * BufferFields/FieldUnits require additional resolution
1076  */
1077  switch (ReturnDesc->Common.Type)
1078  {
1083 
1085  WalkState, ReturnDesc, &TempDesc);
1086  if (ACPI_FAILURE (Status))
1087  {
1088  goto Cleanup;
1089  }
1090 
1091  ReturnDesc = TempDesc;
1092  break;
1093 
1094  default:
1095 
1096  /* Add another reference to the object */
1097 
1098  AcpiUtAddReference (ReturnDesc);
1099  break;
1100  }
1101  }
1102  break;
1103 
1104  default:
1105 
1106  ACPI_ERROR ((AE_INFO,
1107  "Unknown class in reference(%p) - 0x%2.2X",
1108  Operand[0], Operand[0]->Reference.Class));
1109 
1110  Status = AE_TYPE;
1111  goto Cleanup;
1112  }
1113  }
1114  break;
1115 
1116  default:
1117 
1118  ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
1119  WalkState->Opcode));
1120 
1122  goto Cleanup;
1123  }
1124 
1125 
1126 Cleanup:
1127 
1128  /* Delete return object on error */
1129 
1130  if (ACPI_FAILURE (Status))
1131  {
1132  AcpiUtRemoveReference (ReturnDesc);
1133  }
1134 
1135  /* Save return object on success */
1136 
1137  else
1138  {
1139  WalkState->ResultObj = ReturnDesc;
1140  }
1141 
1143 }
#define ACPI_EXCEPTION(plist)
Definition: acoutput.h:239
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2343
#define AML_LOGICAL_NOT_OP
Definition: amlcode.h:122
#define ACPI_NS_SEARCH_PARENT
Definition: acnamesp.h:63
void AcpiUtAddReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:746
union acpi_operand_object * Object
Definition: aclocal.h:187
#define AML_SIZE_OF_OP
Definition: amlcode.h:111
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
#define ACPI_TYPE_THERMAL
Definition: actypes.h:691
Type
Definition: Type.h:6
ACPI_STATUS AcpiExStore(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState)
Definition: exstore.c:91
#define AE_NO_MEMORY
Definition: acexcep.h:112
ACPI_STATUS AcpiNsGetNodeUnlocked(ACPI_NAMESPACE_NODE *PrefixNode, const char *ExternalPathname, UINT32 Flags, ACPI_NAMESPACE_NODE **OutNode)
Definition: nsutils.c:777
ACPI_OBJECT_PACKAGE Package
Definition: acobject.h:520
#define ACPI_TYPE_BUFFER
Definition: actypes.h:681
#define ACPI_TYPE_INTEGER
Definition: actypes.h:679
ACPI_STATUS AcpiExResolveMultiple(ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *Operand, ACPI_OBJECT_TYPE *ReturnType, ACPI_OPERAND_OBJECT **ReturnDesc)
Definition: exresolv.c:350
#define ACPI_TYPE_LOCAL_REFERENCE
Definition: actypes.h:710
UINT32 ACPI_STATUS
Definition: actypes.h:460
ACPI_STATUS AcpiDsGetBufferArguments(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: dsargs.c:294
#define AE_AML_OPERAND_TYPE
Definition: acexcep.h:182
#define ACPI_TYPE_LOCAL_INDEX_FIELD
Definition: actypes.h:709
#define ACPI_TYPE_PACKAGE
Definition: actypes.h:682
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AML_DEREF_OF_OP
Definition: amlcode.h:107
unsigned int UINT32
ACPI_STATUS AcpiExResolveNodeToValue(ACPI_NAMESPACE_NODE **ObjectPtr, ACPI_WALK_STATE *WalkState)
Definition: exresnte.c:82
#define AE_INFO
Definition: acoutput.h:230
smooth NULL
Definition: ftsmooth.c:416
#define AE_AML_BAD_OPCODE
Definition: acexcep.h:180
ACPI_OBJECT_REFERENCE Reference
Definition: acobject.h:537
#define ACPI_DESC_TYPE_OPERAND
Definition: acobject.h:573
ACPI_OBJECT_BUFFER Buffer
Definition: acobject.h:519
union acpi_operand_object * ResultObj
Definition: acstruct.h:121
ACPI_OPERAND_OBJECT * AcpiUtCreateIntegerObject(UINT64 Value)
Definition: utobject.c:223
ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:308
#define ACPI_TYPE_LOCAL_REGION_FIELD
Definition: actypes.h:707
#define AML_OBJECT_TYPE_OP
Definition: amlcode.h:118
ACPI_GENERIC_STATE * ScopeInfo
Definition: acstruct.h:124
ACPI_OBJECT_INTEGER Integer
Definition: acobject.h:517
#define ACPI_TYPE_DEVICE
Definition: actypes.h:684
#define AE_TYPE
Definition: acexcep.h:116
static const WCHAR Cleanup[]
Definition: register.c:80
ACPI_OBJECT_STRING String
Definition: acobject.h:518
Status
Definition: gdiplustypes.h:24
union acpi_operand_object * Operands[ACPI_OBJ_NUM_OPERANDS+1]
Definition: acstruct.h:105
#define ACPI_CAST_INDIRECT_PTR(t, p)
Definition: actypes.h:545
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_TYPE_BUFFER_FIELD
Definition: actypes.h:692
ACPI_OBJECT_COMMON Common
Definition: acobject.h:516
#define ACPI_FUNCTION_TRACE_STR(a, b)
Definition: acoutput.h:483
ACPI_STATE_COMMON ACPI_NAMESPACE_NODE * Node
Definition: aclocal.h:740
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:784
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:249
ACPI_STATUS AcpiDsGetPackageArguments(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: dsargs.c:344
#define AE_AML_UNINITIALIZED_ELEMENT
Definition: acexcep.h:186
#define AML_DECREMENT_OP
Definition: amlcode.h:94
#define AML_INCREMENT_OP
Definition: amlcode.h:93
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
ACPI_STATUS AcpiExGetObjectReference(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ReturnDesc, ACPI_WALK_STATE *WalkState)
Definition: exmisc.c:70
#define ACPI_TYPE_LOCAL_BANK_FIELD
Definition: actypes.h:708
ACPI_STATUS AcpiDsMethodDataGetValue(UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc)
Definition: dsmthdat.c:406
#define ACPI_UINT64_MAX
Definition: actypes.h:67
#define AML_REF_OF_OP
Definition: amlcode.h:89
UINT16 Opcode
Definition: acstruct.h:78
#define ACPI_TYPE_STRING
Definition: actypes.h:680
ACPI_STATUS AcpiExReadDataFromField(ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **RetBufferDesc)
Definition: exfield.c:146
#define AcpiUtCreateInternalObject(t)
Definition: acutils.h:654
#define ACPI_DESC_TYPE_NAMED
Definition: acobject.h:574
unsigned long long UINT64
ACPI_STATUS AcpiExResolveOperands(UINT16 Opcode, ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState)
Definition: exresop.c:145
#define AE_OK
Definition: acexcep.h:97
ACPI_SCOPE_STATE Scope
Definition: aclocal.h:825
#define ACPI_GET_DESCRIPTOR_TYPE(d)
Definition: acmacros.h:414

◆ AcpiExOpcode_1A_1T_0R()

ACPI_STATUS AcpiExOpcode_1A_1T_0R ( ACPI_WALK_STATE WalkState)

Definition at line 232 of file exoparg1.c.

234 {
236  ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
237 
238 
239  ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_1T_0R,
240  AcpiPsGetOpcodeName (WalkState->Opcode));
241 
242 
243  /* Examine the AML opcode */
244 
245  switch (WalkState->Opcode)
246  {
247  case AML_LOAD_OP:
248 
249  Status = AcpiExLoadOp (Operand[0], Operand[1], WalkState);
250  break;
251 
252  default: /* Unknown opcode */
253 
254  ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
255  WalkState->Opcode));
257  goto Cleanup;
258  }
259 
260 
261 Cleanup:
262 
264 }
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define AML_LOAD_OP
Definition: amlcode.h:165
#define AE_INFO
Definition: acoutput.h:230
#define AE_AML_BAD_OPCODE
Definition: acexcep.h:180
static const WCHAR Cleanup[]
Definition: register.c:80
Status
Definition: gdiplustypes.h:24
union acpi_operand_object * Operands[ACPI_OBJ_NUM_OPERANDS+1]
Definition: acstruct.h:105
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE_STR(a, b)
Definition: acoutput.h:483
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
UINT16 Opcode
Definition: acstruct.h:78
ACPI_STATUS AcpiExLoadOp(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *Target, ACPI_WALK_STATE *WalkState)
Definition: exconfig.c:333
#define AE_OK
Definition: acexcep.h:97

◆ AcpiExOpcode_1A_1T_1R()

ACPI_STATUS AcpiExOpcode_1A_1T_1R ( ACPI_WALK_STATE WalkState)

Definition at line 281 of file exoparg1.c.

283 {
285  ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0];
286  ACPI_OPERAND_OBJECT *ReturnDesc = NULL;
287  ACPI_OPERAND_OBJECT *ReturnDesc2 = NULL;
288  UINT32 Temp32;
289  UINT32 i;
290  UINT64 PowerOfTen;
291  UINT64 Digit;
292 
293 
294  ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_1T_1R,
295  AcpiPsGetOpcodeName (WalkState->Opcode));
296 
297 
298  /* Examine the AML opcode */
299 
300  switch (WalkState->Opcode)
301  {
302  case AML_BIT_NOT_OP:
305  case AML_FROM_BCD_OP:
306  case AML_TO_BCD_OP:
308 
309  /* Create a return object of type Integer for these opcodes */
310 
312  if (!ReturnDesc)
313  {
315  goto Cleanup;
316  }
317 
318  switch (WalkState->Opcode)
319  {
320  case AML_BIT_NOT_OP: /* Not (Operand, Result) */
321 
322  ReturnDesc->Integer.Value = ~Operand[0]->Integer.Value;
323  break;
324 
325  case AML_FIND_SET_LEFT_BIT_OP: /* FindSetLeftBit (Operand, Result) */
326 
327  ReturnDesc->Integer.Value = Operand[0]->Integer.Value;
328 
329  /*
330  * Acpi specification describes Integer type as a little
331  * endian unsigned value, so this boundary condition is valid.
332  */
333  for (Temp32 = 0; ReturnDesc->Integer.Value &&
334  Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32)
335  {
336  ReturnDesc->Integer.Value >>= 1;
337  }
338 
339  ReturnDesc->Integer.Value = Temp32;
340  break;
341 
342  case AML_FIND_SET_RIGHT_BIT_OP: /* FindSetRightBit (Operand, Result) */
343 
344  ReturnDesc->Integer.Value = Operand[0]->Integer.Value;
345 
346  /*
347  * The Acpi specification describes Integer type as a little
348  * endian unsigned value, so this boundary condition is valid.
349  */
350  for (Temp32 = 0; ReturnDesc->Integer.Value &&
351  Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32)
352  {
353  ReturnDesc->Integer.Value <<= 1;
354  }
355 
356  /* Since the bit position is one-based, subtract from 33 (65) */
357 
358  ReturnDesc->Integer.Value =
359  Temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - Temp32;
360  break;
361 
362  case AML_FROM_BCD_OP: /* FromBcd (BCDValue, Result) */
363  /*
364  * The 64-bit ACPI integer can hold 16 4-bit BCD characters
365  * (if table is 32-bit, integer can hold 8 BCD characters)
366  * Convert each 4-bit BCD value
367  */
368  PowerOfTen = 1;
369  ReturnDesc->Integer.Value = 0;
370  Digit = Operand[0]->Integer.Value;
371 
372  /* Convert each BCD digit (each is one nybble wide) */
373 
374  for (i = 0; (i < AcpiGbl_IntegerNybbleWidth) && (Digit > 0); i++)
375  {
376  /* Get the least significant 4-bit BCD digit */
377 
378  Temp32 = ((UINT32) Digit) & 0xF;
379 
380  /* Check the range of the digit */
381 
382  if (Temp32 > 9)
383  {
385  "BCD digit too large (not decimal): 0x%X",
386  Temp32));
387 
389  goto Cleanup;
390  }
391 
392  /* Sum the digit into the result with the current power of 10 */
393 
394  ReturnDesc->Integer.Value +=
395  (((UINT64) Temp32) * PowerOfTen);
396 
397  /* Shift to next BCD digit */
398 
399  Digit >>= 4;
400 
401  /* Next power of 10 */
402 
403  PowerOfTen *= 10;
404  }
405  break;
406 
407  case AML_TO_BCD_OP: /* ToBcd (Operand, Result) */
408 
409  ReturnDesc->Integer.Value = 0;
410  Digit = Operand[0]->Integer.Value;
411 
412  /* Each BCD digit is one nybble wide */
413 
414  for (i = 0; (i < AcpiGbl_IntegerNybbleWidth) && (Digit > 0); i++)
415  {
416  (void) AcpiUtShortDivide (Digit, 10, &Digit, &Temp32);
417 
418  /*
419  * Insert the BCD digit that resides in the
420  * remainder from above
421  */
422  ReturnDesc->Integer.Value |=
423  (((UINT64) Temp32) << ACPI_MUL_4 (i));
424  }
425 
426  /* Overflow if there is any data left in Digit */
427 
428  if (Digit > 0)
429  {
431  "Integer too large to convert to BCD: 0x%8.8X%8.8X",
432  ACPI_FORMAT_UINT64 (Operand[0]->Integer.Value)));
434  goto Cleanup;
435  }
436  break;
437 
438  case AML_CONDITIONAL_REF_OF_OP: /* CondRefOf (SourceObject, Result) */
439  /*
440  * This op is a little strange because the internal return value is
441  * different than the return value stored in the result descriptor
442  * (There are really two return values)
443  */
444  if ((ACPI_NAMESPACE_NODE *) Operand[0] == AcpiGbl_RootNode)
445  {
446  /*
447  * This means that the object does not exist in the namespace,
448  * return FALSE
449  */
450  ReturnDesc->Integer.Value = 0;
451  goto Cleanup;
452  }
453 
454  /* Get the object reference, store it, and remove our reference */
455 
456  Status = AcpiExGetObjectReference (Operand[0],
457  &ReturnDesc2, WalkState);
458  if (ACPI_FAILURE (Status))
459  {
460  goto Cleanup;
461  }
462 
463  Status = AcpiExStore (ReturnDesc2, Operand[1], WalkState);
464  AcpiUtRemoveReference (ReturnDesc2);
465 
466  /* The object exists in the namespace, return TRUE */
467 
468  ReturnDesc->Integer.Value = ACPI_UINT64_MAX;
469  goto Cleanup;
470 
471 
472  default:
473 
474  /* No other opcodes get here */
475 
476  break;
477  }
478  break;
479 
480  case AML_STORE_OP: /* Store (Source, Target) */
481  /*
482  * A store operand is typically a number, string, buffer or lvalue
483  * Be careful about deleting the source object,
484  * since the object itself may have been stored.
485  */
486  Status = AcpiExStore (Operand[0], Operand[1], WalkState);
487  if (ACPI_FAILURE (Status))
488  {
490  }
491 
492  /* It is possible that the Store already produced a return object */
493 
494  if (!WalkState->ResultObj)
495  {
496  /*
497  * Normally, we would remove a reference on the Operand[0]
498  * parameter; But since it is being used as the internal return
499  * object (meaning we would normally increment it), the two
500  * cancel out, and we simply don't do anything.
501  */
502  WalkState->ResultObj = Operand[0];
503  WalkState->Operands[0] = NULL; /* Prevent deletion */
504  }
506 
507  /*
508  * ACPI 2.0 Opcodes
509  */
510  case AML_COPY_OBJECT_OP: /* CopyObject (Source, Target) */
511 
513  Operand[0], &ReturnDesc, WalkState);
514  break;
515 
516  case AML_TO_DECIMAL_STRING_OP: /* ToDecimalString (Data, Result) */
517 
519  Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_DECIMAL);
520  if (ReturnDesc == Operand[0])
521  {
522  /* No conversion performed, add ref to handle return value */
523 
524  AcpiUtAddReference (ReturnDesc);
525  }
526  break;
527 
528  case AML_TO_HEX_STRING_OP: /* ToHexString (Data, Result) */
529 
531  Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_HEX);
532  if (ReturnDesc == Operand[0])
533  {
534  /* No conversion performed, add ref to handle return value */
535 
536  AcpiUtAddReference (ReturnDesc);
537  }
538  break;
539 
540  case AML_TO_BUFFER_OP: /* ToBuffer (Data, Result) */
541 
542  Status = AcpiExConvertToBuffer (Operand[0], &ReturnDesc);
543  if (ReturnDesc == Operand[0])
544  {
545  /* No conversion performed, add ref to handle return value */
546 
547  AcpiUtAddReference (ReturnDesc);
548  }
549  break;
550 
551  case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */
552 
553  /* Perform "explicit" conversion */
554 
555  Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, 0);
556  if (ReturnDesc == Operand[0])
557  {
558  /* No conversion performed, add ref to handle return value */
559 
560  AcpiUtAddReference (ReturnDesc);
561  }
562  break;
563 
564  case AML_SHIFT_LEFT_BIT_OP: /* ShiftLeftBit (Source, BitNum) */
565  case AML_SHIFT_RIGHT_BIT_OP: /* ShiftRightBit (Source, BitNum) */
566 
567  /* These are two obsolete opcodes */
568 
570  "%s is obsolete and not implemented",
571  AcpiPsGetOpcodeName (WalkState->Opcode)));
572  Status = AE_SUPPORT;
573  goto Cleanup;
574 
575  default: /* Unknown opcode */
576 
577  ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
578  WalkState->Opcode));
580  goto Cleanup;
581  }
582 
583  if (ACPI_SUCCESS (Status))
584  {
585  /* Store the return value computed above into the target object */
586 
587  Status = AcpiExStore (ReturnDesc, Operand[1], WalkState);
588  }
589 
590 
591 Cleanup:
592 
593  /* Delete return object on error */
594 
595  if (ACPI_FAILURE (Status))
596  {
597  AcpiUtRemoveReference (ReturnDesc);
598  }
599 
600  /* Save return object on success */
601 
602  else if (!WalkState->ResultObj)
603  {
604  WalkState->ResultObj = ReturnDesc;
605  }
606 
608 }
#define AML_TO_BCD_OP
Definition: amlcode.h:174
void AcpiUtAddReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:746
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
#define ACPI_SUCCESS(a)
Definition: acexcep.h:94
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
ACPI_STATUS AcpiExStore(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState)
Definition: exstore.c:91
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define AE_AML_NUMERIC_OVERFLOW
Definition: acexcep.h:187
#define ACPI_TYPE_INTEGER
Definition: actypes.h:679
#define AML_SHIFT_LEFT_BIT_OP
Definition: amlcode.h:161
#define AML_TO_DECIMAL_STRING_OP
Definition: amlcode.h:127
#define ACPI_MUL_4(a)
Definition: acmacros.h:211
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define AML_TO_INTEGER_OP
Definition: amlcode.h:129
#define ACPI_INTEGER_BIT_SIZE
Definition: actypes.h:490
#define ACPI_EXPLICIT_CONVERT_HEX
Definition: acinterp.h:125
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
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
Definition: glfuncs.h:248
#define AML_TO_HEX_STRING_OP
Definition: amlcode.h:128
unsigned int UINT32
#define AML_TO_BUFFER_OP
Definition: amlcode.h:126
#define AML_FIND_SET_RIGHT_BIT_OP
Definition: amlcode.h:106
#define AML_SHIFT_RIGHT_BIT_OP
Definition: amlcode.h:160
#define AE_INFO
Definition: acoutput.h:230
smooth NULL
Definition: ftsmooth.c:416
#define AE_AML_BAD_OPCODE
Definition: acexcep.h:180
#define AML_STORE_OP
Definition: amlcode.h:88
ACPI_STATUS AcpiUtShortDivide(UINT64 InDividend, UINT32 Divisor, UINT64 *OutQuotient, UINT32 *OutRemainder)
Definition: utmath.c:337
union acpi_operand_object * ResultObj
Definition: acstruct.h:121
#define AML_COPY_OBJECT_OP
Definition: amlcode.h:131
#define AE_SUPPORT
Definition: acexcep.h:123
ACPI_STATUS AcpiExConvertToString(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc, UINT32 Type)
Definition: exconvrt.c:440
#define AML_FROM_BCD_OP
Definition: amlcode.h:173
ACPI_STATUS AcpiExConvertToInteger(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc, UINT32 ImplicitConversion)
Definition: exconvrt.c:79
ACPI_OBJECT_INTEGER Integer
Definition: acobject.h:517
#define AML_BIT_NOT_OP
Definition: amlcode.h:104
#define AML_CONDITIONAL_REF_OF_OP
Definition: amlcode.h:162
static const WCHAR Cleanup[]
Definition: register.c:80
Status
Definition: gdiplustypes.h:24
union acpi_operand_object * Operands[ACPI_OBJ_NUM_OPERANDS+1]
Definition: acstruct.h:105
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FORMAT_UINT64(i)
Definition: acmacros.h:71
#define AML_FIND_SET_LEFT_BIT_OP
Definition: amlcode.h:105
#define ACPI_FUNCTION_TRACE_STR(a, b)
Definition: acoutput.h:483
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:784
ACPI_STATUS AcpiExConvertToBuffer(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc)
Definition: exconvrt.c:224
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
ACPI_STATUS AcpiExGetObjectReference(ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ReturnDesc, ACPI_WALK_STATE *WalkState)
Definition: exmisc.c:70
#define ACPI_UINT64_MAX
Definition: actypes.h:67
UINT16 Opcode
Definition: acstruct.h:78
ACPI_STATUS AcpiUtCopyIobjectToIobject(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **DestDesc, ACPI_WALK_STATE *WalkState)
Definition: utcopy.c:1037
#define AcpiUtCreateInternalObject(t)
Definition: acutils.h:654
unsigned long long UINT64
#define ACPI_EXPLICIT_CONVERT_DECIMAL
Definition: acinterp.h:127
#define AE_OK
Definition: acexcep.h:97