suspend_32.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright 2001-2002 Pavel Machek <pavel@suse.cz>
  3. * Based on code
  4. * Copyright 2001 Patrick Mochel <mochel@osdl.org>
  5. */
  6. #ifndef ASM_X86__SUSPEND_32_H
  7. #define ASM_X86__SUSPEND_32_H
  8. #include <asm/desc.h>
  9. #include <asm/i387.h>
  10. static inline int arch_prepare_suspend(void) { return 0; }
  11. /* image of the saved processor state */
  12. struct saved_context {
  13. u16 es, fs, gs, ss;
  14. unsigned long cr0, cr2, cr3, cr4;
  15. struct desc_ptr gdt;
  16. struct desc_ptr idt;
  17. u16 ldt;
  18. u16 tss;
  19. unsigned long tr;
  20. unsigned long safety;
  21. unsigned long return_address;
  22. } __attribute__((packed));
  23. #ifdef CONFIG_ACPI
  24. extern unsigned long saved_eip;
  25. extern unsigned long saved_esp;
  26. extern unsigned long saved_ebp;
  27. extern unsigned long saved_ebx;
  28. extern unsigned long saved_esi;
  29. extern unsigned long saved_edi;
  30. static inline void acpi_save_register_state(unsigned long return_point)
  31. {
  32. saved_eip = return_point;
  33. asm volatile("movl %%esp,%0" : "=m" (saved_esp));
  34. asm volatile("movl %%ebp,%0" : "=m" (saved_ebp));
  35. asm volatile("movl %%ebx,%0" : "=m" (saved_ebx));
  36. asm volatile("movl %%edi,%0" : "=m" (saved_edi));
  37. asm volatile("movl %%esi,%0" : "=m" (saved_esi));
  38. }
  39. #define acpi_restore_register_state() do {} while (0)
  40. /* routines for saving/restoring kernel state */
  41. extern int acpi_save_state_mem(void);
  42. #endif
  43. #endif /* ASM_X86__SUSPEND_32_H */