summaryrefslogtreecommitdiffstats
path: root/arch/x86/power/hibernate_asm_32.S
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2010-04-13 20:03:21 +0200
committerJens Axboe <jens.axboe@oracle.com>2010-04-13 20:03:21 +0200
commit4facdaec1ce186e731e6baa04f074804849e9a49 (patch)
treee521fba8386bf23533cfe21ea5200e615960ec07 /arch/x86/power/hibernate_asm_32.S
parenta11cdaa7af56423a921a8bdad8f5a5f4ddca918a (diff)
parent0d0fb0f9c5fddef4a10242fe3337f00f528a3099 (diff)
downloadlinux-4facdaec1ce186e731e6baa04f074804849e9a49.tar.gz
linux-4facdaec1ce186e731e6baa04f074804849e9a49.tar.bz2
linux-4facdaec1ce186e731e6baa04f074804849e9a49.zip
Merge branch 'master' into for-2.6.35
Conflicts: block/blk-cgroup.c block/cfq-iosched.c Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'arch/x86/power/hibernate_asm_32.S')
-rw-r--r--arch/x86/power/hibernate_asm_32.S15
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/x86/power/hibernate_asm_32.S b/arch/x86/power/hibernate_asm_32.S
index b641388d8286..ad47daeafa4e 100644
--- a/arch/x86/power/hibernate_asm_32.S
+++ b/arch/x86/power/hibernate_asm_32.S
@@ -27,10 +27,17 @@ ENTRY(swsusp_arch_suspend)
ret
ENTRY(restore_image)
+ movl mmu_cr4_features, %ecx
movl resume_pg_dir, %eax
subl $__PAGE_OFFSET, %eax
movl %eax, %cr3
+ jecxz 1f # cr4 Pentium and higher, skip if zero
+ andl $~(X86_CR4_PGE), %ecx
+ movl %ecx, %cr4; # turn off PGE
+ movl %cr3, %eax; # flush TLB
+ movl %eax, %cr3
+1:
movl restore_pblist, %edx
.p2align 4,,7
@@ -54,16 +61,8 @@ done:
movl $swapper_pg_dir, %eax
subl $__PAGE_OFFSET, %eax
movl %eax, %cr3
- /* Flush TLB, including "global" things (vmalloc) */
movl mmu_cr4_features, %ecx
jecxz 1f # cr4 Pentium and higher, skip if zero
- movl %ecx, %edx
- andl $~(X86_CR4_PGE), %edx
- movl %edx, %cr4; # turn off PGE
-1:
- movl %cr3, %eax; # flush TLB
- movl %eax, %cr3
- jecxz 1f # cr4 Pentium and higher, skip if zero
movl %ecx, %cr4; # turn PGE back on
1: