+ implement true memory management + [ia32] use int 0x15 ax=0xe820 to get memory map and memory size + [mips] use some heuristics to get memory map and memory size + reimplement heap so that it can allocate/deallocate itself frames as necessary + provide native four-level portable page table interface + every architecture uses its native page table format + kernel provides unified four-level page table interface for all architectures + track usage of frames containing middle-level page tables (frame leak) + get user mode support for all architectures + when a new thread enters scheduler, at least one CPU in cpu_sleep() should be woken up by an IPI + save/restore floating point context on context switch + [ia32] lazy context switch using TS flag + [ia32] review privilege separation + zero IOPL in EFLAGS + before IRET (from SYSCALL), zero NT in EFLAGS + [ia32] review the cache controling bits in CR0 register + [ia32] zero the alignment exception bit in EFLAGS + make emulated architectures also work on real hardware + bring in support for other architectures (e.g. PowerPC)