end 13 kalloc.c extern char end[]; // first address after kernel loaded from ELF file end 64 kalloc.c if((uint)v % PGSIZE || v < end || v2p(v) >= PHYSTOP) end 12 main.c extern char end[]; // first address after kernel loaded from ELF file end 20 main.c kinit1(end, P2V(4*1024*1024)); // phys page allocator