aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2016-05-27 21:40:35 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2016-05-27 21:40:35 +0000
commit4d46bb7749ef0cf25eb2b25f2d7324023cb754b4 (patch)
treef7064866b29ad07c184316d5bbb13a4cb187326b
parent2331c681155dd7b2f78bd28ca0c183e2f98ff44f (diff)
downloadsrc-4d46bb7749ef0cf25eb2b25f2d7324023cb754b4.tar.gz
src-4d46bb7749ef0cf25eb2b25f2d7324023cb754b4.zip
Import ACPICA 20160527.vendor/acpica/20160527
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=300876 svn path=/vendor-sys/acpica/20160527/; revision=300877; tag=vendor/acpica/20160527
-rw-r--r--changes.txt33
-rw-r--r--source/compiler/asloptions.c6
-rw-r--r--source/components/debugger/dbobject.c4
-rw-r--r--source/components/disassembler/dmopcode.c11
-rw-r--r--source/components/disassembler/dmwalk.c29
-rw-r--r--source/components/dispatcher/dsutils.c14
-rw-r--r--source/components/executer/exfldio.c15
-rw-r--r--source/components/hardware/hwregs.c239
-rw-r--r--source/components/namespace/nsaccess.c4
-rw-r--r--source/components/namespace/nsdump.c2
-rw-r--r--source/components/utilities/utdebug.c42
-rw-r--r--source/components/utilities/utdecode.c2
-rw-r--r--source/include/acglobal.h1
-rw-r--r--source/include/acmacros.h16
-rw-r--r--source/include/acoutput.h6
-rw-r--r--source/include/acpixf.h2
-rw-r--r--source/include/acutils.h20
-rw-r--r--source/include/platform/aclinux.h8
-rw-r--r--source/os_specific/service_layers/osbsdtbl.c6
-rw-r--r--source/tools/acpisrc/asfile.c21
-rw-r--r--source/tools/acpisrc/asremove.c1
21 files changed, 217 insertions, 265 deletions
diff --git a/changes.txt b/changes.txt
index 19f5c0d621b3..ff863a7c3cb1 100644
--- a/changes.txt
+++ b/changes.txt
@@ -1,4 +1,37 @@
----------------------------------------
+27 May 2016. Summary of changes for version 20160527:
+
+This release is available at https://acpica.org/downloads
+
+
+1) ACPICA kernel-resident subsystem:
+
+Temporarily reverted the new arbitrary bit length/alignment support in
+AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
+a number of regressions with the new code that need to be fully resolved
+and tested before this support can be finally integrated into ACPICA.
+Apologies for any inconveniences these issues may have caused.
+
+The ACPI message macros are not configurable (ACPI_MSG_ERROR,
+ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
+and ACPI_MSG_BIOS_WARNING). Lv Zheng.
+
+Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
+option. Adds a new return macro, return_STR. Junk-uk Kim.
+
+Example Code and Data Size: These are the sizes for the OS-independent
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
+debug version of the code includes the debug output trace mechanism and
+has a much larger code and data size.
+
+ Current Release:
+ Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
+ Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
+ Previous Release:
+ Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
+ Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
+
+----------------------------------------
22 April 2016. Summary of changes for version 20160422:
1) ACPICA kernel-resident subsystem:
diff --git a/source/compiler/asloptions.c b/source/compiler/asloptions.c
index 792e0db615ca..d19c3f3f64bd 100644
--- a/source/compiler/asloptions.c
+++ b/source/compiler/asloptions.c
@@ -541,9 +541,13 @@ AslDoOptions (
case 'e':
- /* Disable External opcode generation */
+ /* iASL: Disable External opcode generation */
Gbl_DoExternals = FALSE;
+
+ /* Disassembler: Emit embedded external operators */
+
+ AcpiGbl_DmEmitExternalOpcodes = TRUE;
break;
case 'f':
diff --git a/source/components/debugger/dbobject.c b/source/components/debugger/dbobject.c
index 58022b8fd53f..b424882f625b 100644
--- a/source/components/debugger/dbobject.c
+++ b/source/components/debugger/dbobject.c
@@ -161,10 +161,10 @@ AcpiDbDecodeInternalObject (
case ACPI_TYPE_STRING:
- AcpiOsPrintf ("(%u) \"%.24s",
+ AcpiOsPrintf ("(%u) \"%.60s",
ObjDesc->String.Length, ObjDesc->String.Pointer);
- if (ObjDesc->String.Length > 24)
+ if (ObjDesc->String.Length > 60)
{
AcpiOsPrintf ("...");
}
diff --git a/source/components/disassembler/dmopcode.c b/source/components/disassembler/dmopcode.c
index f4d13191c2f8..7ca171cbbbeb 100644
--- a/source/components/disassembler/dmopcode.c
+++ b/source/components/disassembler/dmopcode.c
@@ -971,7 +971,16 @@ AcpiDmDisassembleOneOp (
case AML_EXTERNAL_OP:
- break;
+ if (AcpiGbl_DmEmitExternalOpcodes)
+ {
+ AcpiOsPrintf ("/* Opcode 0x15 */ ");
+
+ /* Fallthrough */
+ }
+ else
+ {
+ break;
+ }
default:
diff --git a/source/components/disassembler/dmwalk.c b/source/components/disassembler/dmwalk.c
index 7465e75d3804..3c953f5465e1 100644
--- a/source/components/disassembler/dmwalk.c
+++ b/source/components/disassembler/dmwalk.c
@@ -462,21 +462,26 @@ AcpiDmDescendingOp (
{
NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMETER_LIST;
- /*
- * A Zero predicate indicates the possibility of one or more
- * External() opcodes within the If() block.
- */
- if (NextOp->Common.AmlOpcode == AML_ZERO_OP)
- {
- NextOp2 = NextOp->Common.Next;
+ /* Don't emit the actual embedded externals unless asked */
- if (NextOp2 &&
- (NextOp2->Common.AmlOpcode == AML_EXTERNAL_OP))
+ if (!AcpiGbl_DmEmitExternalOpcodes)
+ {
+ /*
+ * A Zero predicate indicates the possibility of one or more
+ * External() opcodes within the If() block.
+ */
+ if (NextOp->Common.AmlOpcode == AML_ZERO_OP)
{
- /* Ignore the If 0 block and all children */
+ NextOp2 = NextOp->Common.Next;
+
+ if (NextOp2 &&
+ (NextOp2->Common.AmlOpcode == AML_EXTERNAL_OP))
+ {
+ /* Ignore the If 0 block and all children */
- Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
- return (AE_CTRL_DEPTH);
+ Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
+ return (AE_CTRL_DEPTH);
+ }
}
}
}
diff --git a/source/components/dispatcher/dsutils.c b/source/components/dispatcher/dsutils.c
index f41f6b2b2165..66eac34f1cc4 100644
--- a/source/components/dispatcher/dsutils.c
+++ b/source/components/dispatcher/dsutils.c
@@ -603,12 +603,14 @@ AcpiDsCreateOperand (
}
else if (ParentOp->Common.AmlOpcode == AML_EXTERNAL_OP)
{
- /* TBD: May only be temporary */
-
- ObjDesc = AcpiUtCreateStringObject ((ACPI_SIZE) NameLength);
-
- strncpy (ObjDesc->String.Pointer, NameString, NameLength);
- Status = AE_OK;
+ /*
+ * This opcode should never appear here. It is used only
+ * by AML disassemblers and is surrounded by an If(0)
+ * by the ASL compiler.
+ *
+ * Therefore, if we see it here, it is a serious error.
+ */
+ Status = AE_AML_BAD_OPCODE;
}
else
{
diff --git a/source/components/executer/exfldio.c b/source/components/executer/exfldio.c
index a865a86ae1f3..fd46a0c02367 100644
--- a/source/components/executer/exfldio.c
+++ b/source/components/executer/exfldio.c
@@ -946,9 +946,20 @@ AcpiExInsertIntoField (
AccessBitWidth = ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth);
- /* Create the bitmasks used for bit insertion */
+ /*
+ * Create the bitmasks used for bit insertion.
+ * Note: This if/else is used to bypass compiler differences with the
+ * shift operator
+ */
+ if (AccessBitWidth == ACPI_INTEGER_BIT_SIZE)
+ {
+ WidthMask = ACPI_UINT64_MAX;
+ }
+ else
+ {
+ WidthMask = ACPI_MASK_BITS_ABOVE (AccessBitWidth);
+ }
- WidthMask = ACPI_MASK_BITS_ABOVE_64 (AccessBitWidth);
Mask = WidthMask &
ACPI_MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset);
diff --git a/source/components/hardware/hwregs.c b/source/components/hardware/hwregs.c
index 87c18d1b4c64..bc85c96b553f 100644
--- a/source/components/hardware/hwregs.c
+++ b/source/components/hardware/hwregs.c
@@ -54,11 +54,6 @@
/* Local Prototypes */
-static UINT8
-AcpiHwGetAccessBitWidth (
- ACPI_GENERIC_ADDRESS *Reg,
- UINT8 MaxBitWidth);
-
static ACPI_STATUS
AcpiHwReadMultiple (
UINT32 *Value,
@@ -76,43 +71,6 @@ AcpiHwWriteMultiple (
/******************************************************************************
*
- * FUNCTION: AcpiHwGetAccessBitWidth
- *
- * PARAMETERS: Reg - GAS register structure
- * MaxBitWidth - Max BitWidth supported (32 or 64)
- *
- * RETURN: Status
- *
- * DESCRIPTION: Obtain optimal access bit width
- *
- ******************************************************************************/
-
-static UINT8
-AcpiHwGetAccessBitWidth (
- ACPI_GENERIC_ADDRESS *Reg,
- UINT8 MaxBitWidth)
-{
-
- if (!Reg->AccessWidth)
- {
- if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_IO)
- {
- return (32);
- }
- else
- {
- return (MaxBitWidth);
- }
- }
- else
- {
- return (1 << (Reg->AccessWidth + 2));
- }
-}
-
-
-/******************************************************************************
- *
* FUNCTION: AcpiHwValidateRegister
*
* PARAMETERS: Reg - GAS register structure
@@ -133,9 +91,6 @@ AcpiHwValidateRegister (
UINT8 MaxBitWidth,
UINT64 *Address)
{
- UINT8 BitWidth;
- UINT8 AccessWidth;
-
/* Must have a valid pointer to a GAS structure */
@@ -165,25 +120,24 @@ AcpiHwValidateRegister (
return (AE_SUPPORT);
}
- /* Validate the AccessWidth */
+ /* Validate the BitWidth */
- if (Reg->AccessWidth > 4)
+ if ((Reg->BitWidth != 8) &&
+ (Reg->BitWidth != 16) &&
+ (Reg->BitWidth != 32) &&
+ (Reg->BitWidth != MaxBitWidth))
{
ACPI_ERROR ((AE_INFO,
- "Unsupported register access width: 0x%X", Reg->AccessWidth));
+ "Unsupported register bit width: 0x%X", Reg->BitWidth));
return (AE_SUPPORT);
}
- /* Validate the BitWidth, convert AccessWidth into number of bits */
+ /* Validate the BitOffset. Just a warning for now. */
- AccessWidth = AcpiHwGetAccessBitWidth (Reg, MaxBitWidth);
- BitWidth = ACPI_ROUND_UP (Reg->BitOffset + Reg->BitWidth, AccessWidth);
- if (MaxBitWidth < BitWidth)
+ if (Reg->BitOffset != 0)
{
ACPI_WARNING ((AE_INFO,
- "Requested bit width 0x%X is smaller than register bit width 0x%X",
- MaxBitWidth, BitWidth));
- return (AE_SUPPORT);
+ "Unsupported register bit offset: 0x%X", Reg->BitOffset));
}
return (AE_OK);
@@ -204,7 +158,10 @@ AcpiHwValidateRegister (
* 64-bit values is not needed.
*
* LIMITATIONS: <These limitations also apply to AcpiHwWrite>
+ * BitWidth must be exactly 8, 16, or 32.
* SpaceID must be SystemMemory or SystemIO.
+ * BitOffset and AccessWidth are currently ignored, as there has
+ * not been a need to implement these.
*
******************************************************************************/
@@ -214,12 +171,7 @@ AcpiHwRead (
ACPI_GENERIC_ADDRESS *Reg)
{
UINT64 Address;
- UINT8 AccessWidth;
- UINT32 BitWidth;
- UINT8 BitOffset;
UINT64 Value64;
- UINT32 Value32;
- UINT8 Index;
ACPI_STATUS Status;
@@ -234,64 +186,30 @@ AcpiHwRead (
return (Status);
}
- /*
- * Initialize entire 32-bit return value to zero, convert AccessWidth
- * into number of bits based
- */
+ /* Initialize entire 32-bit return value to zero */
+
*Value = 0;
- AccessWidth = AcpiHwGetAccessBitWidth (Reg, 32);
- BitWidth = Reg->BitOffset + Reg->BitWidth;
- BitOffset = Reg->BitOffset;
/*
* Two address spaces supported: Memory or IO. PCI_Config is
* not supported here because the GAS structure is insufficient
*/
- Index = 0;
- while (BitWidth)
+ if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
{
- if (BitOffset > AccessWidth)
- {
- Value32 = 0;
- BitOffset -= AccessWidth;
- }
- else
- {
- if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
- {
- Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
- Address + Index * ACPI_DIV_8 (AccessWidth),
- &Value64, AccessWidth);
- Value32 = (UINT32) Value64;
- }
- else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
- {
- Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
- Address + Index * ACPI_DIV_8 (AccessWidth),
- &Value32, AccessWidth);
- }
-
- if (BitOffset)
- {
- Value32 &= ACPI_MASK_BITS_BELOW (BitOffset);
- BitOffset = 0;
- }
- if (BitWidth < AccessWidth)
- {
- Value32 &= ACPI_MASK_BITS_ABOVE (BitWidth);
- }
- }
-
- ACPI_SET_BITS (Value, Index * AccessWidth,
- ACPI_MASK_BITS_ABOVE_32 (AccessWidth), Value32);
+ Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
+ Address, &Value64, Reg->BitWidth);
- BitWidth -= BitWidth > AccessWidth ? AccessWidth : BitWidth;
- Index++;
+ *Value = (UINT32) Value64;
+ }
+ else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
+ {
+ Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
+ Address, Value, Reg->BitWidth);
}
ACPI_DEBUG_PRINT ((ACPI_DB_IO,
"Read: %8.8X width %2d from %8.8X%8.8X (%s)\n",
- *Value, AccessWidth, ACPI_FORMAT_UINT64 (Address),
+ *Value, Reg->BitWidth, ACPI_FORMAT_UINT64 (Address),
AcpiUtGetRegionName (Reg->SpaceId)));
return (Status);
@@ -319,12 +237,6 @@ AcpiHwWrite (
ACPI_GENERIC_ADDRESS *Reg)
{
UINT64 Address;
- UINT8 AccessWidth;
- UINT32 BitWidth;
- UINT8 BitOffset;
- UINT64 Value64;
- UINT32 NewValue32, OldValue32;
- UINT8 Index;
ACPI_STATUS Status;
@@ -339,109 +251,24 @@ AcpiHwWrite (
return (Status);
}
- /* Convert AccessWidth into number of bits based */
-
- AccessWidth = AcpiHwGetAccessBitWidth (Reg, 32);
- BitWidth = Reg->BitOffset + Reg->BitWidth;
- BitOffset = Reg->BitOffset;
-
/*
* Two address spaces supported: Memory or IO. PCI_Config is
* not supported here because the GAS structure is insufficient
*/
- Index = 0;
- while (BitWidth)
+ if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
{
- NewValue32 = ACPI_GET_BITS (&Value, Index * AccessWidth,
- ACPI_MASK_BITS_ABOVE_32 (AccessWidth));
-
- if (BitOffset > AccessWidth)
- {
- BitOffset -= AccessWidth;
- }
- else
- {
- if (BitOffset)
- {
- NewValue32 &= ACPI_MASK_BITS_BELOW (BitOffset);
- }
-
- if (BitWidth < AccessWidth)
- {
- NewValue32 &= ACPI_MASK_BITS_ABOVE (BitWidth);
- }
-
- if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)
- {
- if (BitOffset || BitWidth < AccessWidth)
- {
- /*
- * Read old values in order not to modify the bits that
- * are beyond the register BitWidth/BitOffset setting.
- */
- Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)
- Address + Index * ACPI_DIV_8 (AccessWidth),
- &Value64, AccessWidth);
- OldValue32 = (UINT32) Value64;
-
- if (BitOffset)
- {
- OldValue32 &= ACPI_MASK_BITS_ABOVE (BitOffset + 1);
- BitOffset = 0;
- }
-
- if (BitWidth < AccessWidth)
- {
- OldValue32 &= ACPI_MASK_BITS_BELOW (BitWidth - 1);
- }
-
- NewValue32 |= OldValue32;
- }
-
- Value64 = (UINT64) NewValue32;
- Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
- Address + Index * ACPI_DIV_8 (AccessWidth),
- Value64, AccessWidth);
- }
- else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
- {
- if (BitOffset || BitWidth < AccessWidth)
- {
- /*
- * Read old values in order not to modify the bits that
- * are beyond the register BitWidth/BitOffset setting.
- */
- Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)
- Address + Index * ACPI_DIV_8 (AccessWidth),
- &OldValue32, AccessWidth);
-
- if (BitOffset)
- {
- OldValue32 &= ACPI_MASK_BITS_ABOVE (BitOffset + 1);
- BitOffset = 0;
- }
-
- if (BitWidth < AccessWidth)
- {
- OldValue32 &= ACPI_MASK_BITS_BELOW (BitWidth - 1);
- }
-
- NewValue32 |= OldValue32;
- }
-
- Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)
- Address + Index * ACPI_DIV_8 (AccessWidth),
- NewValue32, AccessWidth);
- }
- }
-
- BitWidth -= BitWidth > AccessWidth ? AccessWidth : BitWidth;
- Index++;
+ Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)
+ Address, (UINT64) Value, Reg->BitWidth);
+ }
+ else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */
+ {
+ Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)
+ Address, Value, Reg->BitWidth);
}
ACPI_DEBUG_PRINT ((ACPI_DB_IO,
"Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n",
- Value, AccessWidth, ACPI_FORMAT_UINT64 (Address),
+ Value, Reg->BitWidth, ACPI_FORMAT_UINT64 (Address),
AcpiUtGetRegionName (Reg->SpaceId)));
return (Status);
diff --git a/source/components/namespace/nsaccess.c b/source/components/namespace/nsaccess.c
index 42a6d807a2c3..eb6fed623011 100644
--- a/source/components/namespace/nsaccess.c
+++ b/source/components/namespace/nsaccess.c
@@ -116,8 +116,8 @@ AcpiNsRootInitialize (
continue;
}
- Status = AcpiNsLookup (NULL, (char *) InitVal->Name, InitVal->Type,
- ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH,
+ Status = AcpiNsLookup (NULL, ACPI_CAST_PTR (char, InitVal->Name),
+ InitVal->Type, ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH,
NULL, &NewNode);
if (ACPI_FAILURE (Status))
{
diff --git a/source/components/namespace/nsdump.c b/source/components/namespace/nsdump.c
index 776653fc43ec..32ada86001b9 100644
--- a/source/components/namespace/nsdump.c
+++ b/source/components/namespace/nsdump.c
@@ -381,7 +381,7 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_STRING:
AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length);
- AcpiUtPrintString (ObjDesc->String.Pointer, 32);
+ AcpiUtPrintString (ObjDesc->String.Pointer, 80);
AcpiOsPrintf ("\n");
break;
diff --git a/source/components/utilities/utdebug.c b/source/components/utilities/utdebug.c
index b6ae2c73356b..6a298d175b34 100644
--- a/source/components/utilities/utdebug.c
+++ b/source/components/utilities/utdebug.c
@@ -632,6 +632,48 @@ AcpiUtPtrExit (
/*******************************************************************************
*
+ * FUNCTION: AcpiUtStrExit
+ *
+ * PARAMETERS: LineNumber - Caller's line number
+ * FunctionName - Caller's procedure name
+ * ModuleName - Caller's module name
+ * ComponentId - Caller's component ID
+ * String - String to display
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is
+ * set in DebugLevel. Prints exit value also.
+ *
+ ******************************************************************************/
+
+void
+AcpiUtStrExit (
+ UINT32 LineNumber,
+ const char *FunctionName,
+ const char *ModuleName,
+ UINT32 ComponentId,
+ const char *String)
+{
+
+ /* Check if enabled up-front for performance */
+
+ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId))
+ {
+ AcpiDebugPrint (ACPI_LV_FUNCTIONS,
+ LineNumber, FunctionName, ModuleName, ComponentId,
+ "%s %s\n", AcpiGbl_FunctionExitPrefix, String);
+ }
+
+ if (AcpiGbl_NestingLevel)
+ {
+ AcpiGbl_NestingLevel--;
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiTracePoint
*
* PARAMETERS: Type - Trace event type
diff --git a/source/components/utilities/utdecode.c b/source/components/utilities/utdecode.c
index 648cc5c5c973..5c8f2cec8055 100644
--- a/source/components/utilities/utdecode.c
+++ b/source/components/utilities/utdecode.c
@@ -284,7 +284,7 @@ AcpiUtGetObjectTypeName (
return_PTR ("Invalid object");
}
- return_PTR (AcpiUtGetTypeName (ObjDesc->Common.Type));
+ return_STR (AcpiUtGetTypeName (ObjDesc->Common.Type));
}
diff --git a/source/include/acglobal.h b/source/include/acglobal.h
index 1918e0c31f20..a883ac492116 100644
--- a/source/include/acglobal.h
+++ b/source/include/acglobal.h
@@ -321,6 +321,7 @@ ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_IgnoreNoopOperator, FALSE);
ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_CstyleDisassembly, TRUE);
ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ForceAmlDisassembly, FALSE);
ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DmOpt_Verbose, TRUE);
+ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DmEmitExternalOpcodes, FALSE);
ACPI_GLOBAL (BOOLEAN, AcpiGbl_DmOpt_Disasm);
ACPI_GLOBAL (BOOLEAN, AcpiGbl_DmOpt_Listing);
diff --git a/source/include/acmacros.h b/source/include/acmacros.h
index d2f44a34ecb6..21256cbba7b0 100644
--- a/source/include/acmacros.h
+++ b/source/include/acmacros.h
@@ -264,30 +264,14 @@
#define ACPI_IS_MISALIGNED(value) (((ACPI_SIZE) value) & (sizeof(ACPI_SIZE)-1))
-/* Generic (power-of-two) rounding */
-
-#define ACPI_IS_POWER_OF_TWO(a) (((a) & ((a) - 1)) == 0)
-
/*
* Bitmask creation
* Bit positions start at zero.
* MASK_BITS_ABOVE creates a mask starting AT the position and above
* MASK_BITS_BELOW creates a mask starting one bit BELOW the position
- * MASK_BITS_ABOVE/BELOW accpets a bit offset to create a mask
- * MASK_BITS_ABOVE/BELOW_32/64 accpets a bit width to create a mask
- * Note: The ACPI_INTEGER_BIT_SIZE check is used to bypass compiler
- * differences with the shift operator
*/
#define ACPI_MASK_BITS_ABOVE(position) (~((ACPI_UINT64_MAX) << ((UINT32) (position))))
#define ACPI_MASK_BITS_BELOW(position) ((ACPI_UINT64_MAX) << ((UINT32) (position)))
-#define ACPI_MASK_BITS_ABOVE_32(width) ((UINT32) ACPI_MASK_BITS_ABOVE(width))
-#define ACPI_MASK_BITS_BELOW_32(width) ((UINT32) ACPI_MASK_BITS_BELOW(width))
-#define ACPI_MASK_BITS_ABOVE_64(width) ((width) == ACPI_INTEGER_BIT_SIZE ? \
- ACPI_UINT64_MAX : \
- ACPI_MASK_BITS_ABOVE(width))
-#define ACPI_MASK_BITS_BELOW_64(width) ((width) == ACPI_INTEGER_BIT_SIZE ? \
- (UINT64) 0 : \
- ACPI_MASK_BITS_BELOW(width))
/* Bitfields within ACPI registers */
diff --git a/source/include/acoutput.h b/source/include/acoutput.h
index 9c7e9543dc1b..4fb718208c6e 100644
--- a/source/include/acoutput.h
+++ b/source/include/acoutput.h
@@ -372,7 +372,7 @@
ACPI_TRACE_ENTRY (Name, AcpiUtTraceU32, UINT32, Value)
#define ACPI_FUNCTION_TRACE_STR(Name, String) \
- ACPI_TRACE_ENTRY (Name, AcpiUtTraceStr, char *, String)
+ ACPI_TRACE_ENTRY (Name, AcpiUtTraceStr, const char *, String)
#define ACPI_FUNCTION_ENTRY() \
AcpiUtTrackStackPtr()
@@ -432,6 +432,9 @@
#define return_PTR(Pointer) \
ACPI_TRACE_EXIT (AcpiUtPtrExit, void *, Pointer)
+#define return_STR(String) \
+ ACPI_TRACE_EXIT (AcpiUtStrExit, const char *, String)
+
#define return_VALUE(Value) \
ACPI_TRACE_EXIT (AcpiUtValueExit, UINT64, Value)
@@ -486,6 +489,7 @@
#define return_VOID return
#define return_ACPI_STATUS(s) return(s)
#define return_PTR(s) return(s)
+#define return_STR(s) return(s)
#define return_VALUE(s) return(s)
#define return_UINT8(s) return(s)
#define return_UINT32(s) return(s)
diff --git a/source/include/acpixf.h b/source/include/acpixf.h
index feafc3472da1..10eeb1104143 100644
--- a/source/include/acpixf.h
+++ b/source/include/acpixf.h
@@ -46,7 +46,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20160422
+#define ACPI_CA_VERSION 0x20160527
#include "acconfig.h"
#include "actypes.h"
diff --git a/source/include/acutils.h b/source/include/acutils.h
index d63f786e7413..7e53961e5b55 100644
--- a/source/include/acutils.h
+++ b/source/include/acutils.h
@@ -115,13 +115,25 @@ extern const char *AcpiGbl_PtDecode[];
/*
* Common error message prefixes
*/
+#ifndef ACPI_MSG_ERROR
#define ACPI_MSG_ERROR "ACPI Error: "
+#endif
+#ifndef ACPI_MSG_EXCEPTION
#define ACPI_MSG_EXCEPTION "ACPI Exception: "
+#endif
+#ifndef ACPI_MSG_WARNING
#define ACPI_MSG_WARNING "ACPI Warning: "
+#endif
+#ifndef ACPI_MSG_INFO
#define ACPI_MSG_INFO "ACPI: "
+#endif
+#ifndef ACPI_MSG_BIOS_ERROR
#define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): "
+#endif
+#ifndef ACPI_MSG_BIOS_WARNING
#define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): "
+#endif
/*
* Common message suffix
@@ -416,6 +428,14 @@ AcpiUtPtrExit (
UINT8 *Ptr);
void
+AcpiUtStrExit (
+ UINT32 LineNumber,
+ const char *FunctionName,
+ const char *ModuleName,
+ UINT32 ComponentId,
+ const char *String);
+
+void
AcpiUtDebugDumpBuffer (
UINT8 *Buffer,
UINT32 Count,
diff --git a/source/include/platform/aclinux.h b/source/include/platform/aclinux.h
index a70b4e68e172..bd45cdb14e37 100644
--- a/source/include/platform/aclinux.h
+++ b/source/include/platform/aclinux.h
@@ -163,6 +163,14 @@
#define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetNextFilename
#define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseDirectory
+#define ACPI_MSG_ERROR KERN_ERR "ACPI Error: "
+#define ACPI_MSG_EXCEPTION KERN_ERR "ACPI Exception: "
+#define ACPI_MSG_WARNING KERN_WARNING "ACPI Warning: "
+#define ACPI_MSG_INFO KERN_INFO "ACPI: "
+
+#define ACPI_MSG_BIOS_ERROR KERN_ERR "ACPI BIOS Error (bug): "
+#define ACPI_MSG_BIOS_WARNING KERN_WARNING "ACPI BIOS Warning (bug): "
+
#else /* !__KERNEL__ */
#include <stdarg.h>
diff --git a/source/os_specific/service_layers/osbsdtbl.c b/source/os_specific/service_layers/osbsdtbl.c
index 695f3a70eac7..b2de750b0f27 100644
--- a/source/os_specific/service_layers/osbsdtbl.c
+++ b/source/os_specific/service_layers/osbsdtbl.c
@@ -43,7 +43,7 @@
#include "acpidump.h"
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined (__DragonFly__)
#include <kenv.h>
#endif
#include <unistd.h>
@@ -376,7 +376,7 @@ static ACPI_STATUS
OslTableInitialize (
void)
{
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
char Buffer[32];
#endif
ACPI_TABLE_HEADER *MappedTable;
@@ -404,7 +404,7 @@ OslTableInitialize (
{
Address = Gbl_RsdpBase;
}
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined (__DragonFly__)
else if (kenv (KENV_GET, SYSTEM_KENV, Buffer, sizeof (Buffer)) > 0)
{
Address = strtoul (Buffer, NULL, 0);
diff --git a/source/tools/acpisrc/asfile.c b/source/tools/acpisrc/asfile.c
index 257e2ab06ae9..2c595735fccc 100644
--- a/source/tools/acpisrc/asfile.c
+++ b/source/tools/acpisrc/asfile.c
@@ -549,7 +549,8 @@ AsProcessOneFile (
ACPI_NATIVE_INT FileType)
{
char *Pathname;
- char *OutPathname = NULL;
+ char *OutPathname;
+ int Status = 0;
/* Allocate a file pathname buffer for both source and target */
@@ -575,8 +576,8 @@ AsProcessOneFile (
if (AsGetFile (Pathname, &Gbl_FileBuffer, &Gbl_FileSize))
{
- free (Pathname);
- return (-1);
+ Status = -1;
+ goto Exit1;
}
Gbl_HeaderSize = 0;
@@ -619,7 +620,8 @@ AsProcessOneFile (
if (!OutPathname)
{
printf ("Could not allocate buffer for file pathnames\n");
- return (-1);
+ Status = -1;
+ goto Exit2;
}
strcpy (OutPathname, TargetPath);
@@ -630,17 +632,16 @@ AsProcessOneFile (
}
AsPutFile (OutPathname, Gbl_FileBuffer, ConversionTable->Flags);
+ free (OutPathname);
}
}
+Exit2:
free (Gbl_FileBuffer);
- free (Pathname);
- if (OutPathname)
- {
- free (OutPathname);
- }
- return (0);
+Exit1:
+ free (Pathname);
+ return (Status);
}
diff --git a/source/tools/acpisrc/asremove.c b/source/tools/acpisrc/asremove.c
index c5d70804f9bb..0a521a5b8bfe 100644
--- a/source/tools/acpisrc/asremove.c
+++ b/source/tools/acpisrc/asremove.c
@@ -617,6 +617,7 @@ AsRemoveDebugMacros (
AsReplaceString ("return_VOID", "return", REPLACE_WHOLE_WORD, Buffer);
AsReplaceString ("return_PTR", "return", REPLACE_WHOLE_WORD, Buffer);
+ AsReplaceString ("return_STR", "return", REPLACE_WHOLE_WORD, Buffer);
AsReplaceString ("return_ACPI_STATUS", "return", REPLACE_WHOLE_WORD, Buffer);
AsReplaceString ("return_acpi_status", "return", REPLACE_WHOLE_WORD, Buffer);
AsReplaceString ("return_VALUE", "return", REPLACE_WHOLE_WORD, Buffer);