mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-04 12:16:41 +00:00
i8k: Tell gcc that *regs gets clobbered
commit 6b4e81db25
upstream.
More recent GCC caused the i8k driver to stop working, on Slackware
compiler was upgraded from gcc-4.4.4 to gcc-4.5.1 after which it didn't
work anymore, meaning the driver didn't load or gave total nonsensical
output.
As it turned out the asm(..) statement forgot to mention it modifies the
*regs variable.
Credits to Andi Kleen and Andreas Schwab for providing the fix.
Signed-off-by: Jim Bos <jim876@xs4all.nl>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Willy Tarreau <w@1wt.eu>
This commit is contained in:
parent
ad6e2b7456
commit
ac7024a240
@ -141,7 +141,7 @@ static int i8k_smm(struct smm_regs *regs)
|
||||
"lahf\n\t"
|
||||
"shrl $8,%%eax\n\t"
|
||||
"andl $1,%%eax\n"
|
||||
:"=a"(rc)
|
||||
:"=a"(rc), "+m" (*regs)
|
||||
: "a"(regs)
|
||||
: "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory");
|
||||
#else
|
||||
@ -166,7 +166,8 @@ static int i8k_smm(struct smm_regs *regs)
|
||||
"movl %%edx,0(%%eax)\n\t"
|
||||
"lahf\n\t"
|
||||
"shrl $8,%%eax\n\t"
|
||||
"andl $1,%%eax\n":"=a"(rc)
|
||||
"andl $1,%%eax\n"
|
||||
:"=a"(rc), "+m" (*regs)
|
||||
: "a"(regs)
|
||||
: "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory");
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user