MERGE-master-patchset-edits
[linux-2.6/openmoko-kernel.git] / arch / avr32 / lib / __avr32_lsl64.S
blobf1dbc2b36257d11538f0b66e05d8f6841f739466
1 /*
2  * Copyright (C) 2005-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  */
9         /*
10          * DWtype __avr32_lsl64(DWtype u, word_type b)
11          */
12         .text
13         .global __avr32_lsl64
14         .type   __avr32_lsl64,@function
15 __avr32_lsl64:
16         cp.w    r12, 0
17         reteq   r12
19         rsub    r9, r12, 32
20         brle    1f
22         lsr     r8, r10, r9
23         lsl     r10, r10, r12
24         lsl     r11, r11, r12
25         or      r11, r8
26         retal   r12
28 1:      neg     r9
29         lsl     r11, r10, r9
30         mov     r10, 0
31         retal   r12