diff options
Diffstat (limited to 'arch/alpha/lib/ev6-clear_page.S')
-rw-r--r-- | arch/alpha/lib/ev6-clear_page.S | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/alpha/lib/ev6-clear_page.S b/arch/alpha/lib/ev6-clear_page.S new file mode 100644 index 000000000000..adf4f7be0e2b --- /dev/null +++ b/arch/alpha/lib/ev6-clear_page.S | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * arch/alpha/lib/ev6-clear_page.S | ||
3 | * | ||
4 | * Zero an entire page. | ||
5 | */ | ||
6 | |||
7 | .text | ||
8 | .align 4 | ||
9 | .global clear_page | ||
10 | .ent clear_page | ||
11 | clear_page: | ||
12 | .prologue 0 | ||
13 | |||
14 | lda $0,128 | ||
15 | lda $1,125 | ||
16 | addq $16,64,$2 | ||
17 | addq $16,128,$3 | ||
18 | |||
19 | addq $16,192,$17 | ||
20 | wh64 ($16) | ||
21 | wh64 ($2) | ||
22 | wh64 ($3) | ||
23 | |||
24 | 1: wh64 ($17) | ||
25 | stq $31,0($16) | ||
26 | subq $0,1,$0 | ||
27 | subq $1,1,$1 | ||
28 | |||
29 | stq $31,8($16) | ||
30 | stq $31,16($16) | ||
31 | addq $17,64,$2 | ||
32 | nop | ||
33 | |||
34 | stq $31,24($16) | ||
35 | stq $31,32($16) | ||
36 | cmovgt $1,$2,$17 | ||
37 | nop | ||
38 | |||
39 | stq $31,40($16) | ||
40 | stq $31,48($16) | ||
41 | nop | ||
42 | nop | ||
43 | |||
44 | stq $31,56($16) | ||
45 | addq $16,64,$16 | ||
46 | nop | ||
47 | bne $0,1b | ||
48 | |||
49 | ret | ||
50 | nop | ||
51 | nop | ||
52 | nop | ||
53 | |||
54 | .end clear_page | ||