/* * 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. */ .Lnot_word_aligned: /* * Bad alignment will cause a hardware exception, which is as * good as anything. No need for us to check for proper alignment. */ ld.uh r8, r12[0] sub r10, 1 st.h r11++, r8 /* fall through */ .global __raw_readsw .type __raw_readsw,@function __raw_readsw: cp.w r10, 0 reteq r12 mov r9, 3 tst r11, r9 brne .Lnot_word_aligned sub r10, 2 brlt 2f 1: ldins.h r8:t, r12[0] ldins.h r8:b, r12[0] st.w r11++, r8 sub r10, 2 brge 1b 2: sub r10, -2 reteq r12 ld.uh r8, r12[0] st.h r11++, r8 retal r12