summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2022-10-25 23:49:21 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-10-25 23:50:11 +0200
commit7b75c6721fa6903829ba6de548e63fd7b5ed203e (patch)
tree1677ea5481e4368788426d36208d82fa9f360465
parentcf66707de840279ef80090f3f2362c0b0b67f583 (diff)
proc_reg: Fix pushf/popf
-rw-r--r--i386/i386/proc_reg.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/i386/i386/proc_reg.h b/i386/i386/proc_reg.h
index a83ca0d8..704676cf 100644
--- a/i386/i386/proc_reg.h
+++ b/i386/i386/proc_reg.h
@@ -84,9 +84,9 @@ get_eflags(void)
{
unsigned long eflags;
#ifdef __x86_64__
- asm("pushfq; pop %0" : "=r" (eflags));
+ asm("pushfq; popq %0" : "=r" (eflags));
#else
- asm("pushfd; pop %0" : "=r" (eflags));
+ asm("pushfl; popl %0" : "=r" (eflags));
#endif
return eflags;
}
@@ -95,9 +95,9 @@ static inline void
set_eflags(unsigned long eflags)
{
#ifdef __x86_64__
- asm volatile("push %0; popfq" : : "r" (eflags));
+ asm volatile("pushq %0; popfq" : : "r" (eflags));
#else
- asm volatile("push %0; popfd" : : "r" (eflags));
+ asm volatile("pushl %0; popfl" : : "r" (eflags));
#endif
}
@@ -111,14 +111,14 @@ set_eflags(unsigned long eflags)
#define get_eflags() \
({ \
register unsigned long _temp__; \
- asm("pushfq; pop %0" : "=r" (_temp__)); \
+ asm("pushfq; popq %0" : "=r" (_temp__)); \
_temp__; \
})
#else
#define get_eflags() \
({ \
register unsigned long _temp__; \
- asm("pushfd; pop %0" : "=r" (_temp__)); \
+ asm("pushfl; popl %0" : "=r" (_temp__)); \
_temp__; \
})
#endif