Буквально, я просто застрял в инструкции, которая изменяет регистр cr0.
Вот мой код, который выполняет переход с i386 на x86-64.
global switch64BitKernel
SECTION .text
switch64BitKernel:
mov eax, cr4
or eax, 0x20
mov cr4, eax
mov eax, 0x100000
mov cr3, eax
mov ecx, 0xC0000080
rdmsr
or eax, 0x0100
wrmsr
mov eax, cr0
or eax, 0xE0000000
xor eax, 0x60000000
mov cr0, eax
jmp 0x08:0x200000
jmp $
0x100000: PML4 Entry, 0x200000: код x86-64
Весь код: os.zip
А это сообщение об ошибке отладчика bochs: