diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2013-01-25 19:46:25 -0600 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2013-02-07 20:00:05 -0500 |
commit | 118469aa784698953e16287f235bb272f5b4ee46 (patch) | |
tree | 06f597d784bc7e24726a1f99fd48ff9cd2bb46e9 /src/pmm.c | |
parent | a3c48f51576b970ba339f4713fb5b319fa31da10 (diff) | |
download | 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.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -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) |