/*++

Copyright (c) 2012 Minoca Corp. All Rights Reserved

Module Name:

    amlops.h

Abstract:

    This header contains definitions for ACPI AML opcodes and instructions.

Author:

    Evan Green 13-Nov-2012

--*/

//
// ------------------------------------------------------------------- Includes
//

//
// ---------------------------------------------------------------- Definitions
//

//
// ------------------------------------------------------ Data Type Definitions
//

typedef
KSTATUS
(*PAML_CREATE_NEXT_STATEMENT_ROUTINE) (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates the next AML statement based on the current AML
    execution context and the first opcode byte.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    Status code indicating whether a statement was successfully created.

--*/

typedef
KSTATUS
(*PAML_EVALUATE_STATEMENT_ROUTINE) (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an AML statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS if the statement was completely evaluated.

    STATUS_MORE_PROCESSING_REQUIRED if additional AML code needs to be executed
    so that all arguments to the statement can be evaluated.

    Other error codes on failure.

--*/

//
// -------------------------------------------------------------------- Globals
//

//
// Define an array that creates ACPI statements based on the first opcode byte.
//

extern PAML_CREATE_NEXT_STATEMENT_ROUTINE AcpiCreateStatement[256];

//
// Store an array of function pointers that evaluate ACPI AML statements.
//

extern PAML_EVALUATE_STATEMENT_ROUTINE AcpiEvaluateStatement[AmlStatementCount];

//
// -------------------------------------------------------- Function Prototypes
//

KSTATUS
AcpipCreateAcquireStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Acquire (mutex) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateAliasStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for opcode 6, an alias statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes if the namespace strings were invalid.

--*/

KSTATUS
AcpipCreateAddStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for an Add statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes on failure.

--*/

KSTATUS
AcpipCreateAndStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for opcode 6, an alias statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes on failure.

--*/

KSTATUS
AcpipCreateArgumentStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for opcodes 0x68 - 0x6E, ArgX statements.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateBankFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a BankField (in an Operation Region) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateBreakStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Break statement (like a break inside
    of a while loop, not break like stop).

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateBreakPointStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a breakpoint statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateBufferStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a buffer declaration statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateConcatenateResourceTemplatesStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Concatenate Resource Templates" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateConcatenateStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a concatenation statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateConditionalReferenceOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Conditional Reference Of" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateContinueStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a while loop Continue statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateCopyObjectStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Copy Object" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateCreateBitFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a CreateBitField statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateCreateByteFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a CreateByteField statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateCreateDoubleWordFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a CreateDWordField statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateCreateFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a CreateField (of a buffer) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateCreateQuadWordFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a CreateQWordField statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateCreateWordFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a CreateWordField statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateDataStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for ByteData, WordData, DWordData,
    QWordData, and StringData.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateDataTableRegionStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Data Table Region statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateDebugStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Debug object statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateDecrementStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Decrement object statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateDereferenceOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Dereference Of" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateDeviceStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Device statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateDivideStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Divide statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateElseStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Else statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateEventStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Event statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateFatalStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Fatal statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Field (in an Operation Region) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateFindSetLeftBitStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Find Set Left Bit" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateFindSetRightBitStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Find Set Right Bit" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateFromBcdStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Find BCD" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateIfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an If statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateIncrementStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Increment object statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateIndexFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a IndexField (in an Operation Region) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateIndexStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Index statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateInvalidOpcodeStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine is a placeholder function executed when an invalid opcode of
    AML code is parsed.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_INVALID_OPCODE always.

--*/

KSTATUS
AcpipCreateLoadStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Load (definition block) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLoadTableStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a LoadTable statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLocalStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for opcodes 0x60 - 0x67, LocalX statements.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLogicalAndStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Logical And statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLogicalEqualStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Logical Equal statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLogicalGreaterStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Logical Greater statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLogicalLessStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Logical Less statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLogicalNotStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Logical Not statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateLogicalOrStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Logical Or statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateMatchStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Match statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateMethodStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Method statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateMidStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Mid statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateModStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for an Mod statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes on failure.

--*/

KSTATUS
AcpipCreateMultiplyStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Multiply statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateMutexStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Mutex (create) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateNameStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Name statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes on failure.

--*/

KSTATUS
AcpipCreateNameStringStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a NameString statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes on failure.

--*/

KSTATUS
AcpipCreateNandStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Nand statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateNoOpStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a No-Op statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateNorStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Nor statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateNotifyStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Notify statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateNotStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a bitwise Not statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateObjectTypeStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Object Type statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateOrStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for an Or statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateOnesStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Ones statement, which is a constant of all Fs.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateOneStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for opcode 1, a constant 1.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateOperationRegionStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Operation Region statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreatePackageStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Package statement (basically an array of objects).

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreatePowerResourceStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Power Resource declaration statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateProcessorStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Processor declaration statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateReferenceOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "Reference Of" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateReleaseStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Release (mutex) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateResetStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Reset (event) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateReturnStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Return statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateRevisionStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Revision statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateScopeStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Scope statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateShiftLeftStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Shift Left statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateShiftRightStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Shift Right statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateSignalStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Signal (event) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateSizeOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "SizeOf" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS on success.

    Other error codes on failure.

--*/

KSTATUS
AcpipCreateSleepStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Sleep statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateStallStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Stall statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateStoreStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Store statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateSubtractStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Subtract statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateThermalZoneStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Thermal Zone statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateTimerStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for a Timer statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateToBcdStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "To BCD" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateToBufferStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "To Buffer" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateToDecimalStringStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "To Decimal String" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateToHexStringStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "To Hex String" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateToIntegerStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "To Integer" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateToStringStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a "To String" statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateUnloadStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Unload (definition block) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateVariablePackageStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a Variable package statement, whose size is determined
    by a TermArg rather than a constant.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateWaitStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates an Wait (for Event) statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateWhileStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a While statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    Status code.

--*/

KSTATUS
AcpipCreateXorStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for an Exclusive Or statement.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipCreateZeroStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT NextStatement
    );

/*++

Routine Description:

    This routine creates a statement for opcode 0, a constant 0.

Arguments:

    Context - Supplies a pointer to an initialized AML execution context. The
        next statement will be created based on the current execution offset.
        The current offset of the context will be incremented beyond the portion
        of this statement that was successfully parsed.

    NextStatement - Supplies a pointer where the next statement will be
        returned. The caller is responsible for freeing this memory.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateAcquireStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Acquire (mutex) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateAliasStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates the alias statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateArgumentStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates the ArgX opcodes.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateBankFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a BankField (in an Operation Region) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateBreakPointStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates the BreakPoint statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateBufferStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a buffer declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateConcatenateResourceTemplatesStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a "Concatenate Resource Templates" statement, which
    concatenates two buffers that are resources templates. It automatically
    strips the end tags off the two, adds it to the concatenation, and calcuates
    the checksum.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateConcatenateStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a concatenate statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateConditionalReferenceOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an "Reference Of" statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateCopyObjectStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a "Copy Object" statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateCreateBufferFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a CreateField (from a buffer) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateCreateFixedBufferFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a CreateBitField, CreateByteField, CreateWordField,
    CreateDWordField, or CreateQWordField statement, which creates a Buffer
    Field object pointing at a buffer.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateDataStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates constant data coming from ByteData, WordData,
    DWordData, QWordData, and StringData.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateDelayStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates both the Sleep and Stall statements.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateDebugStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Debug statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateDereferenceOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a "Dereference Of" statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateDeviceStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Device declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateDivideStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a divide statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateElseStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Else statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateEventStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Event (creation) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateExecutingMethodStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Executing Method statement. This does not
    translate to a real ACPI opcode, but is a dummy object placed on the
    currently-executing statement stack so that return statements know how
    far to pop back up.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateFatalStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a fatal execution statement. This will stop the
    operating system.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Field (in an Operation Region) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateFindSetBitStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a find set left bit or find set right bit statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateIfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an If statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateIncrementOrDecrementStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Increment or Decrement statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateIndexFieldStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an IndexField (in an Operation Region) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateIndexStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Index statement, which creates a reference to the
    nth object in a buffer, string, or package.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateIntegerArithmeticStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates simple arithmetic operations that take two operands
    and a target.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateIntegerStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates statements that take no arguments and generate an
    integer output. This includes the constant statements Zero, One, and Ones,
    as well as the AML Revision and Timer statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS almost always.

    STATUS_INVALID_PARAMETER if this routine was called for the wrong statement
        type (an internal error for sure).

    STATUS_UNSUCCESSFUL if a namespace object could not be created.

--*/

KSTATUS
AcpipEvaluateLoadStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Load statement, which adds the contents of a
    memory op-region as an SSDT to the namespace.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateLocalStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates the LocalX opcodes.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateLogicalExpressionStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates logical binary operators (Logical and, equal,
    greater, less, and or).

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateLogicalNotStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates logical NOT operator.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateMatchStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Match statement, which iterates over a package
    doing some simple comparisons.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateMethodStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Method declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateMidStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a mid statement, which splits a string up.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateMutexStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Mutex (creation) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateNameStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Name statement, which creates a new named object
    in the namespace given an existing one.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateNameStringStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a NameString statement, which evaluates to an
    object that is expected to exist in the namespace.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateNoOpStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a No-Op statement, which is really quite easy since
    it doesn't do anything.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    STATUS_SUCCESS always.

--*/

KSTATUS
AcpipEvaluateNotifyStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Notify (the operating system) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateNotStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates bitwise NOT operator.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateObjectTypeStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Object Type statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateOperationRegionStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Operation Region statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluatePackageStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Package or Variable Package statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluatePowerResourceStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Power Resource declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateProcessorStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Power Resource declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateReferenceOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an "Reference Of" statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateReturnStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Return statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateScopeStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Device declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateSizeOfStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a "Size Of" statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateStoreStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Store statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateSyncObjectStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Release (mutex), Reset (event), or Signal (event)
    statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateThermalZoneStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a Thermal Zone declaration statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateToFormatStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates the "To" something and "From" something statements,
    including ToBCD, ToBuffer, ToDecimalString, ToHexString, ToInteger,
    ToString, ToUUID, Unicode, and FromBcd.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateUnloadStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Unload statement, which unloads a previously
    loaded definition block.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateWaitStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates an Wait (for Event) statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateWhileModifierStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates one of the statements that modifies a While loop,
    a Break or Continue.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

KSTATUS
AcpipEvaluateWhileStatement (
    PAML_EXECUTION_CONTEXT Context,
    PAML_STATEMENT Statement
    );

/*++

Routine Description:

    This routine evaluates a While statement.

Arguments:

    Context - Supplies a pointer to the current AML execution context.

    Statement - Supplies a pointer to the statement to evaluate.

Return Value:

    Status code.

--*/

//
// Helper functions.
//

PACPI_OBJECT
AcpipConvertObjectType (
    PAML_EXECUTION_CONTEXT Context,
    PACPI_OBJECT Object,
    ACPI_OBJECT_TYPE NewType
    );

/*++

Routine Description:

    This routine performs a conversion between supported ACPI object types.

Arguments:

    Context - Supplies a pointer to the current execution context.

    Object - Supplies a pointer to the object to convert.

    NewType - Supplies the type to convert the given object to.

Return Value:

    Returns a pointer to a new object (unlinked to the namespace) of the
    requested type. The caller is responsible for this memory once its returned.

    NULL on failure.

--*/

PACPI_OBJECT
AcpipParseNameString (
    PAML_EXECUTION_CONTEXT Context
    );

/*++

Routine Description:

    This routine parses a namespace string from the AML stream.

Arguments:

    Context - Supplies a pointer to the AML execution context. The name string
        will be evaluated from the current offset.

Return Value:

    Returns a pointer to a string object (unconnected to any namespace) on
    success.

    NULL on failure. The AML stream current offset will be unchanged on failure.

--*/

KSTATUS
AcpipParseFieldList (
    PAML_EXECUTION_CONTEXT Context,
    AML_STATEMENT_TYPE Type,
    PACPI_OBJECT OperationRegion,
    PACPI_OBJECT BankRegister,
    PACPI_OBJECT BankValue,
    PACPI_OBJECT IndexRegister,
    PACPI_OBJECT DataRegister,
    ULONG EndOffset,
    UCHAR InitialAccessFlags
    );

/*++

Routine Description:

    This routine parses a field list, used in Operation Region field list
    declarations.

Arguments:

    Context - Supplies a pointer to the AML execution context.

    Type - Supplies the type of field to create. Valid values are
        AmlStatementField, AmlStatementBankField, and AmlStatementIndexField.

    OperationRegion - Supplies a pointer to the operation region these fields
        belong to. NULL is only valid if the execution context is not
        executing statements.

    BankRegister - Supplies an optional pointer to the bank register to write
        to before accessing these fields. It is expected that the Bank registers
        will be non-null or the Index/Data registers, but not both.

    BankValue - Supplies a pointer to the value to write to the bank register.
        If the bank register is not supplied, this parameter is ignored. If the
        bank register is supplied, this parameter is required.

    IndexRegister - Supplies an optional pointer to the index register to write
        to before accessing the corresponding data register. It is expected
        that the Index/Data registers are non-null or the Bank registers, but
        not both.

    DataRegister - Supplies a pointer to the data register to use in
        Index/Data mode. If the Index register is not supplied, this parameter
            is ignored. If the index register is supplied, this parameter is
            required.

    EndOffset - Supplies the ending offset (exclusive) of the field list in the
        AML code stream.

    InitialAccessFlags - Supplies the initial attributes of the field
        (until the first AccessAs modifier is parsed).

Return Value:

    Status code.

--*/

ULONGLONG
AcpipParsePackageLength (
    PAML_EXECUTION_CONTEXT Context
    );

/*++

Routine Description:

    This routine parses a package length from the AML stream.

Arguments:

    Context - Supplies a pointer to the AML execution context. The name string
        will be evaluated from the current offset.

Return Value:

    Returns the size of the package that follows.

    0 on failure.

--*/

