Page 1 of 1
how do i Detect the POPAD Bug?
Posted: Tue Nov 26, 2002 8:48 am
by jcout_bsi
[glow=red,2,300]How would i detect the popad bug and activate a work-around and What processors have the POPAD?[/glow]
Re:how do i Detect the POPAD Bug?
Posted: Tue Nov 26, 2002 10:19 am
by Tim
Extra question: what is the POPAD bug?
Re:how do i Detect the POPAD Bug?
Posted: Tue Nov 26, 2002 10:23 am
by Curufir
POPAD bug is present in 386DX and some 386SX.
Basically the bug has to do with effective addressing in the instruction immediately following POPAD/POPA. This explains it quite succinctly
http://tamerlan.it.nsc.ru/~michael/x86/86bugs/bugs045.htm.
As for dealing with it...just remember never to have such an effective address type instruction that doesn't use EAX following a POPAD.
**
For Tim:
POPAD/POPA bug is the one where a POPAD/POPA that is immediately followed by an instruction that uses effective addressing via any register but EAX causes the value of EAX not to be restored properly from the stack. I'm sure there should be some more punctuation in there somewhre
.
**
Forgot to answer the detection question (Doh :-[). Load EAX and some other register with the same value, and another with the value to use in effective addressing, pushad, change EAX to another value, popad, perform a memory access using effective addressing and check EAX against the register that you previously set to have the same value. Repeat this a few times to be sure (It's supposed to be deterministic but it never hurts to be sure). If they're the same the bug isn't present, if they're different it is and you know you're dealing with a 386DX/SX processor.
Curufir