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