Пример #1
0
ACPI_STATUS
OpcAmlOpcodeUpdateWalk (
    ACPI_PARSE_OBJECT       *Op,
    UINT32                  Level,
    void                    *Context)
{

    /*
     * Handle the Package() case where the actual opcode cannot be determined
     * until the PackageLength operand has been folded and minimized.
     * (PackageOp versus VarPackageOp)
     *
     * This is (as of ACPI 3.0) the only case where the AML opcode can change
     * based upon the value of a parameter.
     *
     * The parser always inserts a VarPackage opcode, which can possibly be
     * optimized to a Package opcode.
     */
    if (Op->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE)
    {
        OpnDoPackage (Op);
    }

    return (AE_OK);
}
Пример #2
0
void
OpnGenerateAmlOperands (
    ACPI_PARSE_OBJECT       *Op)
{


    if (Op->Asl.AmlOpcode == AML_RAW_DATA_BYTE)
    {
        return;
    }

    switch (Op->Asl.ParseOpcode)
    {
    case PARSEOP_DEFINITIONBLOCK:
        OpnDoDefinitionBlock (Op);
        break;

    case PARSEOP_METHOD:
        OpnDoMethod (Op);
        break;

    case PARSEOP_FIELD:
        OpnDoField (Op);
        break;

    case PARSEOP_INDEXFIELD:
        OpnDoIndexField (Op);
        break;

    case PARSEOP_BANKFIELD:
        OpnDoBankField (Op);
        break;

    case PARSEOP_BUFFER:
        OpnDoBuffer (Op);
        break;

    case PARSEOP_LOADTABLE:
        OpnDoLoadTable (Op);
        break;

    case PARSEOP_PACKAGE:
        OpnDoPackage (Op);
        break;

    case PARSEOP_OPERATIONREGION:
        OpnDoRegion (Op);
        break;

    case PARSEOP_RESOURCETEMPLATE:
        RsDoResourceTemplate (Op);
        break;

    case PARSEOP_NAMESEG:
    case PARSEOP_NAMESTRING:
    case PARSEOP_METHODCALL:
    case PARSEOP_STRING_LITERAL:
        break;

    default:
        break;
    }

    /* TBD: move */

    OpnAttachNameToNode (Op);
}