void OpcGenerateAmlOpcode ( ACPI_PARSE_OBJECT *Op) { UINT16 Index; Index = (UINT16) (Op->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); Op->Asl.AmlOpcode = AslKeywordMapping[Index].AmlOpcode; Op->Asl.AcpiBtype = AslKeywordMapping[Index].AcpiBtype; Op->Asl.CompileFlags |= AslKeywordMapping[Index].Flags; if (!Op->Asl.Value.Integer) { Op->Asl.Value.Integer = AslKeywordMapping[Index].Value; } /* Special handling for some opcodes */ switch (Op->Asl.ParseOpcode) { case PARSEOP_INTEGER: /* * Set the opcode based on the size of the integer */ (void) OpcSetOptimalIntegerSize (Op); break; case PARSEOP_OFFSET: Op->Asl.AmlOpcodeLength = 1; break; case PARSEOP_ACCESSAS: OpcDoAccessAs (Op); break; case PARSEOP_CONNECTION: OpcDoConnection (Op); break; case PARSEOP_EISAID: OpcDoEisaId (Op); break; case PARSEOP_TOUUID: OpcDoUuId (Op); break; case PARSEOP_UNICODE: OpcDoUnicode (Op); break; case PARSEOP_INCLUDE: Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; Gbl_HasIncludeFiles = TRUE; break; case PARSEOP_EXTERNAL: Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; Op->Asl.Child->Asl.Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; break; case PARSEOP_TIMER: if (AcpiGbl_IntegerBitWidth == 32) { AslError (ASL_REMARK, ASL_MSG_TRUNCATION, Op, NULL); } break; default: /* Nothing to do for other opcodes */ break; } return; }
void OpcGenerateAmlOpcode ( ACPI_PARSE_OBJECT *Op) { UINT16 Index; Index = (UINT16) (Op->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); Op->Asl.AmlOpcode = AslKeywordMapping[Index].AmlOpcode; Op->Asl.AcpiBtype = AslKeywordMapping[Index].AcpiBtype; Op->Asl.CompileFlags |= AslKeywordMapping[Index].Flags; if (!Op->Asl.Value.Integer) { Op->Asl.Value.Integer = AslKeywordMapping[Index].Value; } /* Special handling for some opcodes */ switch (Op->Asl.ParseOpcode) { case PARSEOP_INTEGER: /* * Set the opcode based on the size of the integer */ (void) OpcSetOptimalIntegerSize (Op); break; case PARSEOP_OFFSET: Op->Asl.AmlOpcodeLength = 1; break; case PARSEOP_ACCESSAS: OpcDoAccessAs (Op); break; case PARSEOP_EISAID: OpcDoEisaId (Op); break; case PARSEOP_UNICODE: OpcDoUnicode (Op); break; case PARSEOP_INCLUDE: Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; Gbl_HasIncludeFiles = TRUE; break; case PARSEOP_EXTERNAL: Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; Op->Asl.Child->Asl.Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; break; case PARSEOP_PACKAGE: /* * The variable-length package has a different opcode */ if ((Op->Asl.Child->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (Op->Asl.Child->Asl.ParseOpcode != PARSEOP_INTEGER) && (Op->Asl.Child->Asl.ParseOpcode != PARSEOP_BYTECONST)) { Op->Asl.AmlOpcode = AML_VAR_PACKAGE_OP; } break; default: /* Nothing to do for other opcodes */ break; } return; }