vserver 1.9.3
[linux-2.6.git] / arch / i386 / power / swsusp.S
index ac2b57d..6e6335f 100644 (file)
 
        .text
 
-ENTRY(do_magic)
-       pushl %ebx
-       cmpl $0,8(%esp)
-       jne .L1450
-       call do_magic_suspend_1
-       call save_processor_state
+ENTRY(swsusp_arch_suspend)
 
        movl %esp, saved_context_esp
-       movl %eax, saved_context_eax
        movl %ebx, saved_context_ebx
-       movl %ecx, saved_context_ecx
-       movl %edx, saved_context_edx
        movl %ebp, saved_context_ebp
        movl %esi, saved_context_esi
        movl %edi, saved_context_edi
        pushfl ; popl saved_context_eflags
 
-       call do_magic_suspend_2
-       jmp .L1449
-       .p2align 4,,7
-.L1450:
-       movl $swapper_pg_dir-__PAGE_OFFSET,%ecx
+       call swsusp_save
+       ret
+
+ENTRY(swsusp_arch_resume)
+       movl $swsusp_pg_dir-__PAGE_OFFSET,%ecx
        movl %ecx,%cr3
 
-       call do_magic_resume_1
-       movl $0,loop
-       cmpl $0,nr_copy_pages
-       je .L1453
-       .p2align 4,,7
-.L1455:
-       movl $0,loop2
+       movl    pagedir_nosave, %ebx
+       xorl    %eax, %eax
+       xorl    %edx, %edx
        .p2align 4,,7
-.L1459:
-       movl pagedir_nosave,%ecx
-       movl loop,%eax
-       movl loop2,%edx
-       sall $4,%eax
-       movl 4(%ecx,%eax),%ebx
-       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 .L1459
-       movl loop,%eax
-       leal 1(%eax),%edx
-       movl %edx,loop
-       movl %edx,%eax
-       cmpl nr_copy_pages,%eax
-       jb .L1455
+copy_loop:
+       movl    4(%ebx,%edx),%edi
+       movl    (%ebx,%edx),%esi
+
+       movl    $1024, %ecx
+       rep
+       movsl
+
+       incl    %eax
+       addl    $16, %edx
+       cmpl    nr_copy_pages,%eax
+       jb copy_loop
        .p2align 4,,7
-.L1453:
-       movl $__USER_DS,%eax
 
-       movw %ax, %ds
-       movw %ax, %es
        movl saved_context_esp, %esp
        movl saved_context_ebp, %ebp
-       movl saved_context_eax, %eax
        movl saved_context_ebx, %ebx
-       movl saved_context_ecx, %ecx
-       movl saved_context_edx, %edx
        movl saved_context_esi, %esi
        movl saved_context_edi, %edi
-       call restore_processor_state
+
        pushl saved_context_eflags ; popfl
-       call do_magic_resume_2
-.L1449:
-       popl %ebx
+       call swsusp_restore
        ret
-
-       .section .data.nosave
-loop:
-       .quad 0
-loop2:
-       .quad 0
-       .previous