1 /* $Id: clear_page.S,v 1.13 2003/08/25 17:03:10 lethal Exp $
3 * __clear_user_page, __clear_user, clear_page implementation of SuperH
5 * Copyright (C) 2001 Kaz Kojima
6 * Copyright (C) 2001, 2002 Niibe Yutaka
9 #include <linux/linkage.h>
15 * void clear_page_slow(void *to)
23 ENTRY(clear_page_slow)
30 #if defined(CONFIG_CPU_SH3)
32 #elif defined(CONFIG_CPU_SH4)
44 #if defined(CONFIG_CPU_SH4)
53 .Llimit: .word (4096-28)
58 mov #0xe0, r1 ! 0xffffffe0
60 ! r4..(r4+31)&~32 -------- not aligned [ Area 0 ]
61 ! (r4+31)&~32..(r4+r5)&~32 -------- aligned [ Area 1 ]
62 ! (r4+r5)&~32..r4+r5 -------- not aligned [ Area 2 ]
67 tst r1, r5 ! length < 32
68 bt .Larea2 ! skip to remainder
94 #if defined(CONFIG_CPU_SH4)
131 mov #0, r0 ! return 0 as normal return
133 ! return the number of bytes remained
140 .section __ex_table,"a"
142 .long 0b, .Lbad_clear_user
143 .long 1b, .Lbad_clear_user
144 .long 2b, .Lbad_clear_user
145 .long 3b, .Lbad_clear_user
146 .long 4b, .Lbad_clear_user
147 .long 5b, .Lbad_clear_user
148 .long 6b, .Lbad_clear_user
149 .long 7b, .Lbad_clear_user
150 .long 8b, .Lbad_clear_user
151 .long 9b, .Lbad_clear_user
154 #if defined(CONFIG_CPU_SH4)
157 * @to: P3 address (with same color)
158 * @orig_to: P1 address
160 * void __clear_user_page(void *to, void *orig_to)
169 ENTRY(__clear_user_page)