diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2014-09-29 19:53:38 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2014-09-29 19:53:38 +0000 |
commit | d4e301bc21b6911ed7f5d6a86659c4882fa7ab55 (patch) | |
tree | c09826b28ca0b50455664fa1d18a4efff33181e4 /source/compiler/aslresource.c | |
parent | 754171ae60abbbd707ed8d449f07ef38f596bd22 (diff) | |
download | src-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.c | 145 |
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 |