linux/arch/avr32/lib/io-readsb.S
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2004-2006 Atmel Corporation
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 */
   8
   9        .text
  10.Lnot_word_aligned:
  111:      ld.ub   r8, r12[0]
  12        sub     r10, 1
  13        st.b    r11++, r8
  14        reteq   r12
  15        tst     r11, r9
  16        brne    1b
  17
  18        /* fall through */
  19
  20        .global __raw_readsb
  21        .type   __raw_readsb,@function
  22__raw_readsb:
  23        cp.w    r10, 0
  24        mov     r9, 3
  25        reteq   r12
  26
  27        tst     r11, r9
  28        brne    .Lnot_word_aligned
  29
  30        sub     r10, 4
  31        brlt    2f
  32
  331:      ldins.b r8:t, r12[0]
  34        ldins.b r8:u, r12[0]
  35        ldins.b r8:l, r12[0]
  36        ldins.b r8:b, r12[0]
  37        st.w    r11++, r8
  38        sub     r10, 4
  39        brge    1b
  40
  412:      sub     r10, -4
  42        reteq   r12
  43
  443:      ld.ub   r8, r12[0]
  45        sub     r10, 1
  46        st.b    r11++, r8
  47        brne    3b
  48
  49        retal   r12
  50