diff options
| -rw-r--r-- | arch/x86/kernel/acpi/sleep.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/sleep.h | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/wakeup_32.S | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/wakeup_64.S | 4 |
4 files changed, 8 insertions, 6 deletions
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index 103b6ab368d3..146a49c763a4 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
| @@ -24,6 +24,10 @@ unsigned long acpi_realmode_flags; | |||
| 24 | static char temp_stack[4096]; | 24 | static char temp_stack[4096]; |
| 25 | #endif | 25 | #endif |
| 26 | 26 | ||
| 27 | asmlinkage void acpi_enter_s3(void) | ||
| 28 | { | ||
| 29 | acpi_enter_sleep_state(3, wake_sleep_flags); | ||
| 30 | } | ||
| 27 | /** | 31 | /** |
| 28 | * acpi_suspend_lowlevel - save kernel state | 32 | * acpi_suspend_lowlevel - save kernel state |
| 29 | * | 33 | * |
diff --git a/arch/x86/kernel/acpi/sleep.h b/arch/x86/kernel/acpi/sleep.h index fe5fdda5dcd7..d68677a2a010 100644 --- a/arch/x86/kernel/acpi/sleep.h +++ b/arch/x86/kernel/acpi/sleep.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | */ | 3 | */ |
| 4 | 4 | ||
| 5 | #include <asm/trampoline.h> | 5 | #include <asm/trampoline.h> |
| 6 | #include <linux/linkage.h> | ||
| 6 | 7 | ||
| 7 | extern unsigned long saved_video_mode; | 8 | extern unsigned long saved_video_mode; |
| 8 | extern long saved_magic; | 9 | extern long saved_magic; |
| @@ -10,6 +11,7 @@ extern long saved_magic; | |||
| 10 | extern int wakeup_pmode_return; | 11 | extern int wakeup_pmode_return; |
| 11 | 12 | ||
| 12 | extern u8 wake_sleep_flags; | 13 | extern u8 wake_sleep_flags; |
| 14 | extern asmlinkage void acpi_enter_s3(void); | ||
| 13 | 15 | ||
| 14 | extern unsigned long acpi_copy_wakeup_routine(unsigned long); | 16 | extern unsigned long acpi_copy_wakeup_routine(unsigned long); |
| 15 | extern void wakeup_long64(void); | 17 | extern void wakeup_long64(void); |
diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S index 13ab720573e3..72610839f03b 100644 --- a/arch/x86/kernel/acpi/wakeup_32.S +++ b/arch/x86/kernel/acpi/wakeup_32.S | |||
| @@ -74,9 +74,7 @@ restore_registers: | |||
| 74 | ENTRY(do_suspend_lowlevel) | 74 | ENTRY(do_suspend_lowlevel) |
| 75 | call save_processor_state | 75 | call save_processor_state |
| 76 | call save_registers | 76 | call save_registers |
| 77 | pushl $3 | 77 | call acpi_enter_s3 |
| 78 | call acpi_enter_sleep_state | ||
| 79 | addl $4, %esp | ||
| 80 | 78 | ||
| 81 | # In case of S3 failure, we'll emerge here. Jump | 79 | # In case of S3 failure, we'll emerge here. Jump |
| 82 | # to ret_point to recover | 80 | # to ret_point to recover |
diff --git a/arch/x86/kernel/acpi/wakeup_64.S b/arch/x86/kernel/acpi/wakeup_64.S index 8ea5164cbd04..014d1d28c397 100644 --- a/arch/x86/kernel/acpi/wakeup_64.S +++ b/arch/x86/kernel/acpi/wakeup_64.S | |||
| @@ -71,9 +71,7 @@ ENTRY(do_suspend_lowlevel) | |||
| 71 | movq %rsi, saved_rsi | 71 | movq %rsi, saved_rsi |
| 72 | 72 | ||
| 73 | addq $8, %rsp | 73 | addq $8, %rsp |
| 74 | movl $3, %edi | 74 | call acpi_enter_s3 |
| 75 | xorl %eax, %eax | ||
| 76 | call acpi_enter_sleep_state | ||
| 77 | /* in case something went wrong, restore the machine status and go on */ | 75 | /* in case something went wrong, restore the machine status and go on */ |
| 78 | jmp resume_point | 76 | jmp resume_point |
| 79 | 77 | ||
