fixed bug in boot2.s: when booting from floppy, the motor would keep
[bootcensus] / src / boot / boot2.s
index bf81487..5aeebaa 100644 (file)
@@ -230,7 +230,7 @@ ldloop:
        # just in case we were loaded from floppy, turn all floppy motors off
        mov $0x3f2, %dx
        in %dx, %al
-       and $0xf0, %al
+       and $0xf, %al
        out %al, %dx
 
        mov $10, %ax
@@ -766,6 +766,7 @@ saved_ebp: .long 0
 saved_eax: .long 0
 saved_es: .word 0
 saved_ds: .word 0
+saved_flags: .word 0
 
        # drop back to unreal mode to call 16bit interrupt
        .global int86
@@ -827,6 +828,9 @@ int_op:     int $0
        mov %eax, saved_eax
        mov %ds, saved_ds
        mov %es, saved_es
+       pushfw
+       pop %ax
+       mov %ax, saved_flags
 
        # re-enable protection
        mov %cr0, %eax
@@ -851,7 +855,8 @@ int_op:     int $0
        pushw %ax
        mov saved_es, %ax
        pushw %ax
-       pushfw
+       mov saved_flags, %ax
+       pushw %ax
        mov saved_eax, %eax
        pushal
        mov saved_esp, %esp