linux/arch/avr32/lib/io-readsw.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.Lnot_word_aligned:
  10        /*
  11         * Bad alignment will cause a hardware exception, which is as
  12         * good as anything. No need for us to check for proper alignment.
  13         */
  14        ld.uh   r8, r12[0]
  15        sub     r10, 1
  16        st.h    r11++, r8
  17
  18        /* fall through */
  19
  20        .global __raw_readsw
  21        .type   __raw_readsw,@function
  22__raw_readsw:
  23        cp.w    r10, 0
  24        reteq   r12
  25        mov     r9, 3
  26        tst     r11, r9
  27        brne    .Lnot_word_aligned
  28
  29        sub     r10, 2
  30        brlt    2f
  31
  321:      ldins.h r8:t, r12[0]
  33        ldins.h r8:b, r12[0]
  34        st.w    r11++, r8
  35        sub     r10, 2
  36        brge    1b
  37
  382:      sub     r10, -2
  39        reteq   r12
  40
  41        ld.uh   r8, r12[0]
  42        st.h    r11++, r8
  43        retal   r12
  44