diff options
Diffstat (limited to 'i386/i386at')
-rw-r--r-- | i386/i386at/model_dep.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c index bbdf9dc..3761093 100644 --- a/i386/i386at/model_dep.c +++ b/i386/i386at/model_dep.c @@ -394,6 +394,13 @@ i386at_init(void) kernel_page_dir[lin2pdenum(INIT_VM_MIN_KERNEL_ADDRESS) + i] = kernel_page_dir[lin2pdenum(LINEAR_MIN_KERNEL_ADDRESS) + i]; #endif + /* We need BIOS memory mapped at 0xc0000 & co for Linux drivers */ +#ifdef LINUX_DEV +#if VM_MIN_KERNEL_ADDRESS != 0 + kernel_page_dir[lin2pdenum(LINEAR_MIN_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS)] = + kernel_page_dir[lin2pdenum(LINEAR_MIN_KERNEL_ADDRESS)]; +#endif +#endif #ifdef MACH_XEN for (i = 0; i < PDPNUM; i++) @@ -458,6 +465,13 @@ i386at_init(void) #endif /* MACH_XEN */ } #endif + /* Keep BIOS memory mapped */ +#ifdef LINUX_DEV +#if VM_MIN_KERNEL_ADDRESS != 0 + kernel_page_dir[lin2pdenum(LINEAR_MIN_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS)] = + kernel_page_dir[lin2pdenum(LINEAR_MIN_KERNEL_ADDRESS)]; +#endif +#endif /* Not used after boot, better give it back. */ #ifdef MACH_XEN |