Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / u-boot / arch / sh / lib / lshiftrt.S
diff --git a/qemu/roms/u-boot/arch/sh/lib/lshiftrt.S b/qemu/roms/u-boot/arch/sh/lib/lshiftrt.S
new file mode 100644 (file)
index 0000000..787044d
--- /dev/null
@@ -0,0 +1,171 @@
+/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+   2004, 2005, 2006
+   Free Software Foundation, Inc.
+
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+!! libgcc routines for the Renesas / SuperH SH CPUs.
+!! Contributed by Steve Chamberlain.
+!! sac@cygnus.com
+
+!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
+!! recoded in assembly by Toshiyasu Morita
+!! tm@netcom.com
+
+/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
+   ELF local label prefixes by J"orn Rennecke
+   amylaar@cygnus.com  */
+
+!
+! __lshrsi3)
+!
+! Entry:
+!
+! r4: Value to shift
+! r5: Shifts
+!
+! Exit:
+!
+! r0: Result
+!
+! Destroys:
+!
+! (none)
+!
+       .global __lshrsi3
+       .align  2
+__lshrsi3:
+       mov     #31,r0
+       and     r0,r5
+       mova    __lshrsi3_table,r0
+       mov.b   @(r0,r5),r5
+#ifdef __sh1__
+       add     r5,r0
+       jmp     @r0
+#else
+       braf    r5
+#endif
+       mov     r4,r0
+
+       .align  2
+__lshrsi3_table:
+       .byte           __lshrsi3_0-__lshrsi3_table
+       .byte           __lshrsi3_1-__lshrsi3_table
+       .byte           __lshrsi3_2-__lshrsi3_table
+       .byte           __lshrsi3_3-__lshrsi3_table
+       .byte           __lshrsi3_4-__lshrsi3_table
+       .byte           __lshrsi3_5-__lshrsi3_table
+       .byte           __lshrsi3_6-__lshrsi3_table
+       .byte           __lshrsi3_7-__lshrsi3_table
+       .byte           __lshrsi3_8-__lshrsi3_table
+       .byte           __lshrsi3_9-__lshrsi3_table
+       .byte           __lshrsi3_10-__lshrsi3_table
+       .byte           __lshrsi3_11-__lshrsi3_table
+       .byte           __lshrsi3_12-__lshrsi3_table
+       .byte           __lshrsi3_13-__lshrsi3_table
+       .byte           __lshrsi3_14-__lshrsi3_table
+       .byte           __lshrsi3_15-__lshrsi3_table
+       .byte           __lshrsi3_16-__lshrsi3_table
+       .byte           __lshrsi3_17-__lshrsi3_table
+       .byte           __lshrsi3_18-__lshrsi3_table
+       .byte           __lshrsi3_19-__lshrsi3_table
+       .byte           __lshrsi3_20-__lshrsi3_table
+       .byte           __lshrsi3_21-__lshrsi3_table
+       .byte           __lshrsi3_22-__lshrsi3_table
+       .byte           __lshrsi3_23-__lshrsi3_table
+       .byte           __lshrsi3_24-__lshrsi3_table
+       .byte           __lshrsi3_25-__lshrsi3_table
+       .byte           __lshrsi3_26-__lshrsi3_table
+       .byte           __lshrsi3_27-__lshrsi3_table
+       .byte           __lshrsi3_28-__lshrsi3_table
+       .byte           __lshrsi3_29-__lshrsi3_table
+       .byte           __lshrsi3_30-__lshrsi3_table
+       .byte           __lshrsi3_31-__lshrsi3_table
+
+__lshrsi3_6:
+       shlr2   r0
+__lshrsi3_4:
+       shlr2   r0
+__lshrsi3_2:
+       rts
+       shlr2   r0
+
+__lshrsi3_7:
+       shlr2   r0
+__lshrsi3_5:
+       shlr2   r0
+__lshrsi3_3:
+       shlr2   r0
+__lshrsi3_1:
+       rts
+       shlr    r0
+
+__lshrsi3_14:
+       shlr2   r0
+__lshrsi3_12:
+       shlr2   r0
+__lshrsi3_10:
+       shlr2   r0
+__lshrsi3_8:
+       rts
+       shlr8   r0
+
+__lshrsi3_15:
+       shlr2   r0
+__lshrsi3_13:
+       shlr2   r0
+__lshrsi3_11:
+       shlr2   r0
+__lshrsi3_9:
+       shlr8   r0
+       rts
+       shlr    r0
+
+__lshrsi3_22:
+       shlr2   r0
+__lshrsi3_20:
+       shlr2   r0
+__lshrsi3_18:
+       shlr2   r0
+__lshrsi3_16:
+       rts
+       shlr16  r0
+
+__lshrsi3_23:
+       shlr2   r0
+__lshrsi3_21:
+       shlr2   r0
+__lshrsi3_19:
+       shlr2   r0
+__lshrsi3_17:
+       shlr16  r0
+       rts
+       shlr    r0
+
+__lshrsi3_30:
+       shlr2   r0
+__lshrsi3_28:
+       shlr2   r0
+__lshrsi3_26:
+       shlr2   r0
+__lshrsi3_24:
+       shlr16  r0
+       rts
+       shlr8   r0
+
+__lshrsi3_31:
+       shlr2   r0
+__lshrsi3_29:
+       shlr2   r0
+__lshrsi3_27:
+       shlr2   r0
+__lshrsi3_25:
+       shlr16  r0
+       shlr8   r0
+       rts
+       shlr    r0
+
+__lshrsi3_0:
+       rts
+       nop