Hi! > From: Tian Kevin <kevin.tian@xxxxxxxxx> > > 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@xxxxxxxxx> Looks okay to me. That routine also corrupts ecx and edx, hopefully that's okay? Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html