void warp64(uvlong entry) { u64intptr kzero64 = 0xfffffffff0000000ull; extern void _warp64(ulong); print("warp64(%#llux) %#llux %d\n", entry, entry & ~kzero64, nmmap); if(!havelongmode()) { print("can't run 64-bit kernel on 32-bit cpu\n"); delay(5000); exit(0); } if(v_flag) print("mkmultiboot\n"); mkmultiboot(); if(v_flag) print("impulse\n"); /* * No output after impulse(). */ if(v_flag) print("_warp64\n"); impulse(); _warp64(entry & ~kzero64); }
void warp64(uvlong entry) { u64intptr kzero64; extern void _warp64(ulong); // kzero64 = KZERO64; // if(entry != 0xFFFFFFFF80110000ULL){ // print("bad entry address %#llux\n", entry); // return; // } kzero64 = entry & ~0x000000000fffffffull; print("warp64(%#llux) %#llux %d\n", entry, kzero64, nmmap); if(vflag) print("mkmultiboot\n"); mkmultiboot(); if(vflag) print("mkmach0pt\n"); mkmach0pt(kzero64); if(vflag) print("impulse\n"); /* * No output after impulse(). */ if(vflag) print("_warp64\n"); impulse(); _warp64(Pml4); }