X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fboot%2Fboot2.s;h=f2aab01add64eba0d83e22cf68043c1ae8b8eeab;hb=24707f10f3ad0f26bc7144e3a2f3371ba9c377f3;hp=2a163e1f650923be53a4d3a3cb8cf93e4d5694a2;hpb=27a78ae0ed500338ad3df62e67709ff8cc247e6d;p=bootcensus diff --git a/src/boot/boot2.s b/src/boot/boot2.s index 2a163e1..f2aab01 100644 --- a/src/boot/boot2.s +++ b/src/boot/boot2.s @@ -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) @@ -799,6 +803,10 @@ int86: mov %ebp, saved_ebp mov 12(%ebp), %esp popal + popfw + pop %es + pop %ds + # ignore fs and gs for now, don't think I'm going to need them mov saved_esp, %esp # call 16bit interrupt @@ -806,7 +814,9 @@ int_op: int $0 mov saved_ebp, %ebp mov 12(%ebp), %esp - add $34, %esp + add $38, %esp + push %ds + push %es pushfw pushal mov saved_esp, %esp @@ -837,3 +847,5 @@ int_op: int $0 # buffer used by the track loader ... to load tracks. .align 16 buffer: + .global low_mem_buffer +low_mem_buffer: