diff --git a/src/arch/x86_64/boot.asm b/src/arch/x86_64/boot.asm index 663e9e09..2f58d53f 100644 --- a/src/arch/x86_64/boot.asm +++ b/src/arch/x86_64/boot.asm @@ -116,10 +116,10 @@ test_long_mode: cpuid ; CPU identification. cmp eax, 0x80000001 ; Compare the A-register with 0x80000001. jb .no_long_mode ; It is less, there is no long mode. - mov eax, 0x80000000 ; Set the A-register to 0x80000000. + mov eax, 0x80000001 ; Set the A-register to 0x80000001. cpuid ; CPU identification. - cmp eax, 0x80000001 ; Compare the A-register with 0x80000001. - jb .no_long_mode ; It is less, there is no long mode. + test edx, 1 << 29 ; Test if the LM-bit, which is bit 29, is set in the D-register. + jz .no_long_mode ; They aren't, there is no long mode. ret .no_long_mode: mov al, "2"