arch/x86/boot/header.S --> _start --> calll main arch/x86/boot/main.c --> main -- > go_to_protected_mode arch/x86/boot/pm.c --> go_to_protected_mode - ...
arch/x86/boot/header.S --> _start --> calll main arch/x86/boot/main.c --> main -- > go_to_protected_mode arch/x86/boot/pm.c --> go_to_protected_mode --> protected_mode_jump arch/x86/boot/pmjump.S --> GLOBAL(protected_mode_jump) --> jmpl *%eax arch/x86/boot/compressed/head_64.S --> ENTRY(startup_32) --> ENTRY(startup_64) --> jmp *%rax arch/x86/kernel/head_64.S --> startup_64 --> ENTRY(secondary_startup_64) --> lretq (%rax) arch/x86/kernel/head64.c --> x86_64_start_kernel --> start_kernel init/main.c --> start_kernel --> rest_init