VOGONS


First post, by superfury

User metadata
Rank l33t++
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