movstr_i4.S revision 1.5.2.2 1 1.5.2.2 tron /* $NetBSD: movstr_i4.S,v 1.5.2.2 2006/05/24 15:50:42 tron Exp $ */
2 1.5.2.2 tron
3 1.5.2.2 tron /*-
4 1.5.2.2 tron * Copyright (C) 2002 SHIMIZU Ryo. All rights reserved.
5 1.5.2.2 tron *
6 1.5.2.2 tron * Redistribution and use in source and binary forms, with or without
7 1.5.2.2 tron * modification, are permitted provided that the following conditions
8 1.5.2.2 tron * are met:
9 1.5.2.2 tron * 1. Redistributions of source code must retain the above copyright
10 1.5.2.2 tron * notice, this list of conditions and the following disclaimer.
11 1.5.2.2 tron * 2. Redistributions in binary form must reproduce the above copyright
12 1.5.2.2 tron * notice, this list of conditions and the following disclaimer in the
13 1.5.2.2 tron * documentation and/or other materials provided with the distribution.
14 1.5.2.2 tron * 3. The name of the author may not be used to endorse or promote products
15 1.5.2.2 tron * derived from this software without specific prior written permission.
16 1.5.2.2 tron *
17 1.5.2.2 tron * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 1.5.2.2 tron * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 1.5.2.2 tron * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 1.5.2.2 tron * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 1.5.2.2 tron * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 1.5.2.2 tron * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 1.5.2.2 tron * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 1.5.2.2 tron * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 1.5.2.2 tron * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 1.5.2.2 tron * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 1.5.2.2 tron */
28 1.5.2.2 tron
29 1.5.2.2 tron #include <machine/asm.h>
30 1.5.2.2 tron
31 1.5.2.2 tron
32 1.5.2.2 tron NENTRY(__movstr_i4_odd)
33 1.5.2.2 tron add #-8,r4
34 1.5.2.2 tron nop
35 1.5.2.2 tron odd_loop:
36 1.5.2.2 tron mov.l @r5+,r0
37 1.5.2.2 tron add #8,r4
38 1.5.2.2 tron mov.l @r5+,r1
39 1.5.2.2 tron dt r6
40 1.5.2.2 tron mov.l r0,@(0,r4)
41 1.5.2.2 tron bf/s odd_loop
42 1.5.2.2 tron mov.l r1,@(4,r4)
43 1.5.2.2 tron
44 1.5.2.2 tron mov.l @r5+,r0
45 1.5.2.2 tron mov.l @r5+,r1
46 1.5.2.2 tron mov.l @r5+,r2
47 1.5.2.2 tron mov.l r0,@(8,r4)
48 1.5.2.2 tron mov.l r1,@(12,r4)
49 1.5.2.2 tron rts
50 1.5.2.2 tron mov.l r2,@(16,r4)
51 1.5.2.2 tron
52 1.5.2.2 tron
53 1.5.2.2 tron NENTRY(__movstr_i4_even)
54 1.5.2.2 tron add #-8,r4
55 1.5.2.2 tron nop
56 1.5.2.2 tron even_loop:
57 1.5.2.2 tron mov.l @r5+,r0
58 1.5.2.2 tron add #8,r4
59 1.5.2.2 tron mov.l @r5+,r1
60 1.5.2.2 tron dt r6
61 1.5.2.2 tron mov.l r0,@(0,r4)
62 1.5.2.2 tron bf/s even_loop
63 1.5.2.2 tron mov.l r1,@(4,r4)
64 1.5.2.2 tron
65 1.5.2.2 tron mov.l @r5+,r0
66 1.5.2.2 tron mov.l @r5+,r1
67 1.5.2.2 tron mov.l r0,@(8,r4)
68 1.5.2.2 tron rts
69 1.5.2.2 tron mov.l r1,@(12,r4)
70 1.5.2.2 tron
71 1.5.2.2 tron
72 1.5.2.2 tron /* gcc4 uses movmem, older versions use movstr */
73 1.5.2.2 tron STRONG_ALIAS(__movmem_i4_odd, __movstr_i4_odd)
74 1.5.2.2 tron STRONG_ALIAS(__movmem_i4_even, __movstr_i4_even)
75