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