diff options
author | Robert Moore <Robert.Moore@intel.com> | 2012-11-02 09:35:10 -0700 |
---|---|---|
committer | Robert Moore <Robert.Moore@intel.com> | 2012-11-02 09:35:10 -0700 |
commit | b6b0e3adb8a040c024729261d0661f1a0f7947d6 (patch) | |
tree | dd925ac4cd778773777e1270945ff3257b3a8651 | |
parent | f80327f38f08344eb426459c8215606d5a82f7ec (diff) | |
download | acpica-b6b0e3adb8a040c024729261d0661f1a0f7947d6.tar.gz |
Add macros to extract flag bits from resource descriptors.
Improves readability and maintainability of the code.
Fixes a problem with the UART serial bus descriptor for the
number of data bits flags (was incorrectly 2 bits, should be 3).
-rw-r--r-- | source/components/disassembler/dmresrcl.c | 54 | ||||
-rw-r--r-- | source/components/disassembler/dmresrcl2.c | 44 | ||||
-rw-r--r-- | source/components/disassembler/dmresrcs.c | 20 | ||||
-rw-r--r-- | source/include/acmacros.h | 14 |
4 files changed, 73 insertions, 59 deletions
diff --git a/source/components/disassembler/dmresrcl.c b/source/components/disassembler/dmresrcl.c index 0ca31e348..ef339b892 100644 --- a/source/components/disassembler/dmresrcl.c +++ b/source/components/disassembler/dmresrcl.c @@ -390,7 +390,7 @@ AcpiDmAddressCommon ( /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ - AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ResourceType & 0x3]); + AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]); /* Decode the general and type-specific flags */ @@ -403,7 +403,7 @@ AcpiDmAddressCommon ( AcpiDmIoFlags (Flags); if (ResourceType == ACPI_IO_RANGE) { - AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [SpecificFlags & 0x3]); + AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]); } } } @@ -455,10 +455,10 @@ AcpiDmSpaceFlags ( { AcpiOsPrintf ("%s, %s, %s, %s,", - AcpiGbl_ConsumeDecode [(Flags & 1)], - AcpiGbl_DecDecode [(Flags & 0x2) >> 1], - AcpiGbl_MinDecode [(Flags & 0x4) >> 2], - AcpiGbl_MaxDecode [(Flags & 0x8) >> 3]); + AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], + AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], + AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], + AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]); } @@ -479,10 +479,10 @@ AcpiDmIoFlags ( UINT8 Flags) { AcpiOsPrintf ("%s, %s, %s, %s,", - AcpiGbl_ConsumeDecode [(Flags & 1)], - AcpiGbl_MinDecode [(Flags & 0x4) >> 2], - AcpiGbl_MaxDecode [(Flags & 0x8) >> 3], - AcpiGbl_DecDecode [(Flags & 0x2) >> 1]); + AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], + AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], + AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], + AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]); } @@ -504,14 +504,14 @@ AcpiDmIoFlags2 ( { AcpiOsPrintf (", %s", - AcpiGbl_TtpDecode [(SpecificFlags & 0x10) >> 4]); + AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]); /* TRS is only used if TTP is TypeTranslation */ if (SpecificFlags & 0x10) { AcpiOsPrintf (", %s", - AcpiGbl_TrsDecode [(SpecificFlags & 0x20) >> 5]); + AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); } } @@ -536,12 +536,12 @@ AcpiDmMemoryFlags ( { AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", - AcpiGbl_ConsumeDecode [(Flags & 1)], - AcpiGbl_DecDecode [(Flags & 0x2) >> 1], - AcpiGbl_MinDecode [(Flags & 0x4) >> 2], - AcpiGbl_MaxDecode [(Flags & 0x8) >> 3], - AcpiGbl_MemDecode [(SpecificFlags & 0x6) >> 1], - AcpiGbl_RwDecode [(SpecificFlags & 0x1)]); + AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], + AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], + AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], + AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], + AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)], + AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]); } @@ -563,8 +563,8 @@ AcpiDmMemoryFlags2 ( { AcpiOsPrintf (", %s, %s", - AcpiGbl_MtpDecode [(SpecificFlags & 0x18) >> 3], - AcpiGbl_TtpDecode [(SpecificFlags & 0x20) >> 5]); + AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)], + AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); } @@ -839,7 +839,7 @@ AcpiDmMemory24Descriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("Memory24 (%s,\n", - AcpiGbl_RwDecode [Resource->Memory24.Flags & 1]); + AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]); /* Dump the 4 contiguous WORD values */ @@ -878,7 +878,7 @@ AcpiDmMemory32Descriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("Memory32 (%s,\n", - AcpiGbl_RwDecode [Resource->Memory32.Flags & 1]); + AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]); /* Dump the 4 contiguous DWORD values */ @@ -917,7 +917,7 @@ AcpiDmFixedMemory32Descriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("Memory32Fixed (%s,\n", - AcpiGbl_RwDecode [Resource->FixedMemory32.Flags & 1]); + AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); AcpiDmIndent (Level + 1); AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); @@ -1014,10 +1014,10 @@ AcpiDmInterruptDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", - AcpiGbl_ConsumeDecode [(Resource->ExtendedIrq.Flags & 1)], - AcpiGbl_HeDecode [(Resource->ExtendedIrq.Flags >> 1) & 1], - AcpiGbl_LlDecode [(Resource->ExtendedIrq.Flags >> 2) & 1], - AcpiGbl_ShrDecode [(Resource->ExtendedIrq.Flags >> 3) & 3]); + AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)], + AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)], + AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)], + AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]); /* * The ResourceSource fields are optional and appear after the interrupt diff --git a/source/components/disassembler/dmresrcl2.c b/source/components/disassembler/dmresrcl2.c index ef512a3ff..dad31a662 100644 --- a/source/components/disassembler/dmresrcl2.c +++ b/source/components/disassembler/dmresrcl2.c @@ -273,7 +273,7 @@ AcpiDmGpioCommon ( AcpiOsPrintf (", "); AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.ResSourceIndex); AcpiOsPrintf ("%s, ", - AcpiGbl_ConsumeDecode [(Resource->Gpio.Flags & 1)]); + AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.Flags)]); /* Insert a descriptor name */ @@ -345,9 +345,9 @@ AcpiDmGpioIntDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("GpioInt (%s, %s, %s, ", - AcpiGbl_HeDecode [(Resource->Gpio.IntFlags & 1)], - AcpiGbl_LlDecode [(Resource->Gpio.IntFlags >> 1) & 1], - AcpiGbl_ShrDecode [(Resource->Gpio.IntFlags >> 3) & 3]); + AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.IntFlags)], + AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Gpio.IntFlags, 1)], + AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); /* PinConfig, DebounceTimeout */ @@ -378,7 +378,7 @@ AcpiDmGpioIntDescriptor ( * * RETURN: None * - * DESCRIPTION: Decode a GPIO Interrupt descriptor + * DESCRIPTION: Decode a GPIO I/O descriptor * ******************************************************************************/ @@ -395,7 +395,7 @@ AcpiDmGpioIoDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("GpioIo (%s, ", - AcpiGbl_ShrDecode [(Resource->Gpio.IntFlags >> 3) & 3]); + AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); if (Resource->Gpio.PinConfig <= 3) { @@ -412,7 +412,7 @@ AcpiDmGpioIoDescriptor ( AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DebounceTimeout); AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DriveStrength); AcpiOsPrintf ("%s,\n", - AcpiGbl_IorDecode [Resource->Gpio.IntFlags & 3]); + AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Resource->Gpio.IntFlags)]); /* Dump the GpioInt/GpioIo common portion of the descriptor */ @@ -552,12 +552,12 @@ AcpiDmI2cSerialBusDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("I2cSerialBus (0x%4.4X, %s, 0x%8.8X,\n", Resource->I2cSerialBus.SlaveAddress, - AcpiGbl_SmDecode [(Resource->I2cSerialBus.Flags & 1)], + AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.Flags)], Resource->I2cSerialBus.ConnectionSpeed); AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, ", - AcpiGbl_AmDecode [(Resource->I2cSerialBus.TypeSpecificFlags & 1)]); + AcpiGbl_AmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.TypeSpecificFlags)]); /* ResourceSource is a required field */ @@ -575,7 +575,7 @@ AcpiDmI2cSerialBusDescriptor ( AcpiOsPrintf ("0x%2.2X, ", Resource->I2cSerialBus.ResSourceIndex); AcpiOsPrintf ("%s, ", - AcpiGbl_ConsumeDecode [(Resource->I2cSerialBus.Flags >> 1) & 1]); + AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->I2cSerialBus.Flags, 1)]); /* Insert a descriptor name */ @@ -618,21 +618,21 @@ AcpiDmSpiSerialBusDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("SpiSerialBus (0x%4.4X, %s, %s, 0x%2.2X,\n", Resource->SpiSerialBus.DeviceSelection, - AcpiGbl_DpDecode [(Resource->SpiSerialBus.TypeSpecificFlags >> 1) & 1], - AcpiGbl_WmDecode [(Resource->SpiSerialBus.TypeSpecificFlags & 1)], + AcpiGbl_DpDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->SpiSerialBus.TypeSpecificFlags, 1)], + AcpiGbl_WmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.TypeSpecificFlags)], Resource->SpiSerialBus.DataBitLength); /* SlaveMode, ConnectionSpeed, ClockPolarity, ClockPhase */ AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, 0x%8.8X, %s,\n", - AcpiGbl_SmDecode [(Resource->SpiSerialBus.Flags & 1)], + AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.Flags)], Resource->SpiSerialBus.ConnectionSpeed, - AcpiGbl_CpoDecode [(Resource->SpiSerialBus.ClockPolarity & 1)]); + AcpiGbl_CpoDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.ClockPolarity)]); AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, ", - AcpiGbl_CphDecode [(Resource->SpiSerialBus.ClockPhase & 1)]); + AcpiGbl_CphDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.ClockPhase)]); /* ResourceSource is a required field */ @@ -650,7 +650,7 @@ AcpiDmSpiSerialBusDescriptor ( AcpiOsPrintf ("0x%2.2X, ", Resource->SpiSerialBus.ResSourceIndex); AcpiOsPrintf ("%s, ", - AcpiGbl_ConsumeDecode [(Resource->SpiSerialBus.Flags >> 1) & 1]); + AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->SpiSerialBus.Flags, 1)]); /* Insert a descriptor name */ @@ -693,17 +693,17 @@ AcpiDmUartSerialBusDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("UartSerialBus (0x%8.8X, %s, %s,\n", Resource->UartSerialBus.DefaultBaudRate, - AcpiGbl_BpbDecode [(Resource->UartSerialBus.TypeSpecificFlags >> 4) & 3], - AcpiGbl_SbDecode [(Resource->UartSerialBus.TypeSpecificFlags >> 2) & 3]); + AcpiGbl_BpbDecode [ACPI_EXTRACT_3BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 4)], + AcpiGbl_SbDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 2)]); /* LinesInUse, IsBigEndian, Parity, FlowControl */ AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%2.2X, %s, %s, %s,\n", Resource->UartSerialBus.LinesEnabled, - AcpiGbl_EdDecode [(Resource->UartSerialBus.TypeSpecificFlags >> 7) & 1], - AcpiGbl_PtDecode [Resource->UartSerialBus.Parity & 7], - AcpiGbl_FcDecode [Resource->UartSerialBus.TypeSpecificFlags & 3]); + AcpiGbl_EdDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 7)], + AcpiGbl_PtDecode [ACPI_GET_3BIT_FLAG (Resource->UartSerialBus.Parity)], + AcpiGbl_FcDecode [ACPI_GET_2BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags)]); /* ReceiveBufferSize, TransmitBufferSize */ @@ -728,7 +728,7 @@ AcpiDmUartSerialBusDescriptor ( AcpiOsPrintf ("0x%2.2X, ", Resource->UartSerialBus.ResSourceIndex); AcpiOsPrintf ("%s, ", - AcpiGbl_ConsumeDecode [(Resource->UartSerialBus.Flags >> 1) & 1]); + AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->UartSerialBus.Flags, 1)]); /* Insert a descriptor name */ diff --git a/source/components/disassembler/dmresrcs.c b/source/components/disassembler/dmresrcs.c index baba28bec..62aafec86 100644 --- a/source/components/disassembler/dmresrcs.c +++ b/source/components/disassembler/dmresrcs.c @@ -148,16 +148,16 @@ AcpiDmIrqDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("%s (", - AcpiGbl_IrqDecode [Length & 1]); + AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]); /* Decode flags byte if present */ if (Length & 1) { AcpiOsPrintf ("%s, %s, %s, ", - AcpiGbl_HeDecode [Resource->Irq.Flags & 1], - AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1], - AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 3]); + AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)], + AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)], + AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]); } /* Insert a descriptor name */ @@ -193,9 +193,9 @@ AcpiDmDmaDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("DMA (%s, %s, %s, ", - AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3], - AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1], - AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]); + AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)], + AcpiGbl_BmDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)], + AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]); /* Insert a descriptor name */ @@ -273,7 +273,7 @@ AcpiDmIoDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("IO (%s,\n", - AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]); + AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); AcpiDmIndent (Level + 1); AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); @@ -359,8 +359,8 @@ AcpiDmStartDependentDescriptor ( if (Length & 1) { AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", - (UINT32) Resource->StartDpf.Flags & 3, - (UINT32) (Resource->StartDpf.Flags >> 2) & 3); + (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags), + (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2)); } else { diff --git a/source/include/acmacros.h b/source/include/acmacros.h index 7afd911e6..235217b1d 100644 --- a/source/include/acmacros.h +++ b/source/include/acmacros.h @@ -368,6 +368,20 @@ #define ACPI_16BIT_MASK 0x0000FFFF #define ACPI_24BIT_MASK 0x00FFFFFF +/* Macros to extract flag bits from position zero */ + +#define ACPI_GET_1BIT_FLAG(Value) ((Value) & ACPI_1BIT_MASK) +#define ACPI_GET_2BIT_FLAG(Value) ((Value) & ACPI_2BIT_MASK) +#define ACPI_GET_3BIT_FLAG(Value) ((Value) & ACPI_3BIT_MASK) +#define ACPI_GET_4BIT_FLAG(Value) ((Value) & ACPI_4BIT_MASK) + +/* Macros to extract flag bits from position one and above */ + +#define ACPI_EXTRACT_1BIT_FLAG(Field, Position) (ACPI_GET_1BIT_FLAG ((Field) >> Position)) +#define ACPI_EXTRACT_2BIT_FLAG(Field, Position) (ACPI_GET_2BIT_FLAG ((Field) >> Position)) +#define ACPI_EXTRACT_3BIT_FLAG(Field, Position) (ACPI_GET_3BIT_FLAG ((Field) >> Position)) +#define ACPI_EXTRACT_4BIT_FLAG(Field, Position) (ACPI_GET_4BIT_FLAG ((Field) >> Position)) + /* * An object of type ACPI_NAMESPACE_NODE can appear in some contexts * where a pointer to an object of type ACPI_OPERAND_OBJECT can also |