summaryrefslogtreecommitdiff
path: root/src/pmm.c
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2013-01-25 19:46:25 -0600
committerKevin O'Connor <kevin@koconnor.net>2013-02-07 20:00:05 -0500
commit118469aa784698953e16287f235bb272f5b4ee46 (patch)
tree06f597d784bc7e24726a1f99fd48ff9cd2bb46e9 /src/pmm.c
parenta3c48f51576b970ba339f4713fb5b319fa31da10 (diff)
downloadqemu-seabios-118469aa784698953e16287f235bb272f5b4ee46.tar.gz
Add CSM support
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/pmm.c')
-rw-r--r--src/pmm.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/pmm.c b/src/pmm.c
index 6092ea2..b3aa527 100644
--- a/src/pmm.c
+++ b/src/pmm.c
@@ -256,6 +256,25 @@ malloc_preinit(void)
}
}
+void
+csm_malloc_preinit(u32 low_pmm, u32 low_pmm_size, u32 hi_pmm, u32 hi_pmm_size)
+{
+ ASSERT32FLAT();
+
+ if (hi_pmm_size > CONFIG_MAX_HIGHTABLE) {
+ void *hi_pmm_end = (void *)hi_pmm + hi_pmm_size;
+ addSpace(&ZoneTmpHigh, (void *)hi_pmm, hi_pmm_end - CONFIG_MAX_HIGHTABLE);
+ addSpace(&ZoneHigh, hi_pmm_end - CONFIG_MAX_HIGHTABLE, hi_pmm_end);
+ } else {
+ addSpace(&ZoneTmpHigh, (void *)hi_pmm, (void *)hi_pmm + hi_pmm_size);
+ }
+ addSpace(&ZoneTmpLow, (void *)low_pmm, (void *)low_pmm + low_pmm_size);
+ addSpace(&ZoneFSeg, BiosTableSpace, &BiosTableSpace[CONFIG_MAX_BIOSTABLE]);
+ extern u8 final_datalow_start[];
+ addSpace(&ZoneLow, datalow_base + OPROM_HEADER_RESERVE, final_datalow_start);
+ RomBase = findLast(&ZoneLow);
+}
+
// Update pointers after code relocation.
void
malloc_fixupreloc_init(void)