projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] x86_64: Increase the maximum number of local APICs to the maximum
[powerpc.git]
/
arch
/
x86_64
/
kernel
/
suspend_asm.S
diff --git
a/arch/x86_64/kernel/suspend_asm.S
b/arch/x86_64/kernel/suspend_asm.S
index
4d659e9
..
320b6fb
100644
(file)
--- a/
arch/x86_64/kernel/suspend_asm.S
+++ b/
arch/x86_64/kernel/suspend_asm.S
@@
-39,12
+39,13
@@
ENTRY(swsusp_arch_suspend)
call swsusp_save
ret
call swsusp_save
ret
-ENTRY(swsusp_arch_resume)
- /* set up cr3 */
- leaq init_level4_pgt(%rip),%rax
- subq $__START_KERNEL_map,%rax
- movq %rax,%cr3
-
+ENTRY(restore_image)
+ /* switch to temporary page tables */
+ movq $__PAGE_OFFSET, %rdx
+ movq temp_level4_pgt(%rip), %rax
+ subq %rdx, %rax
+ movq %rax, %cr3
+ /* Flush TLB */
movq mmu_cr4_features(%rip), %rax
movq %rax, %rdx
andq $~(1<<7), %rdx # PGE
movq mmu_cr4_features(%rip), %rax
movq %rax, %rdx
andq $~(1<<7), %rdx # PGE
@@
-69,6
+70,10
@@
loop:
movq pbe_next(%rdx), %rdx
jmp loop
done:
movq pbe_next(%rdx), %rdx
jmp loop
done:
+ /* go back to the original page tables */
+ leaq init_level4_pgt(%rip), %rax
+ subq $__START_KERNEL_map, %rax
+ movq %rax, %cr3
/* Flush TLB, including "global" things (vmalloc) */
movq mmu_cr4_features(%rip), %rax
movq %rax, %rdx
/* Flush TLB, including "global" things (vmalloc) */
movq mmu_cr4_features(%rip), %rax
movq %rax, %rdx