Linux-2.6.12-rc2
[safe/jmp/linux-2.6] / arch / frv / lib / outsl_ns.S
1 /* outsl_ns.S: output array of 4b words to device without byte swapping
2  *
3  * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
4  * Written by David Howells (dhowells@redhat.com)
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version
9  * 2 of the License, or (at your option) any later version.
10  */
11
12
13         .text
14         .p2align        4
15
16 ###############################################################################
17 #
18 # void __outsl_ns(unsigned int port, const void *buf, int n)
19 #
20 ###############################################################################
21         .globl          __outsl_ns
22         .type           __outsl_ns,@function
23 __outsl_ns:
24         andicc.p        gr9,#3,gr0,icc0
25         setlos          #4,gr4
26         bne             icc0,#0,__outsl_ns_misaligned
27         subi            gr9,#4,gr9
28 0:
29         ldu.p           @(gr9,gr4),gr5
30         subicc          gr10,#1,gr10,icc0
31         sti.p           gr5,@(gr8,#0)
32         bhi             icc0,#2,0b
33
34         membar
35         bralr
36
37 __outsl_ns_misaligned:
38         subi.p          gr9,#1,gr9
39         setlos          #1,gr4
40 0:
41         ldubu           @(gr9,gr4),gr5
42         ldubu.p         @(gr9,gr4),gr6
43         slli            gr5,#8,gr5
44         ldubu.p         @(gr9,gr4),gr7
45         or              gr5,gr6,gr5
46         ldubu.p         @(gr9,gr4),gr6
47         slli            gr5,#16,gr5
48         slli.p          gr7,#8,gr7
49         or              gr5,gr6,gr5
50         subicc.p        gr10,#1,gr10,icc0
51         or              gr5,gr7,gr5
52
53         sti.p           gr5,@(gr8,#0)
54         bhi             icc0,#2,0b
55
56         membar
57         bralr
58
59         .size           __outsl_ns, .-__outsl_ns