Fix idtr/gdtr structs and lidt/lgdt functions
Fix memory init - another #[packed]
Set a maximum (used) memory size to avoid overflow

kernel_base allows for 1GB memory currently, so only try to map physical
addresses up to 1GB.