Kernel static mappings grow down, APICs remapped
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 11 Jun 2011 00:51:03 +0000 (17:51 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:04 +0000 (17:36 -0700)
commitd89c297872abe14d0b12f76da2be9dd18f14b7f2
tree0a36aa70eddf12e2e7f04c55650ee342f200dd25
parente091f97483131c7b0ef9d40d15872a466dafaf4c
Kernel static mappings grow down, APICs remapped

The KERNBASE physical memory mapping still grows up from KERNBASE to the
top of virtual memory.  This top is now KERN_VMAP_TOP, instead of the
old IOAPIC_BASE.  If you arch needs the kernel to never map above a
certain VA, then set this.  RISCV needs it due to its crazy static
kernel aliasing.

RISCV side note: I moved the "max vaddr" stuff (formerly IOAPIC) to the
size dependent code in mmu.h, since I think the old version was wrong
for 32 bit versions.  Feel free to move it back.

All non-KERNBASE mappings will now grow down from KERNBASE, such as VPT,
and the APICs (L and IO).  Any static ones your arch needs should be
defined, and set the value KERN_DYN_TOP at the bottom of the last one.
From this point, all dynamic mappings will occur (in future patches,
when we have dynamic mappings), down to ULIM.

While the LAPIC and IOAPIC don't need to be a part of the kernel
interface (in ros/mmu.h or memlayout.h), the VPT symbol does for now, so until
we figure out how to use the UVPT, I'm leaving it there.

Also, the LAPIC and IOAPIC are now mapped in their new locations, which
are still called LAPIC_BASE nand IOAPIC_BASE.  Previously that name was
overloaded for both VA and PA, and now the PAs have are *_PBASE.
kern/arch/i686/apic.h
kern/arch/i686/arch.h
kern/arch/i686/ioapic.h
kern/arch/i686/pmap.c
kern/arch/i686/ros/mmu.h
kern/arch/riscv/arch.h
kern/arch/riscv/ros/mmu.h
kern/arch/sparc/arch.h
kern/arch/sparc/ros/mmu.h
kern/include/ros/memlayout.h
kern/src/multiboot.c