Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / arch / alpha / lib / ev6-clear_page.S
blob325864c81586daa94d1b04534ed54016fadad6d3
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * arch/alpha/lib/ev6-clear_page.S
4  *
5  * Zero an entire page.
6  */
7 #include <asm/export.h>
8         .text
9         .align 4
10         .global clear_page
11         .ent clear_page
12 clear_page:
13         .prologue 0
15         lda     $0,128
16         lda     $1,125
17         addq    $16,64,$2
18         addq    $16,128,$3
20         addq    $16,192,$17
21         wh64    ($16)
22         wh64    ($2)
23         wh64    ($3)
25 1:      wh64    ($17)
26         stq     $31,0($16)
27         subq    $0,1,$0
28         subq    $1,1,$1
30         stq     $31,8($16)
31         stq     $31,16($16)
32         addq    $17,64,$2
33         nop
35         stq     $31,24($16)
36         stq     $31,32($16)
37         cmovgt  $1,$2,$17
38         nop
40         stq     $31,40($16)
41         stq     $31,48($16)
42         nop
43         nop
45         stq     $31,56($16)
46         addq    $16,64,$16
47         nop
48         bne     $0,1b
50         ret
51         nop
52         nop
53         nop
55         .end clear_page
56         EXPORT_SYMBOL(clear_page)