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