This could avoid creating the ISA resource item with StartRange = 0 and EndRange = 0xffffffff when the ACPI resource Base and Len both are 0 because we set StartRange = Base and EndRange = Base + End - 1.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11164
6f19259b-4bc3-4df7-8a09-
765794883524
\r
case ACPI_IO_PORT_DESCRIPTOR:\r
Io = (EFI_ACPI_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
\r
case ACPI_IO_PORT_DESCRIPTOR:\r
Io = (EFI_ACPI_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
- if (IsaResource != NULL) {\r
- IsaResource[Count].Type = EfiIsaAcpiResourceIo;\r
- IsaResource[Count].Attribute = IsaIoAttribute (Io->Information);\r
- IsaResource[Count].StartRange = Io->BaseAddressMin;\r
- IsaResource[Count].EndRange = Io->BaseAddressMin + Io->Length - 1;\r
+ if (Io->Length != 0) {\r
+ if (IsaResource != NULL) {\r
+ IsaResource[Count].Type = EfiIsaAcpiResourceIo;\r
+ IsaResource[Count].Attribute = IsaIoAttribute (Io->Information);\r
+ IsaResource[Count].StartRange = Io->BaseAddressMin;\r
+ IsaResource[Count].EndRange = Io->BaseAddressMin + Io->Length - 1;\r
+ }\r
+ Count ++;\r
break;\r
\r
case ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR:\r
FixedIo = (EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
break;\r
\r
case ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR:\r
FixedIo = (EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
- if (IsaResource != NULL) {\r
- IsaResource[Count].Type = EfiIsaAcpiResourceIo;\r
- IsaResource[Count].Attribute = EFI_ISA_ACPI_IO_DECODE_10_BITS;\r
- IsaResource[Count].StartRange = FixedIo->BaseAddress;\r
- IsaResource[Count].EndRange = FixedIo->BaseAddress + FixedIo->Length - 1;\r
+ if (FixedIo->Length != 0) {\r
+ if (IsaResource != NULL) {\r
+ IsaResource[Count].Type = EfiIsaAcpiResourceIo;\r
+ IsaResource[Count].Attribute = EFI_ISA_ACPI_IO_DECODE_10_BITS;\r
+ IsaResource[Count].StartRange = FixedIo->BaseAddress;\r
+ IsaResource[Count].EndRange = FixedIo->BaseAddress + FixedIo->Length - 1;\r
+ }\r
+ Count ++;\r
break;\r
\r
case ACPI_IRQ_DESCRIPTOR:\r
break;\r
\r
case ACPI_IRQ_DESCRIPTOR:\r
\r
case ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR:\r
Memory = (EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
\r
case ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR:\r
Memory = (EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
- if (IsaResource != NULL) {\r
- IsaResource[Count].Type = EfiIsaAcpiResourceMemory;\r
- IsaResource[Count].Attribute = IsaMemoryAttribute (Memory->Information);\r
- IsaResource[Count].StartRange = Memory->BaseAddressMin;\r
- IsaResource[Count].EndRange = Memory->BaseAddressMin + Memory->Length - 1;\r
+ if (Memory->Length != 0) {\r
+ if (IsaResource != NULL) {\r
+ IsaResource[Count].Type = EfiIsaAcpiResourceMemory;\r
+ IsaResource[Count].Attribute = IsaMemoryAttribute (Memory->Information);\r
+ IsaResource[Count].StartRange = Memory->BaseAddressMin;\r
+ IsaResource[Count].EndRange = Memory->BaseAddressMin + Memory->Length - 1;\r
+ }\r
+ Count ++;\r
break;\r
\r
case ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR:\r
FixedMemory = (EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
break;\r
\r
case ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR:\r
FixedMemory = (EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
- if (IsaResource != NULL) {\r
- IsaResource[Count].Type = EfiIsaAcpiResourceMemory;\r
- IsaResource[Count].Attribute = IsaMemoryAttribute (FixedMemory->Information);\r
- IsaResource[Count].StartRange = FixedMemory->BaseAddress;\r
- IsaResource[Count].EndRange = FixedMemory->BaseAddress + FixedMemory->Length - 1;\r
+ if (FixedMemory->Length != 0) {\r
+ if (IsaResource != NULL) {\r
+ IsaResource[Count].Type = EfiIsaAcpiResourceMemory;\r
+ IsaResource[Count].Attribute = IsaMemoryAttribute (FixedMemory->Information);\r
+ IsaResource[Count].StartRange = FixedMemory->BaseAddress;\r
+ IsaResource[Count].EndRange = FixedMemory->BaseAddress + FixedMemory->Length - 1;\r
+ }\r
+ Count ++;\r
break;\r
\r
case ACPI_END_TAG_DESCRIPTOR:\r
break;\r
\r
case ACPI_END_TAG_DESCRIPTOR:\r