projects
/
bootcensus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
comments in int86
[bootcensus]
/
src
/
boot
/
boot2.s
diff --git
a/src/boot/boot2.s
b/src/boot/boot2.s
index
7067a8f
..
bf81487
100644
(file)
--- a/
src/boot/boot2.s
+++ b/
src/boot/boot2.s
@@
-778,7
+778,7
@@
int86:
sidt (saved_idtr)
lidt (rmidt)
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
# 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
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
mov %esp, saved_esp
mov %ebp, saved_ebp
mov 12(%ebp), %esp
@@
-818,6
+819,8
@@
int86:
# call 16bit interrupt
int_op: int $0
# 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
# 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
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
mov saved_ebp, %ebp
mov 12(%ebp), %esp
add $38, %esp