[PATCH] annotate arch/x86_64/lib/*.S
[deliverable/linux.git] / arch / x86_64 / lib / clear_page.S
CommitLineData
8d379dad
JB
1#include <linux/linkage.h>
2#include <asm/dwarf2.h>
3
1da177e4
LT
4/*
5 * Zero a page.
6 * rdi page
7 */
8d379dad
JB
8 ALIGN
9clear_page_c:
10 CFI_STARTPROC
11 movl $4096/8,%ecx
12 xorl %eax,%eax
13 rep stosq
14 ret
15 CFI_ENDPROC
16ENDPROC(clear_page)
17
18ENTRY(clear_page)
19 CFI_STARTPROC
7bcd3f34
AK
20 xorl %eax,%eax
21 movl $4096/64,%ecx
22 .p2align 4
23.Lloop:
24 decl %ecx
25#define PUT(x) movq %rax,x*8(%rdi)
26 movq %rax,(%rdi)
27 PUT(1)
28 PUT(2)
29 PUT(3)
30 PUT(4)
31 PUT(5)
32 PUT(6)
33 PUT(7)
34 leaq 64(%rdi),%rdi
35 jnz .Lloop
36 nop
37 ret
8d379dad
JB
38 CFI_ENDPROC
39.Lclear_page_end:
40ENDPROC(clear_page)
7bcd3f34
AK
41
42 /* Some CPUs run faster using the string instructions.
43 It is also a lot simpler. Use this when possible */
44
45#include <asm/cpufeature.h>
46
8d379dad
JB
47 .section .altinstr_replacement,"ax"
481: .byte 0xeb /* jmp <disp8> */
49 .byte (clear_page_c - clear_page) - (2f - 1b) /* offset */
502:
51 .previous
7bcd3f34
AK
52 .section .altinstructions,"a"
53 .align 8
8d379dad
JB
54 .quad clear_page
55 .quad 1b
56 .byte X86_FEATURE_REP_GOOD
57 .byte .Lclear_page_end - clear_page
58 .byte 2b - 1b
7bcd3f34 59 .previous
This page took 0.135007 seconds and 5 git commands to generate.