2 * __clear_user_page, __clear_user, clear_page implementation of SuperH
4 * Copyright (C) 2001 Kaz Kojima
5 * Copyright (C) 2001, 2002 Niibe Yutaka
6 * Copyright (C) 2006 Paul Mundt
8 #include <linux/linkage.h>
15 * void clear_page(void *to)
21 * r5 --- to + PAGE_SIZE
30 #if defined(CONFIG_CPU_SH3)
32 #elif defined(CONFIG_CPU_SH4)
44 #if defined(CONFIG_CPU_SH4)
55 .Llimit: .long (PAGE_SIZE-28)
60 mov #0xe0, r1 ! 0xffffffe0
62 ! r4..(r4+31)&~32 -------- not aligned [ Area 0 ]
63 ! (r4+31)&~32..(r4+r5)&~32 -------- aligned [ Area 1 ]
64 ! (r4+r5)&~32..r4+r5 -------- not aligned [ Area 2 ]
69 tst r1, r5 ! length < 32
70 bt .Larea2 ! skip to remainder
96 #if defined(CONFIG_CPU_SH4)
133 mov #0, r0 ! return 0 as normal return
135 ! return the number of bytes remained
142 .section __ex_table,"a"
144 .long 0b, .Lbad_clear_user
145 .long 1b, .Lbad_clear_user
146 .long 2b, .Lbad_clear_user
147 .long 3b, .Lbad_clear_user
148 .long 4b, .Lbad_clear_user
149 .long 5b, .Lbad_clear_user
150 .long 6b, .Lbad_clear_user
151 .long 7b, .Lbad_clear_user
152 .long 8b, .Lbad_clear_user
153 .long 9b, .Lbad_clear_user