From 1044f1f65b7df2aae979e397904c4985eeb99ba2 Mon Sep 17 00:00:00 2001 From: Bob Moore Date: Sat, 27 Sep 2008 11:08:41 +0800 Subject: ACPICA: Cleanup for internal Reference Object Fix some sloppiness in the Reference object. No longer use AML opcodes to differentiate the types, introduce new reference Class. Cleanup the debug output code. Signed-off-by: Bob Moore Signed-off-by: Lin Ming Signed-off-by: Len Brown --- drivers/acpi/dispatcher/dswexec.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers/acpi/dispatcher/dswexec.c') diff --git a/drivers/acpi/dispatcher/dswexec.c b/drivers/acpi/dispatcher/dswexec.c index b5072fa9c92..5b2419197b9 100644 --- a/drivers/acpi/dispatcher/dswexec.c +++ b/drivers/acpi/dispatcher/dswexec.c @@ -429,10 +429,10 @@ acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *walk_state) ACPI_TYPE_LOCAL_REFERENCE) && (walk_state->operands[1]->common.type == ACPI_TYPE_LOCAL_REFERENCE) - && (walk_state->operands[0]->reference.opcode == - walk_state->operands[1]->reference.opcode) - && (walk_state->operands[0]->reference.offset == - walk_state->operands[1]->reference.offset)) { + && (walk_state->operands[0]->reference.class == + walk_state->operands[1]->reference.class) + && (walk_state->operands[0]->reference.value == + walk_state->operands[1]->reference.value)) { status = AE_OK; } else { ACPI_EXCEPTION((AE_INFO, status, -- cgit v1.2.2 From b9d1312ad4246e467f333dfe2ac4dc7a79608d59 Mon Sep 17 00:00:00 2001 From: Lin Ming Date: Sat, 27 Sep 2008 12:01:12 +0800 Subject: ACPICA: Fix for implicit return compatibility Predicate can be used for an implicit return value. This change improves the implicit return mechanism to be more compatible with the MS interpreter. http://www.acpica.org/bugzilla/show_bug.cgi?id=349 Below AML code from http://bugzilla.kernel.org/show_bug.cgi?id=10686 Store(0x07D6, OSYS) Method (_CRT, 0, Serialized) { If (LLess (OSYS, 0x07D6)) { If (LEqual (\_SB.TJ85, Zero)) { Return (Add (0x0AAC, Multiply (TPC, 0x0A))) } Else { Return (Add (0x0AAC, Multiply (TP85, 0x0A))) } } } Previously _CRT returns 0x07D6, now it returns 0 (predicate value of LLess) Signed-off-by: Lin Ming Signed-off-by: Bob Moore Signed-off-by: Len Brown --- drivers/acpi/dispatcher/dswexec.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'drivers/acpi/dispatcher/dswexec.c') diff --git a/drivers/acpi/dispatcher/dswexec.c b/drivers/acpi/dispatcher/dswexec.c index 5b2419197b9..396fe12078c 100644 --- a/drivers/acpi/dispatcher/dswexec.c +++ b/drivers/acpi/dispatcher/dswexec.c @@ -166,6 +166,10 @@ acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state, status = AE_CTRL_FALSE; } + /* Predicate can be used for an implicit return value */ + + (void)acpi_ds_do_implicit_return(local_obj_desc, walk_state, TRUE); + cleanup: ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%p\n", -- cgit v1.2.2