[comp.sys.ibm.pc.misc] Does popf problem remain?

markd@silogic.UUCP (Mark DiVecchio) (09/26/90)

I'v been writing assembly language programs for years and I continue
to use the macro described in the next paragraph mostly out of fear.

Does anyone know if I should still worry about the problem worked
around by the macro?

;
; For the PC-AT:
; POPF macro described in the IBM Personal Computer
; Seminar Proceedings Volume 2, Number 4 September 1984
; QUOTE
; "If the system microprocessor executes a POPF instruction in either
; the real or the virtual address mode with CPL <= IOPL, then a 
; pending maskable interrupt (the INTR pin active) may be improperly
; recognized after executing the POPF instruction even if maskable
; interrupts were disabled before the POPF instruction and the value 
; popped had IF=0. If the interrupt is improperly recognized, the
; interrupt is still correctly executed. This errata has no effect
; when interrupts are enabled in either real or virtual address mode.
; The errata has no effect in the virtual address mode when
; CPL > IOPL."
;
popff   macro                           ;use POPFF instead of POPF
        local   popem,skip
                                        ;simulate popping flags using IRET
        jmp     short skip              ;jump around iret
popem:
        iret                            ;pop CS,IP,flags
skip:
        push    CS
        call    popem                   ;call within segment
                                        ;program will continue here
        endm

-- 
Mark DiVecchio, Silogic Systems, 619-549-9841                       K3FWT
-----   9888 Carroll Center Road, Suite 113, San Diego, CA 92126    -----
markd@silogic                                  BBS 619-549-3927
...!ucsd!celerity!celit!silogic!markd     celerity!silogic!markd@ucsd.edu