X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Fboot%2Fboot2.s;h=2a163e1f650923be53a4d3a3cb8cf93e4d5694a2;hp=572a4f071fda1f45f47304cf02ddd8110d3c4166;hb=27a78ae0ed500338ad3df62e67709ff8cc247e6d;hpb=a7a5ced32b6e0bd417ee7839fac245de29a81fe5 diff --git a/src/boot/boot2.s b/src/boot/boot2.s index 572a4f0..2a163e1 100644 --- a/src/boot/boot2.s +++ b/src/boot/boot2.s @@ -685,15 +685,21 @@ detect_mem_e801: movzx %cx, %eax # first size is in KB, convert to bytes shl $10, %eax - mov %eax, 4(%esi) - cmp $0, %dx + jnc 0f + # overflow means it's >4GB, clamp to 4GB + mov $0xffffffff, %eax +0: mov %eax, 4(%esi) incl boot_mem_map_size + cmp $0, %dx jz e801_done movl $0x1000000, 8(%esi) movzx %dx, %eax # second size is in 64kb blocks, convert to bytes shl $16, %eax - mov %eax, 12(%esi) + jnc 0f + # overflow means it's >4GB, clamp to 4GB + mov $0xffffffff, %eax +0: mov %eax, 12(%esi) incl boot_mem_map_size e801_done: clc