diff options
author | Yinghai Lu <yinghailu@gmail.com> | 2005-12-14 02:39:33 +0000 |
---|---|---|
committer | Yinghai Lu <yinghailu@gmail.com> | 2005-12-14 02:39:33 +0000 |
commit | 72ee9b0ebefa98e05867712eb303269836ec69b4 (patch) | |
tree | 7d732c54abe754f14f1e1e5d93df302b1e04318f /src/cpu/x86/pae | |
parent | f42e1770f968adbb4d197917d130219d193081a3 (diff) |
issue 51 and 52: set mtrr for ap before stop it, and _RAMBASE above 1M
support and pgtbl after 1M support
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2142 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/cpu/x86/pae')
-rw-r--r-- | src/cpu/x86/pae/pgtbl.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cpu/x86/pae/pgtbl.c b/src/cpu/x86/pae/pgtbl.c index 8297281ba3..53db758ce2 100644 --- a/src/cpu/x86/pae/pgtbl.c +++ b/src/cpu/x86/pae/pgtbl.c @@ -1,3 +1,7 @@ +/* + 2005.12 yhlu add linuxbios_ram cross the vga font buffer handling +*/ + #include <console/console.h> #include <cpu/cpu.h> #include <cpu/x86/pae.h> @@ -49,7 +53,25 @@ void *map_2M_page(unsigned long page) struct pde pd[2048]; struct pde pdp[512]; } __attribute__ ((packed)); + +#if (CONFIG_LB_MEM_TOPK>1024) && (_RAMBASE<0x100000) && ((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1)) + /* + pgtbl is too big, so use last one 1M before CONFIG_LB_MEM_TOP, otherwise for 8 way dual core with vga support will push stack and heap cross 0xa0000, + and that region need to be used as vga font buffer. Please make sure set CONFIG_LB_MEM_TOPK=2048 in MB Config + */ + struct pg_table *pgtbl = 0x100000; //1M + + unsigned x_end = 0x100000 + sizeof(struct pg_table) * CONFIG_MAX_CPUS; +#if (0x100000+20480*CONFIG_MAX_CPU) > (CONFIG_LB_MEM_TOPK<<10) + #warning "We may need to increase CONFIG_LB_MEM_TOPK, it need to be more than (0x100000+20480*CONFIG_MAX_CPU)\n" +#endif + if(x_end > (CONFIG_LB_MEM_TOPK<<10)) { + printk_debug("map_2M_page: Please increase the CONFIG_LB_MEM_TOPK more than %dK\n", x_end>>10); + die("Can not go on"); + } +#else static struct pg_table pgtbl[CONFIG_MAX_CPUS] __attribute__ ((aligned(4096))); +#endif static unsigned long mapped_window[CONFIG_MAX_CPUS]; unsigned long index; unsigned long window; |