X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fx86_64%2Flib%2Fclear_page.S;fp=arch%2Fx86_64%2Flib%2Fclear_page.S;h=1f81b79b796cc04e47ef0f22b98a79174b51279c;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=9a10a78bb4a414867fa68099996c6cfb66f26d2e;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/x86_64/lib/clear_page.S b/arch/x86_64/lib/clear_page.S index 9a10a78bb..1f81b79b7 100644 --- a/arch/x86_64/lib/clear_page.S +++ b/arch/x86_64/lib/clear_page.S @@ -1,22 +1,10 @@ -#include -#include - /* * Zero a page. * rdi page */ - ALIGN -clear_page_c: - CFI_STARTPROC - movl $4096/8,%ecx - xorl %eax,%eax - rep stosq - ret - CFI_ENDPROC -ENDPROC(clear_page) - -ENTRY(clear_page) - CFI_STARTPROC + .globl clear_page + .p2align 4 +clear_page: xorl %eax,%eax movl $4096/64,%ecx .p2align 4 @@ -35,25 +23,28 @@ ENTRY(clear_page) jnz .Lloop nop ret - CFI_ENDPROC -.Lclear_page_end: -ENDPROC(clear_page) +clear_page_end: /* Some CPUs run faster using the string instructions. It is also a lot simpler. Use this when possible */ #include - .section .altinstr_replacement,"ax" -1: .byte 0xeb /* jmp */ - .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */ -2: - .previous .section .altinstructions,"a" .align 8 - .quad clear_page - .quad 1b - .byte X86_FEATURE_REP_GOOD - .byte .Lclear_page_end - clear_page - .byte 2b - 1b + .quad clear_page + .quad clear_page_c + .byte X86_FEATURE_REP_GOOD + .byte clear_page_end-clear_page + .byte clear_page_c_end-clear_page_c + .previous + + .section .altinstr_replacement,"ax" +clear_page_c: + movl $4096/8,%ecx + xorl %eax,%eax + rep + stosq + ret +clear_page_c_end: .previous