Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[linux-2.6/mini2440.git] / arch / frv / lib / insl_ns.S
blobd1658425a9f7263847703e3150a0378fe1ce2449
1 /* insl_ns.S: input array of 4b words from device port 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  */
13         .text
14         .p2align        4
16 ###############################################################################
18 # void __insl_ns(unsigned int port, void *buf, int n)
20 ###############################################################################
21         .globl          __insl_ns
22         .type           __insl_ns,@function
23 __insl_ns:
24         andicc.p        gr9,#3,gr0,icc0
25         setlos          #4,gr4
26         bne             icc0,#0,__insl_ns_misaligned
27         subi            gr9,#4,gr9
29         ldi.p           @(gr8,#0),gr5
30         subicc          gr10,#1,gr10,icc0
31         stu.p           gr5,@(gr9,gr4)
32         bhi             icc0,#2,0b
33         bralr
35 __insl_ns_misaligned:
36         subi.p          gr9,#1,gr9
37         setlos          #1,gr4
39         ldi             @(gr8,#0),gr5
41         srli            gr5,#24,gr6
42         stbu.p          gr6,@(gr9,gr4)
43         srli            gr5,#16,gr6
44         stbu.p          gr6,@(gr9,gr4)
45         srli            gr5,#8,gr6
46         stbu.p          gr6,@(gr9,gr4)
47         subicc          gr10,#1,gr10,icc0
48         stbu.p          gr5,@(gr9,gr4)
49         bhi             icc0,#2,0b
50         bralr
52         .size           __insl_ns, .-__insl_ns