ENTRY(do_magic)
pushl %ebx
cmpl $0,8(%esp)
- jne resume
+ jne .L1450
call do_magic_suspend_1
call save_processor_state
pushfl ; popl saved_context_eflags
call do_magic_suspend_2
- popl %ebx
- ret
-
-resume:
+ jmp .L1449
+ .p2align 4,,7
+.L1450:
movl $swsusp_pg_dir-__PAGE_OFFSET,%ecx
movl %ecx,%cr3
call do_magic_resume_1
movl $0,loop
cmpl $0,nr_copy_pages
- je copy_done
-copy_loop:
+ je .L1453
+ .p2align 4,,7
+.L1455:
movl $0,loop2
.p2align 4,,7
-copy_one_page:
+.L1459:
movl pagedir_nosave,%ecx
movl loop,%eax
movl loop2,%edx
movl (%ecx,%eax),%eax
movb (%edx,%eax),%al
movb %al,(%edx,%ebx)
+ movl %cr3, %eax;
+ movl %eax, %cr3; # flush TLB
movl loop2,%eax
leal 1(%eax),%edx
movl %edx,loop2
movl %edx,%eax
cmpl $4095,%eax
- jbe copy_one_page
+ jbe .L1459
movl loop,%eax
leal 1(%eax),%edx
movl %edx,loop
movl %edx,%eax
cmpl nr_copy_pages,%eax
- jb copy_loop
-
-copy_done:
+ jb .L1455
+ .p2align 4,,7
+.L1453:
movl $__USER_DS,%eax
movw %ax, %ds
call restore_processor_state
pushl saved_context_eflags ; popfl
call do_magic_resume_2
+.L1449:
popl %ebx
ret