GNU Linux-libre 4.9.306-gnu1
[releases.git] / arch / alpha / lib / copy_page.S
1 /*
2  * arch/alpha/lib/copy_page.S
3  *
4  * Copy an entire page.
5  */
6 #include <asm/export.h>
7         .text
8         .align 4
9         .global copy_page
10         .ent copy_page
11 copy_page:
12         .prologue 0
13
14         lda     $18,128
15         nop
16         unop
17         nop
18
19 1:      ldq     $0,0($17)
20         ldq     $1,8($17)
21         ldq     $2,16($17)
22         ldq     $3,24($17)
23
24         ldq     $4,32($17)
25         ldq     $5,40($17)
26         ldq     $6,48($17)
27         ldq     $7,56($17)
28
29         stq     $0,0($16)
30         subq    $18,1,$18
31         stq     $1,8($16)
32         addq    $17,64,$17
33
34         stq     $2,16($16)
35         stq     $3,24($16)
36         stq     $4,32($16)
37         stq     $5,40($16)
38
39         stq     $6,48($16)
40         stq     $7,56($16)
41         addq    $16,64,$16
42         bne     $18, 1b
43
44         ret
45         nop
46         unop
47         nop
48
49         .end copy_page
50         EXPORT_SYMBOL(copy_page)