1/* $Id: clear_page.S,v 1.1.1.1 2008/10/15 03:26:18 james26_jang Exp $
2 *
3 * clear_page implementation of SuperH
4 *
5 * Copyright (C) 2001  Niibe Yutaka & Kaz Kojima
6 *
7 */
8
9/*
10 * clear_page
11 * @to: P1 address
12 *
13 * void clear_page(void *to)
14 */
15
16/*
17 * r0 --- scratch
18 * r4 --- to
19 * r5 --- to + 4096
20 */
21#include <linux/linkage.h>
22ENTRY(clear_page)
23	mov	r4,r5
24	mov.w	.Llimit,r0
25	add	r0,r5
26	mov	#0,r0
27	!
281:
29#if defined(__sh3__)
30	mov.l	r0,@r4
31#elif defined(__SH4__)
32	movca.l	r0,@r4
33	mov	r4,r1
34#endif
35	add	#32,r4
36	mov.l	r0,@-r4
37	mov.l	r0,@-r4
38	mov.l	r0,@-r4
39	mov.l	r0,@-r4
40	mov.l	r0,@-r4
41	mov.l	r0,@-r4
42	mov.l	r0,@-r4
43#if defined(__SH4__)
44	ocbwb	@r1
45#endif
46	cmp/eq	r5,r4
47	bf/s	1b
48	 add	#28,r4
49	!
50	rts
51	 nop
52.Llimit:	.word	(4096-28)
53