X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Fboot%2Fboot2.s;h=bf814871b70cb238f4130b367eb986cd1caf6cc2;hp=7067a8f308c3f4520f494962fe2ca4ca1e83ddbc;hb=9c8fab227bf5da62f78bbd3da62aa9ff941c6239;hpb=105da4a7b7c8563996a97bfb9895fa87d819bf56 diff --git a/src/boot/boot2.s b/src/boot/boot2.s index 7067a8f..bf81487 100644 --- a/src/boot/boot2.s +++ b/src/boot/boot2.s @@ -778,7 +778,7 @@ int86: sidt (saved_idtr) lidt (rmidt) - # modify the int instruction do this here before the + # modify the int instruction. do this here before the # cs-load jumps, to let them flush the instruction cache mov $int_op, %ebx movb 8(%ebp), %al @@ -802,6 +802,7 @@ int86: nop # load registers from the int86regs struct + # point esp to the regs struct to load registers with popa/popf mov %esp, saved_esp mov %ebp, saved_ebp mov 12(%ebp), %esp @@ -818,6 +819,8 @@ int86: # call 16bit interrupt int_op: int $0 + # BIOS call might have enabled interrupts, cli for good measure + cli # save all registers that we'll clobber before having the # chance to populate the int86regs structure @@ -840,6 +843,7 @@ int_op: int $0 mov %ax, %ss nop + # point the esp to our regs struct, to fill it with pusha/pushf mov saved_ebp, %ebp mov 12(%ebp), %esp add $38, %esp