diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-10-25 23:49:21 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-10-25 23:50:11 +0200 |
commit | 7b75c6721fa6903829ba6de548e63fd7b5ed203e (patch) | |
tree | 1677ea5481e4368788426d36208d82fa9f360465 | |
parent | cf66707de840279ef80090f3f2362c0b0b67f583 (diff) | |
download | gnumach-7b75c6721fa6903829ba6de548e63fd7b5ed203e.tar.gz gnumach-7b75c6721fa6903829ba6de548e63fd7b5ed203e.tar.bz2 gnumach-7b75c6721fa6903829ba6de548e63fd7b5ed203e.zip |
proc_reg: Fix pushf/popf
-rw-r--r-- | i386/i386/proc_reg.h | 12 |
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 |