Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* |
2 | * arch/alpha/lib/ev6-clear_page.S | ||||
3 | * | ||||
4 | * Zero an entire page. | ||||
5 | */ | ||||
Al Viro | 00fc0e0 | 2016-01-11 09:51:29 -0500 | [diff] [blame] | 6 | #include <asm/export.h> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | ||||
Al Viro | 00fc0e0 | 2016-01-11 09:51:29 -0500 | [diff] [blame] | 55 | EXPORT_SYMBOL(clear_page) |