The page table code had been copied mostly verbatim from the kernel, and
was a dense mess. I abstraced the `page_table_indices` class and the old
loop behavior of `map_in` into a new `page_entry_iterator` class, making
both `map_pages` and the initial offset mapping code much cleaner.
Tags: vmem paging
* Link host-targeted binaries with lld
* Add peru script for getting prebuilt sysroot
* Add readme for prebuilt sysroots
* Remove non-working build_sysroot_gcc.sh, rename clang version to just
build_sysroot.sh
More work on process page tables, including only mapping the last 2 pml4
entries (the highest 1TiB of the address space, ie, kernel space) into a
new table.
Includes the work of actually moving the kernel there, which I had
apparently done in name only previously. Oops.
Return to having the bootloader re-map the kernel into the higher
half before jumping into the kernel entrypoint, so we don't have
to juggle pointers inside the kernel.
Kernel image now has a header with version, magic number, and a
pointer to its actual entrypoint. Entry point is now _start in
boot.s, and we now generate versions.s in the build tree for the
version macros.