Path: utzoo!attcan!uunet!aplcen!uakari.primate.wisc.edu!sdd.hp.com!ucsd!network.ucsd.edu!celit!silogic!markd From: markd@silogic.UUCP (Mark DiVecchio) Newsgroups: comp.sys.ibm.pc.misc Subject: Does popf problem remain? Keywords: IBM AT 286 Message-ID: <256@silogic.UUCP> Date: 25 Sep 90 17:17:24 GMT Organization: Silogic Systems, San Diego, CA Lines: 40 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