Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[wrt350n-kernel.git] / arch / m32r / mm / page.S
bloba2e9367dbf79c3eea7bddb450779142875d6bff5
1 /*
2  *  linux/arch/m32r/mm/page.S
3  *
4  *  Clear/Copy page with CPU
5  *
6  *  Copyright (C) 2004  The Free Software Initiative of Japan
7  *
8  *  Written by Niibe Yutaka
9  *
10  * This file is subject to the terms and conditions of the GNU General Public
11  * License.  See the file "COPYING" in the main directory of this archive
12  * for more details.
13  *
14  */
15         .text
16         .global copy_page
17         /*
18          * copy_page (to, from)
19          *
20          * PAGE_SIZE = 4096-byte
21          * Cache line = 16-byte
22          * 16 * 256
23          */
24         .align  4
25 copy_page:
26         ldi     r2, #255
27         ld      r3, @r0         /* cache line allocate */
28         ld      r4, @r1+
29         ld      r5, @r1+
30         ld      r6, @r1+
31         ld      r7, @r1+
32         .fillinsn
34         st      r4, @r0
35         st      r5, @+r0
36         st      r6, @+r0
37         st      r7, @+r0
38         ld      r4, @r1+
39         addi    r0, #4
40         ld      r5, @r1+
41         ld      r6, @r1+
42         ld      r7, @r1+
43         ld      r3, @r0         /* cache line allocate */
44         addi    r2, #-1
45         bnez    r2, 0b
47         st      r4, @r0
48         st      r5, @+r0
49         st      r6, @+r0
50         st      r7, @+r0
51         jmp     r14
53         .text
54         .global clear_page
55         /*
56          * clear_page (to)
57          *
58          * PAGE_SIZE = 4096-byte
59          * Cache line = 16-byte
60          * 16 * 256
61          */
62         .align  4
63 clear_page:
64         ldi     r2, #255
65         ldi     r4, #0
66         ld      r3, @r0         /* cache line allocate */
67         .fillinsn
69         st      r4, @r0
70         st      r4, @+r0
71         st      r4, @+r0
72         st      r4, @+r0
73         addi    r0, #4
74         ld      r3, @r0         /* cache line allocate */
75         addi    r2, #-1
76         bnez    r2, 0b
78         st      r4, @r0
79         st      r4, @+r0
80         st      r4, @+r0
81         st      r4, @+r0
82         jmp     r14