linux/arch/frv/lib/outsl_ns.S
<<
>>
Prefs
   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
  280:
  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
  400:
  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
  60