hello all:
i have encounter some very strange behavior that i haven't been able to diagnos. i'm attempting to do a software task switch on the x86 in pmode. what i'm doing basically is this:
current state: eflag=0x2 (w/ IF=0 IOPL=0) cs = 0x8 (DPL=0 0x00000000-0x000fffff) ds and ss = 0x10 (DPL=0 0x00000000-0x000fffff)
operation: ... push 0x202 (new eflags w/ IF=1 IOPL=0) push 0x8 (new cs but unchanged) push "proc" (new eip) iret
now once inside "proc" all the registers are as they should be: eflag=0x202 cs = 0x8 ds and ss = 0x10
the only problem is that all hardware interrupts are still disabled. and it's not my interrupt controller configuration. i only have the problem when i run this code.
i've ran it through the bochs debugger several times with no clue as to what's going on. i get the same behavior when in run the code in the emulator and on the hardware. additionally, when i do a "hlt" in "proc" even the bochs debugger says "WARNING: HLT instruction with IF=0!".
i'm very boggled by this. any help is appreciated.
thanks, bryan