summaryrefslogtreecommitdiff
path: root/source/components/executer
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2013-04-19 05:49:53 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2013-04-19 05:49:53 +0000
commita95efc1a1522251892a7baebcb0569741ad7c6ca (patch)
tree123ed5e9ad0bad1d892c0637e33953142b50843f /source/components/executer
parent9b7735bafd2eb5079bc7f216ba350dbf8f268683 (diff)
Notes
Diffstat (limited to 'source/components/executer')
-rw-r--r--source/components/executer/exconfig.c2
-rw-r--r--source/components/executer/exfldio.c13
2 files changed, 13 insertions, 2 deletions
diff --git a/source/components/executer/exconfig.c b/source/components/executer/exconfig.c
index 4f1962b791d8..7d72a5f884aa 100644
--- a/source/components/executer/exconfig.c
+++ b/source/components/executer/exconfig.c
@@ -643,7 +643,7 @@ AcpiExUnloadTable (
(DdbHandle->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) ||
(!(DdbHandle->Common.Flags & AOPOBJ_DATA_VALID)))
{
- return_ACPI_STATUS (AE_BAD_PARAMETER);
+ return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
/* Get the table index from the DdbHandle */
diff --git a/source/components/executer/exfldio.c b/source/components/executer/exfldio.c
index 24636ab3e0fc..85da123903da 100644
--- a/source/components/executer/exfldio.c
+++ b/source/components/executer/exfldio.c
@@ -766,7 +766,18 @@ AcpiExExtractFromField (
if ((ObjDesc->CommonField.StartFieldBitOffset == 0) &&
(ObjDesc->CommonField.BitLength == AccessBitWidth))
{
- Status = AcpiExFieldDatumIo (ObjDesc, 0, Buffer, ACPI_READ);
+ if (BufferLength >= sizeof (UINT64))
+ {
+ Status = AcpiExFieldDatumIo (ObjDesc, 0, Buffer, ACPI_READ);
+ }
+ else
+ {
+ /* Use RawDatum (UINT64) to handle buffers < 64 bits */
+
+ Status = AcpiExFieldDatumIo (ObjDesc, 0, &RawDatum, ACPI_READ);
+ ACPI_MEMCPY (Buffer, &RawDatum, BufferLength);
+ }
+
return_ACPI_STATUS (Status);
}