diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-08-13 11:48:01 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-13 11:48:01 +0900 |
commit | e290861f99131fc42d98012a9ea2dc185f08f8f9 (patch) | |
tree | 5c8b92d095d74d03b281711c81bac54bd59989cd /arch/x86/include/asm/irqflags.h | |
parent | b4a757367d36cebddcd332a4024d92f1e87af370 (diff) | |
parent | dbefd606a3b3634799b625f4900336e61c89e868 (diff) | |
download | kernel_samsung_crespo-e290861f99131fc42d98012a9ea2dc185f08f8f9.zip kernel_samsung_crespo-e290861f99131fc42d98012a9ea2dc185f08f8f9.tar.gz kernel_samsung_crespo-e290861f99131fc42d98012a9ea2dc185f08f8f9.tar.bz2 |
Merge branch 'sh/stable-updates'
Diffstat (limited to 'arch/x86/include/asm/irqflags.h')
-rw-r--r-- | arch/x86/include/asm/irqflags.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h index 2bdab21..c6ccbe7 100644 --- a/arch/x86/include/asm/irqflags.h +++ b/arch/x86/include/asm/irqflags.h @@ -12,9 +12,15 @@ static inline unsigned long native_save_fl(void) { unsigned long flags; + /* + * Note: this needs to be "=r" not "=rm", because we have the + * stack offset from what gcc expects at the time the "pop" is + * executed, and so a memory reference with respect to the stack + * would end up using the wrong address. + */ asm volatile("# __raw_save_flags\n\t" "pushf ; pop %0" - : "=g" (flags) + : "=r" (flags) : /* no input */ : "memory"); |