aboutsummaryrefslogtreecommitdiff
path: root/source/compiler/aslresource.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2014-09-29 19:53:38 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2014-09-29 19:53:38 +0000
commitd4e301bc21b6911ed7f5d6a86659c4882fa7ab55 (patch)
treec09826b28ca0b50455664fa1d18a4efff33181e4 /source/compiler/aslresource.c
parent754171ae60abbbd707ed8d449f07ef38f596bd22 (diff)
downloadsrc-d4e301bc21b6911ed7f5d6a86659c4882fa7ab55.tar.gz
src-d4e301bc21b6911ed7f5d6a86659c4882fa7ab55.zip
Import ACPICA 20140926.vendor/acpica/20140926
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=272286 svn path=/vendor-sys/acpica/20140926/; revision=272287; tag=vendor/acpica/20140926
Diffstat (limited to 'source/compiler/aslresource.c')
-rw-r--r--source/compiler/aslresource.c145
1 files changed, 62 insertions, 83 deletions
diff --git a/source/compiler/aslresource.c b/source/compiler/aslresource.c
index f123990cc233..7b31e13e6bb1 100644
--- a/source/compiler/aslresource.c
+++ b/source/compiler/aslresource.c
@@ -645,8 +645,7 @@ RsCheckListForDuplicates (
ASL_RESOURCE_NODE *
RsDoOneResourceDescriptor (
- ACPI_PARSE_OBJECT *DescriptorTypeOp,
- UINT32 CurrentByteOffset,
+ ASL_RESOURCE_INFO *Info,
UINT8 *State)
{
ASL_RESOURCE_NODE *Rnode = NULL;
@@ -654,36 +653,31 @@ RsDoOneResourceDescriptor (
/* Construct the resource */
- switch (DescriptorTypeOp->Asl.ParseOpcode)
+ switch (Info->DescriptorTypeOp->Asl.ParseOpcode)
{
case PARSEOP_DMA:
- Rnode = RsDoDmaDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoDmaDescriptor (Info);
break;
case PARSEOP_FIXEDDMA:
- Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoFixedDmaDescriptor (Info);
break;
case PARSEOP_DWORDIO:
- Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoDwordIoDescriptor (Info);
break;
case PARSEOP_DWORDMEMORY:
- Rnode = RsDoDwordMemoryDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoDwordMemoryDescriptor (Info);
break;
case PARSEOP_DWORDSPACE:
- Rnode = RsDoDwordSpaceDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoDwordSpaceDescriptor (Info);
break;
case PARSEOP_ENDDEPENDENTFN:
@@ -693,13 +687,13 @@ RsDoOneResourceDescriptor (
case ACPI_RSTATE_NORMAL:
AslError (ASL_ERROR, ASL_MSG_MISSING_STARTDEPENDENT,
- DescriptorTypeOp, NULL);
+ Info->DescriptorTypeOp, NULL);
break;
case ACPI_RSTATE_START_DEPENDENT:
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
- DescriptorTypeOp, NULL);
+ Info->DescriptorTypeOp, NULL);
break;
case ACPI_RSTATE_DEPENDENT_LIST:
@@ -709,104 +703,87 @@ RsDoOneResourceDescriptor (
}
*State = ACPI_RSTATE_NORMAL;
- Rnode = RsDoEndDependentDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoEndDependentDescriptor (Info);
break;
case PARSEOP_ENDTAG:
- Rnode = RsDoEndTagDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoEndTagDescriptor (Info);
break;
case PARSEOP_EXTENDEDIO:
- Rnode = RsDoExtendedIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoExtendedIoDescriptor (Info);
break;
case PARSEOP_EXTENDEDMEMORY:
- Rnode = RsDoExtendedMemoryDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoExtendedMemoryDescriptor (Info);
break;
case PARSEOP_EXTENDEDSPACE:
- Rnode = RsDoExtendedSpaceDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoExtendedSpaceDescriptor (Info);
break;
case PARSEOP_FIXEDIO:
- Rnode = RsDoFixedIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoFixedIoDescriptor (Info);
break;
case PARSEOP_INTERRUPT:
- Rnode = RsDoInterruptDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoInterruptDescriptor (Info);
break;
case PARSEOP_IO:
- Rnode = RsDoIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoIoDescriptor (Info);
break;
case PARSEOP_IRQ:
- Rnode = RsDoIrqDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoIrqDescriptor (Info);
break;
case PARSEOP_IRQNOFLAGS:
- Rnode = RsDoIrqNoFlagsDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoIrqNoFlagsDescriptor (Info);
break;
case PARSEOP_MEMORY24:
- Rnode = RsDoMemory24Descriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoMemory24Descriptor (Info);
break;
case PARSEOP_MEMORY32:
- Rnode = RsDoMemory32Descriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoMemory32Descriptor (Info);
break;
case PARSEOP_MEMORY32FIXED:
- Rnode = RsDoMemory32FixedDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoMemory32FixedDescriptor (Info);
break;
case PARSEOP_QWORDIO:
- Rnode = RsDoQwordIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoQwordIoDescriptor (Info);
break;
case PARSEOP_QWORDMEMORY:
- Rnode = RsDoQwordMemoryDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoQwordMemoryDescriptor (Info);
break;
case PARSEOP_QWORDSPACE:
- Rnode = RsDoQwordSpaceDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoQwordSpaceDescriptor (Info);
break;
case PARSEOP_REGISTER:
- Rnode = RsDoGeneralRegisterDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoGeneralRegisterDescriptor (Info);
break;
case PARSEOP_STARTDEPENDENTFN:
@@ -816,7 +793,7 @@ RsDoOneResourceDescriptor (
case ACPI_RSTATE_START_DEPENDENT:
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
- DescriptorTypeOp, NULL);
+ Info->DescriptorTypeOp, NULL);
break;
case ACPI_RSTATE_NORMAL:
@@ -827,8 +804,7 @@ RsDoOneResourceDescriptor (
}
*State = ACPI_RSTATE_START_DEPENDENT;
- Rnode = RsDoStartDependentDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoStartDependentDescriptor (Info);
*State = ACPI_RSTATE_DEPENDENT_LIST;
break;
@@ -839,7 +815,7 @@ RsDoOneResourceDescriptor (
case ACPI_RSTATE_START_DEPENDENT:
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
- DescriptorTypeOp, NULL);
+ Info->DescriptorTypeOp, NULL);
break;
case ACPI_RSTATE_NORMAL:
@@ -850,69 +826,58 @@ RsDoOneResourceDescriptor (
}
*State = ACPI_RSTATE_START_DEPENDENT;
- Rnode = RsDoStartDependentNoPriDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoStartDependentNoPriDescriptor (Info);
*State = ACPI_RSTATE_DEPENDENT_LIST;
break;
case PARSEOP_VENDORLONG:
- Rnode = RsDoVendorLargeDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoVendorLargeDescriptor (Info);
break;
case PARSEOP_VENDORSHORT:
- Rnode = RsDoVendorSmallDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoVendorSmallDescriptor (Info);
break;
case PARSEOP_WORDBUSNUMBER:
- Rnode = RsDoWordBusNumberDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoWordBusNumberDescriptor (Info);
break;
case PARSEOP_WORDIO:
- Rnode = RsDoWordIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoWordIoDescriptor (Info);
break;
case PARSEOP_WORDSPACE:
- Rnode = RsDoWordSpaceDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoWordSpaceDescriptor (Info);
break;
case PARSEOP_GPIO_INT:
- Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoGpioIntDescriptor (Info);
break;
case PARSEOP_GPIO_IO:
- Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoGpioIoDescriptor (Info);
break;
case PARSEOP_I2C_SERIALBUS:
- Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoI2cSerialBusDescriptor (Info);
break;
case PARSEOP_SPI_SERIALBUS:
- Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoSpiSerialBusDescriptor (Info);
break;
case PARSEOP_UART_SERIALBUS:
- Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp,
- CurrentByteOffset);
+ Rnode = RsDoUartSerialBusDescriptor (Info);
break;
case PARSEOP_DEFAULT_ARG:
@@ -923,7 +888,7 @@ RsDoOneResourceDescriptor (
default:
printf ("Unknown resource descriptor type [%s]\n",
- DescriptorTypeOp->Asl.ParseOpName);
+ Info->DescriptorTypeOp->Asl.ParseOpName);
break;
}
@@ -932,14 +897,14 @@ RsDoOneResourceDescriptor (
* This allows the resource to be installed in the namespace so that
* references to the descriptor can be resolved.
*/
- DescriptorTypeOp->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
- DescriptorTypeOp->Asl.CompileFlags = NODE_IS_RESOURCE_DESC;
- DescriptorTypeOp->Asl.Value.Integer = CurrentByteOffset;
+ Info->DescriptorTypeOp->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
+ Info->DescriptorTypeOp->Asl.CompileFlags = NODE_IS_RESOURCE_DESC;
+ Info->DescriptorTypeOp->Asl.Value.Integer = Info->CurrentByteOffset;
if (Rnode)
{
- DescriptorTypeOp->Asl.FinalAmlLength = Rnode->BufferLength;
- DescriptorTypeOp->Asl.Extra = ((AML_RESOURCE *) Rnode->Buffer)->DescriptorType;
+ Info->DescriptorTypeOp->Asl.FinalAmlLength = Rnode->BufferLength;
+ Info->DescriptorTypeOp->Asl.Extra = ((AML_RESOURCE *) Rnode->Buffer)->DescriptorType;
}
return (Rnode);
@@ -1023,6 +988,7 @@ RsDoResourceTemplate (
ASL_RESOURCE_NODE HeadRnode;
ASL_RESOURCE_NODE *PreviousRnode;
ASL_RESOURCE_NODE *Rnode;
+ ASL_RESOURCE_INFO Info;
UINT8 State;
@@ -1055,9 +1021,22 @@ RsDoResourceTemplate (
PreviousRnode = &HeadRnode;
while (DescriptorTypeOp)
{
+ /* Save information for optional mapfile */
+
+ if (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONNECTION)
+ {
+ Info.MappingOp = Op->Asl.Parent;
+ }
+ else
+ {
+ Info.MappingOp = DescriptorTypeOp;
+ }
+
+ Info.DescriptorTypeOp = DescriptorTypeOp;
+ Info.CurrentByteOffset = CurrentByteOffset;
+
DescriptorTypeOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DESC;
- Rnode = RsDoOneResourceDescriptor (DescriptorTypeOp, CurrentByteOffset,
- &State);
+ Rnode = RsDoOneResourceDescriptor (&Info, &State);
/*
* Update current byte offset to indicate the number of bytes from the