X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fi386%2Fpower%2Fswsusp.S;h=bdf03dd1e37d53c7bec45b2fb45fda87b2fd397a;hb=1be35e94e1da3669db492995cd2c8b1a37016b11;hp=8e4a7bacaadf1f34162da2eb95b711db99bf22f3;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/arch/i386/power/swsusp.S b/arch/i386/power/swsusp.S index 8e4a7baca..bdf03dd1e 100644 --- a/arch/i386/power/swsusp.S +++ b/arch/i386/power/swsusp.S @@ -18,7 +18,7 @@ ENTRY(do_magic) pushl %ebx cmpl $0,8(%esp) - jne resume + jne .L1450 call do_magic_suspend_1 call save_processor_state @@ -33,21 +33,21 @@ ENTRY(do_magic) 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 @@ -56,21 +56,23 @@ copy_one_page: 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 @@ -86,6 +88,7 @@ copy_done: call restore_processor_state pushl saved_context_eflags ; popfl call do_magic_resume_2 +.L1449: popl %ebx ret