14494ce4fSKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 24494ce4fSKuninori Morimoto 34494ce4fSKuninori Morimoto Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 41aad54a9SPaul Mundt 2004, 2005, 2006 51aad54a9SPaul Mundt Free Software Foundation, Inc. 64494ce4fSKuninori Morimoto*/ 71aad54a9SPaul Mundt 81aad54a9SPaul Mundt!! libgcc routines for the Renesas / SuperH SH CPUs. 91aad54a9SPaul Mundt!! Contributed by Steve Chamberlain. 101aad54a9SPaul Mundt!! sac@cygnus.com 111aad54a9SPaul Mundt 121aad54a9SPaul Mundt!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 131aad54a9SPaul Mundt!! recoded in assembly by Toshiyasu Morita 141aad54a9SPaul Mundt!! tm@netcom.com 151aad54a9SPaul Mundt 161aad54a9SPaul Mundt/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 171aad54a9SPaul Mundt ELF local label prefixes by J"orn Rennecke 181aad54a9SPaul Mundt amylaar@cygnus.com */ 191aad54a9SPaul Mundt 201aad54a9SPaul Mundt! 211aad54a9SPaul Mundt! __lshrsi3 221aad54a9SPaul Mundt! 231aad54a9SPaul Mundt! Entry: 241aad54a9SPaul Mundt! 251aad54a9SPaul Mundt! r4: Value to shift 261aad54a9SPaul Mundt! r5: Shifts 271aad54a9SPaul Mundt! 281aad54a9SPaul Mundt! Exit: 291aad54a9SPaul Mundt! 301aad54a9SPaul Mundt! r0: Result 311aad54a9SPaul Mundt! 321aad54a9SPaul Mundt! Destroys: 331aad54a9SPaul Mundt! 341aad54a9SPaul Mundt! (none) 351aad54a9SPaul Mundt! 36940d4113SYoshinori Sato! __lshrsi3_r0 37940d4113SYoshinori Sato! 38940d4113SYoshinori Sato! Entry: 39940d4113SYoshinori Sato! 40940d4113SYoshinori Sato! r0: Value to shift 41940d4113SYoshinori Sato! r5: Shifts 42940d4113SYoshinori Sato! 43940d4113SYoshinori Sato! Exit: 44940d4113SYoshinori Sato! 45940d4113SYoshinori Sato! r0: Result 46940d4113SYoshinori Sato! 47940d4113SYoshinori Sato! Destroys: 48940d4113SYoshinori Sato! 49940d4113SYoshinori Sato! (none) 50940d4113SYoshinori Sato! 511aad54a9SPaul Mundt .global __lshrsi3 52940d4113SYoshinori Sato .global __lshrsi3_r0 531aad54a9SPaul Mundt 541aad54a9SPaul Mundt .align 2 551aad54a9SPaul Mundt__lshrsi3: 56940d4113SYoshinori Sato mov r5,r0 57940d4113SYoshinori Sato .align 2 58940d4113SYoshinori Sato__lshrsi3_r0: 59940d4113SYoshinori Sato and #31,r0 60940d4113SYoshinori Sato mov.l r4,@-r15 61940d4113SYoshinori Sato mov r0,r4 621aad54a9SPaul Mundt mova lshrsi3_table,r0 63940d4113SYoshinori Sato mov.b @(r0,r4),r4 64940d4113SYoshinori Sato add r4,r0 651aad54a9SPaul Mundt jmp @r0 66940d4113SYoshinori Sato mov.l @r15+,r0 671aad54a9SPaul Mundt 681aad54a9SPaul Mundt .align 2 691aad54a9SPaul Mundtlshrsi3_table: 701aad54a9SPaul Mundt .byte lshrsi3_0-lshrsi3_table 711aad54a9SPaul Mundt .byte lshrsi3_1-lshrsi3_table 721aad54a9SPaul Mundt .byte lshrsi3_2-lshrsi3_table 731aad54a9SPaul Mundt .byte lshrsi3_3-lshrsi3_table 741aad54a9SPaul Mundt .byte lshrsi3_4-lshrsi3_table 751aad54a9SPaul Mundt .byte lshrsi3_5-lshrsi3_table 761aad54a9SPaul Mundt .byte lshrsi3_6-lshrsi3_table 771aad54a9SPaul Mundt .byte lshrsi3_7-lshrsi3_table 781aad54a9SPaul Mundt .byte lshrsi3_8-lshrsi3_table 791aad54a9SPaul Mundt .byte lshrsi3_9-lshrsi3_table 801aad54a9SPaul Mundt .byte lshrsi3_10-lshrsi3_table 811aad54a9SPaul Mundt .byte lshrsi3_11-lshrsi3_table 821aad54a9SPaul Mundt .byte lshrsi3_12-lshrsi3_table 831aad54a9SPaul Mundt .byte lshrsi3_13-lshrsi3_table 841aad54a9SPaul Mundt .byte lshrsi3_14-lshrsi3_table 851aad54a9SPaul Mundt .byte lshrsi3_15-lshrsi3_table 861aad54a9SPaul Mundt .byte lshrsi3_16-lshrsi3_table 871aad54a9SPaul Mundt .byte lshrsi3_17-lshrsi3_table 881aad54a9SPaul Mundt .byte lshrsi3_18-lshrsi3_table 891aad54a9SPaul Mundt .byte lshrsi3_19-lshrsi3_table 901aad54a9SPaul Mundt .byte lshrsi3_20-lshrsi3_table 911aad54a9SPaul Mundt .byte lshrsi3_21-lshrsi3_table 921aad54a9SPaul Mundt .byte lshrsi3_22-lshrsi3_table 931aad54a9SPaul Mundt .byte lshrsi3_23-lshrsi3_table 941aad54a9SPaul Mundt .byte lshrsi3_24-lshrsi3_table 951aad54a9SPaul Mundt .byte lshrsi3_25-lshrsi3_table 961aad54a9SPaul Mundt .byte lshrsi3_26-lshrsi3_table 971aad54a9SPaul Mundt .byte lshrsi3_27-lshrsi3_table 981aad54a9SPaul Mundt .byte lshrsi3_28-lshrsi3_table 991aad54a9SPaul Mundt .byte lshrsi3_29-lshrsi3_table 1001aad54a9SPaul Mundt .byte lshrsi3_30-lshrsi3_table 1011aad54a9SPaul Mundt .byte lshrsi3_31-lshrsi3_table 1021aad54a9SPaul Mundt 1031aad54a9SPaul Mundtlshrsi3_6: 1041aad54a9SPaul Mundt shlr2 r0 1051aad54a9SPaul Mundtlshrsi3_4: 1061aad54a9SPaul Mundt shlr2 r0 1071aad54a9SPaul Mundtlshrsi3_2: 1081aad54a9SPaul Mundt rts 1091aad54a9SPaul Mundt shlr2 r0 1101aad54a9SPaul Mundt 1111aad54a9SPaul Mundtlshrsi3_7: 1121aad54a9SPaul Mundt shlr2 r0 1131aad54a9SPaul Mundtlshrsi3_5: 1141aad54a9SPaul Mundt shlr2 r0 1151aad54a9SPaul Mundtlshrsi3_3: 1161aad54a9SPaul Mundt shlr2 r0 1171aad54a9SPaul Mundtlshrsi3_1: 1181aad54a9SPaul Mundt rts 1191aad54a9SPaul Mundt shlr r0 1201aad54a9SPaul Mundt 1211aad54a9SPaul Mundtlshrsi3_14: 1221aad54a9SPaul Mundt shlr2 r0 1231aad54a9SPaul Mundtlshrsi3_12: 1241aad54a9SPaul Mundt shlr2 r0 1251aad54a9SPaul Mundtlshrsi3_10: 1261aad54a9SPaul Mundt shlr2 r0 1271aad54a9SPaul Mundtlshrsi3_8: 1281aad54a9SPaul Mundt rts 1291aad54a9SPaul Mundt shlr8 r0 1301aad54a9SPaul Mundt 1311aad54a9SPaul Mundtlshrsi3_15: 1321aad54a9SPaul Mundt shlr2 r0 1331aad54a9SPaul Mundtlshrsi3_13: 1341aad54a9SPaul Mundt shlr2 r0 1351aad54a9SPaul Mundtlshrsi3_11: 1361aad54a9SPaul Mundt shlr2 r0 1371aad54a9SPaul Mundtlshrsi3_9: 1381aad54a9SPaul Mundt shlr8 r0 1391aad54a9SPaul Mundt rts 1401aad54a9SPaul Mundt shlr r0 1411aad54a9SPaul Mundt 1421aad54a9SPaul Mundtlshrsi3_22: 1431aad54a9SPaul Mundt shlr2 r0 1441aad54a9SPaul Mundtlshrsi3_20: 1451aad54a9SPaul Mundt shlr2 r0 1461aad54a9SPaul Mundtlshrsi3_18: 1471aad54a9SPaul Mundt shlr2 r0 1481aad54a9SPaul Mundtlshrsi3_16: 1491aad54a9SPaul Mundt rts 1501aad54a9SPaul Mundt shlr16 r0 1511aad54a9SPaul Mundt 1521aad54a9SPaul Mundtlshrsi3_23: 1531aad54a9SPaul Mundt shlr2 r0 1541aad54a9SPaul Mundtlshrsi3_21: 1551aad54a9SPaul Mundt shlr2 r0 1561aad54a9SPaul Mundtlshrsi3_19: 1571aad54a9SPaul Mundt shlr2 r0 1581aad54a9SPaul Mundtlshrsi3_17: 1591aad54a9SPaul Mundt shlr16 r0 1601aad54a9SPaul Mundt rts 1611aad54a9SPaul Mundt shlr r0 1621aad54a9SPaul Mundt 1631aad54a9SPaul Mundtlshrsi3_30: 1641aad54a9SPaul Mundt shlr2 r0 1651aad54a9SPaul Mundtlshrsi3_28: 1661aad54a9SPaul Mundt shlr2 r0 1671aad54a9SPaul Mundtlshrsi3_26: 1681aad54a9SPaul Mundt shlr2 r0 1691aad54a9SPaul Mundtlshrsi3_24: 1701aad54a9SPaul Mundt shlr16 r0 1711aad54a9SPaul Mundt rts 1721aad54a9SPaul Mundt shlr8 r0 1731aad54a9SPaul Mundt 1741aad54a9SPaul Mundtlshrsi3_31: 1751aad54a9SPaul Mundt shlr2 r0 1761aad54a9SPaul Mundtlshrsi3_29: 1771aad54a9SPaul Mundt shlr2 r0 1781aad54a9SPaul Mundtlshrsi3_27: 1791aad54a9SPaul Mundt shlr2 r0 1801aad54a9SPaul Mundtlshrsi3_25: 1811aad54a9SPaul Mundt shlr16 r0 1821aad54a9SPaul Mundt shlr8 r0 1831aad54a9SPaul Mundt rts 1841aad54a9SPaul Mundt shlr r0 1851aad54a9SPaul Mundt 1861aad54a9SPaul Mundtlshrsi3_0: 1871aad54a9SPaul Mundt rts 1881aad54a9SPaul Mundt nop 189