First post, by superfury
superfury
Offline
Rank
l33t++
What happens on the stack when an interrupt or exception happens that traps to a 16-bit (16-bit entry in the IDT) interrupt happens?
Does it simply push values forced into 32-bit mode (so EFLAGS gets pushed properly as it's full 32-bits)? Or are the pushes truncated to 16-bits and pushed as 16-bits (losing the V86 mode flag)?
Or is it simply pushing without the upper 16-bits as actual 16-bits, while the handler needs to extend the stack entries from 16-bit to 32-bit and then return using a 32-bit IRET (using a local buffer somehow)?
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io