summaryrefslogtreecommitdiffstats
path: root/namespace/nseval.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2009-12-14 22:07:33 +0000
committerjkim <jkim@FreeBSD.org>2009-12-14 22:07:33 +0000
commit5eb20ec0efedaa5c449001fed0391ff67b8af8bb (patch)
treef44ff7d55387c0db90e95e80289d7ed0525b8dd8 /namespace/nseval.c
parent33700bac1d344f0be40cccaba4df65da92a70fbf (diff)
downloadFreeBSD-src-5eb20ec0efedaa5c449001fed0391ff67b8af8bb.zip
FreeBSD-src-5eb20ec0efedaa5c449001fed0391ff67b8af8bb.tar.gz
Import ACPICA 20091214.
Diffstat (limited to 'namespace/nseval.c')
-rw-r--r--namespace/nseval.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/namespace/nseval.c b/namespace/nseval.c
index e5d4cf3..07af96e 100644
--- a/namespace/nseval.c
+++ b/namespace/nseval.c
@@ -477,6 +477,19 @@ AcpiNsExecModuleCode (
MethodObj->Method.NextObject);
Type = AcpiNsGetType (ParentNode);
+ /*
+ * Get the region handler and save it in the method object. We may need
+ * this if an operation region declaration causes a _REG method to be run.
+ *
+ * We can't do this in AcpiPsLinkModuleCode because
+ * AcpiGbl_RootNode->Object is NULL at PASS1.
+ */
+ if ((Type == ACPI_TYPE_DEVICE) && ParentNode->Object)
+ {
+ MethodObj->Method.Extra.Handler =
+ ParentNode->Object->Device.Handler;
+ }
+
/* Must clear NextObject (AcpiNsAttachObject needs the field) */
MethodObj->Method.NextObject = NULL;
@@ -513,6 +526,13 @@ AcpiNsExecModuleCode (
ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "Executed module-level code at %p\n",
MethodObj->Method.AmlStart));
+ /* Delete a possible implicit return value (in slack mode) */
+
+ if (Info->ReturnObject)
+ {
+ AcpiUtRemoveReference (Info->ReturnObject);
+ }
+
/* Detach the temporary method object */
AcpiNsDetachObject (ParentNode);
OpenPOWER on IntegriCloud