ACPI: preserve the ebx value in acpi_copy_wakeup_routine
[sfrench/cifs-2.6.git] / arch / i386 / kernel / acpi / wakeup.S
index 9f408eee4e6f200857fd14f7118367bb5283f028..a2295a34b2c727577c82ed19c8656c06ec63d7c4 100644 (file)
@@ -230,6 +230,7 @@ bogus_magic:
 #
 ENTRY(acpi_copy_wakeup_routine)
 
+       pushl   %ebx
        sgdt    saved_gdt
        sidt    saved_idt
        sldt    saved_ldt
@@ -263,6 +264,7 @@ ENTRY(acpi_copy_wakeup_routine)
        movl    %edx, video_flags - wakeup_start (%eax)
        movl    $0x12345678, real_magic - wakeup_start (%eax)
        movl    $0x12345678, saved_magic
+       popl    %ebx
        ret
 
 save_registers:
@@ -292,7 +294,10 @@ ENTRY(do_suspend_lowlevel)
        pushl   $3
        call    acpi_enter_sleep_state
        addl    $4, %esp
-       ret
+
+#      In case of S3 failure, we'll emerge here.  Jump
+#      to ret_point to recover
+       jmp     ret_point
        .p2align 4,,7
 ret_point:
        call    restore_registers