diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2006-12-06 20:34:29 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 08:39:28 -0800 |
commit | 2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b (patch) | |
tree | ad8303f7db40d963f7a7b120996d4fe658a43cce /arch/i386/power/swsusp.S | |
parent | ff39593ad0ff7a79a3717edac6634407aa8200c2 (diff) | |
download | lwn-2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b.tar.gz lwn-2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b.zip |
[PATCH] swsusp: Support i386 systems with PAE or without PSE
Make swsusp support i386 systems with PAE or without PSE.
This is done by creating temporary page tables located in resume-safe page
frames before the suspend image is restored in the same way as x86_64 does
it.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Andi Kleen <ak@suse.de>
Cc: Dave Jones <davej@redhat.com>
Cc: Nigel Cunningham <ncunningham@linuxmail.org>
Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/power/swsusp.S')
-rw-r--r-- | arch/i386/power/swsusp.S | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/i386/power/swsusp.S b/arch/i386/power/swsusp.S index 8a2b50a0aaad..53662e05b393 100644 --- a/arch/i386/power/swsusp.S +++ b/arch/i386/power/swsusp.S @@ -28,8 +28,9 @@ ENTRY(swsusp_arch_suspend) call swsusp_save ret -ENTRY(swsusp_arch_resume) - movl $swsusp_pg_dir-__PAGE_OFFSET, %ecx +ENTRY(restore_image) + movl resume_pg_dir, %ecx + subl $__PAGE_OFFSET, %ecx movl %ecx, %cr3 movl restore_pblist, %edx @@ -51,6 +52,10 @@ copy_loop: .p2align 4,,7 done: + /* go back to the original page tables */ + movl $swapper_pg_dir, %ecx + subl $__PAGE_OFFSET, %ecx + movl %ecx, %cr3 /* Flush TLB, including "global" things (vmalloc) */ movl mmu_cr4_features, %eax movl %eax, %edx |