/* | |
* Copyright (C) 2004-2006 Atmel Corporation | |
* | |
* This program is free software; you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License version 2 as | |
* published by the Free Software Foundation. | |
*/ | |
.text | |
.Lnot_word_aligned: | |
1: ld.ub r8, r12[0] | |
sub r10, 1 | |
st.b r11++, r8 | |
reteq r12 | |
tst r11, r9 | |
brne 1b | |
/* fall through */ | |
.global __raw_readsb | |
.type __raw_readsb,@function | |
__raw_readsb: | |
cp.w r10, 0 | |
mov r9, 3 | |
reteq r12 | |
tst r11, r9 | |
brne .Lnot_word_aligned | |
sub r10, 4 | |
brlt 2f | |
1: ldins.b r8:t, r12[0] | |
ldins.b r8:u, r12[0] | |
ldins.b r8:l, r12[0] | |
ldins.b r8:b, r12[0] | |
st.w r11++, r8 | |
sub r10, 4 | |
brge 1b | |
2: sub r10, -4 | |
reteq r12 | |
3: ld.ub r8, r12[0] | |
sub r10, 1 | |
st.b r11++, r8 | |
brne 3b | |
retal r12 |