[SeaBIOS] [PATCH 1/2] Split region allocation code from pci_bios_init_device()
Eduard - Gabriel Munteanu
eduard.munteanu at linux360.ro
Sun Aug 15 21:57:26 CEST 2010
pci_bios_alloc() can be used to allocate space in the PCI region for
other purposes. This is needed by the AMD IOMMU support code.
Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu at linux360.ro>
---
src/pciinit.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/pciinit.c b/src/pciinit.c
index 0556ee2..bfc669f 100644
--- a/src/pciinit.c
+++ b/src/pciinit.c
@@ -75,6 +75,16 @@ static void pci_bios_init_bridges(u16 bdf)
}
}
+static inline u32 pci_bios_alloc(u32 *region, u32 size)
+{
+ u32 ret;
+
+ ret = ALIGN(*region, size);
+ *region = ret + size;
+
+ return ret;
+}
+
static void pci_bios_init_device(u16 bdf)
{
int class;
@@ -146,14 +156,13 @@ static void pci_bios_init_device(u16 bdf)
pci_config_writel(bdf, ofs, old);
if (val != 0) {
- u32 size = (~(val & mask)) + 1;
+ u32 base, size = (~(val & mask)) + 1;
if (val & PCI_BASE_ADDRESS_SPACE_IO)
paddr = &pci_bios_io_addr;
else
paddr = &pci_bios_mem_addr;
- *paddr = ALIGN(*paddr, size);
- pci_set_io_region_addr(bdf, i, *paddr);
- *paddr += size;
+ base = pci_bios_alloc(paddr, size);
+ pci_set_io_region_addr(bdf, i, base);
}
}
break;
--
1.7.1
More information about the SeaBIOS
mailing list