2005-04-16 15:20:36 -07:00
/*
* Copyright 2001 - 2002 Pavel Machek < pavel @ suse . cz >
* Based on code
* Copyright 2001 Patrick Mochel < mochel @ osdl . org >
*/
2008-06-10 23:45:45 +02:00
# ifndef __ASM_X86_32_SUSPEND_H
# define __ASM_X86_32_SUSPEND_H
2005-04-16 15:20:36 -07:00
# include <asm/desc.h>
# include <asm/i387.h>
2006-12-06 20:34:29 -08:00
static inline int arch_prepare_suspend ( void ) { return 0 ; }
2005-04-16 15:20:36 -07:00
/* image of the saved processor state */
struct saved_context {
2008-03-23 01:03:35 -07:00
u16 es , fs , gs , ss ;
2005-04-16 15:20:36 -07:00
unsigned long cr0 , cr2 , cr3 , cr4 ;
2008-01-30 13:31:12 +01:00
struct desc_ptr gdt ;
struct desc_ptr idt ;
2005-04-16 15:20:36 -07:00
u16 ldt ;
u16 tss ;
unsigned long tr ;
unsigned long safety ;
unsigned long return_address ;
} __attribute__ ( ( packed ) ) ;
2007-07-24 22:26:33 -04:00
# ifdef CONFIG_ACPI
2005-04-16 15:20:36 -07:00
extern unsigned long saved_eip ;
extern unsigned long saved_esp ;
extern unsigned long saved_ebp ;
extern unsigned long saved_ebx ;
extern unsigned long saved_esi ;
extern unsigned long saved_edi ;
static inline void acpi_save_register_state ( unsigned long return_point )
{
saved_eip = return_point ;
2008-03-23 01:03:35 -07:00
asm volatile ( " movl %%esp,%0 " : " =m " ( saved_esp ) ) ;
asm volatile ( " movl %%ebp,%0 " : " =m " ( saved_ebp ) ) ;
asm volatile ( " movl %%ebx,%0 " : " =m " ( saved_ebx ) ) ;
asm volatile ( " movl %%edi,%0 " : " =m " ( saved_edi ) ) ;
asm volatile ( " movl %%esi,%0 " : " =m " ( saved_esi ) ) ;
2005-04-16 15:20:36 -07:00
}
# define acpi_restore_register_state() do {} while (0)
/* routines for saving/restoring kernel state */
extern int acpi_save_state_mem ( void ) ;
# endif
2008-06-10 23:45:45 +02:00
# endif /* __ASM_X86_32_SUSPEND_H */