ignore memory ranges above 4gb
authorJohn Tsiombikas <nuclear@mutantstargoat.com>
Mon, 30 Apr 2018 20:58:20 +0000 (23:58 +0300)
committerJohn Tsiombikas <nuclear@mutantstargoat.com>
Mon, 30 Apr 2018 20:58:20 +0000 (23:58 +0300)
src/boot/boot2.s

index 2a163e1..719f37e 100644 (file)
@@ -615,16 +615,20 @@ e820_looptop:
        cmp $0x534d4150, %eax
        jnz e820_fail
 
+       # skip areas starting above 4GB as we won't be able to use them
+       cmpl $0, 4(%edi)
+       jnz e820_skip
+
+       # only care for type 1 (usable ram), otherwise ignore
+       cmpl $1, 16(%edi)
+       jnz e820_skip
+
        mov buffer, %eax
        mov $boot_mem_map, %esi
        mov boot_mem_map_size, %ebp
        # again, that's [ebp * 8 + esi]
        mov %eax, (%esi,%ebp,8)
 
-       # only care for type 1 (usable ram), otherwise ignore
-       cmpl $1, 16(%edi)
-       jnz e820_skip
-
        # skip areas with 0 size (also clamp size to 4gb)
        # test high 32bits
        cmpl $0, 12(%edi)