From 6e5ec45bc9c248586ec797646158b4caa3aa9d68 Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Tue, 30 Apr 2019 00:13:05 +0300 Subject: [PATCH] fixed: int86 failed to preserve returned flags (backported from 256boss) --- src/boot/boot2.s | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/boot/boot2.s b/src/boot/boot2.s index bf81487..f782d7e 100644 --- a/src/boot/boot2.s +++ b/src/boot/boot2.s @@ -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 -- 1.7.10.4