diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2009-08-08 11:25:28 +0100 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-08-08 11:26:15 +0100 |
commit | a131bc185528331451a93db6c50a7d2070376a61 (patch) | |
tree | 18cccd206d4835ee8df147ac3b0c0e30cc00680d /arch/x86/include/asm/irqflags.h | |
parent | 19943b0e30b05d42e494ae6fef78156ebc8c637e (diff) | |
parent | ff1649ff780fb7c0bfbf42d05ffc9b56336b9aa3 (diff) | |
download | kernel_samsung_crespo-a131bc185528331451a93db6c50a7d2070376a61.zip kernel_samsung_crespo-a131bc185528331451a93db6c50a7d2070376a61.tar.gz kernel_samsung_crespo-a131bc185528331451a93db6c50a7d2070376a61.tar.bz2 |
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
Pull fixes in from 2.6.31 so that people testing the iommu-2.6.git tree
no longer trip over bugs which were already fixed (sorry, Horms).
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"); |