linux/arch
Tian Kevin c8cbee61c9 ACPI: preserve the ebx value in acpi_copy_wakeup_routine
Register %ebx serves as the "global offset table base register" for
position-independent code.  For absolute code, %ebx serves as a local
register and has no specified role in the function calling sequence.  In
either case, a function must preserve the register value for the caller.

acpi_copy_wakeup_routine overrides %ebx without saving it, this may corrupt
the called data.

Kevin found that most time the value of Sx is saved in %esi, however
sometimes compiler also uses %ebx.  When this happens, suspends fails since
sleep value in ebx is changed by acpi_copy_wakeup_routine.

The same funtion in X86_64 doesn't have this problem.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Looks-okay-to: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Len Brown <lenb@kernel.org>
Acked-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-06-24 08:59:12 -07:00
..
alpha alpha: fix alignment problem in csum_ipv6_magic() 2007-06-24 08:59:11 -07:00
arm [ARM] 4445/1: ANUBIS: Fix CPLD registers 2007-06-11 09:09:34 +01:00
arm26 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
avr32 [AVR32] Update defconfigs 2007-06-23 15:43:48 +02:00
blackfin Blackfin arch: match kernel startup messaage with new linker script 2007-06-21 11:34:16 +08:00
cris Fix trivial typos in Kconfig* files 2007-05-09 07:12:20 +02:00
frv all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
h8300 h8300 trival patches 2007-06-01 08:18:29 -07:00
i386 ACPI: preserve the ebx value in acpi_copy_wakeup_routine 2007-06-24 08:59:12 -07:00
ia64 [IA64] acpi_get_sysname() should be __init 2007-05-24 10:59:44 -07:00
m32r all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
m68k x86_64: Quieten Atari keyboard warnings in Kconfig 2007-06-20 14:27:26 -07:00
m68knommu m68knommu: fix ColdFire timer off by 1 2007-06-08 17:23:32 -07:00
mips [MIPS] Don't drag a platform specific header into generic arch code. 2007-06-20 22:27:10 +01:00
parisc [PARISC] unwinder improvements 2007-06-21 17:46:22 -04:00
powerpc [POWERPC] Fix powermac late initcall to only run on powermac 2007-06-20 22:07:38 +10:00
ppc potential parse error in ifdef part 3 2007-06-08 17:23:33 -07:00
s390 [S390] Add oops_enter()/oops_exit() calls to die(). 2007-06-19 13:10:20 +02:00
sh sh: Handle -ERESTART_RESTARTBLOCK for restartable syscalls. 2007-06-19 12:33:21 +09:00
sh64 sh64: Handle -ERESTART_RESTARTBLOCK for restartable syscalls. 2007-06-19 12:41:32 +09:00
sparc [SPARC32]: Build fix. 2007-05-31 01:52:51 -07:00
sparc64 [SPARC64]: Fix args to sun4v_ldc_revoke(). 2007-06-13 00:01:27 -07:00
um uml: remove PAGE_SIZE from libc code 2007-06-16 13:16:16 -07:00
v850 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
x86_64 x86_64: fix misplaced `continue' in mce.c 2007-06-24 08:59:12 -07:00
xtensa [XTENSA] Remove non-rt signal handling 2007-05-31 17:49:32 -07:00