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