summaryrefslogtreecommitdiffstats
path: root/arch/i386/power/swsusp.S
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2006-12-06 20:34:29 -0800
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-07 08:39:28 -0800
commit2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b (patch)
treead8303f7db40d963f7a7b120996d4fe658a43cce /arch/i386/power/swsusp.S
parentff39593ad0ff7a79a3717edac6634407aa8200c2 (diff)
downloadop-kernel-dev-2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b.zip
op-kernel-dev-2d4a34c9365c6e3f94a5b26ce296e1fce9b66c8b.tar.gz
[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.S9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/i386/power/swsusp.S b/arch/i386/power/swsusp.S
index 8a2b50a..53662e0 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
OpenPOWER on IntegriCloud