1*cb4046c5SPhil Edworthy/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2*cb4046c5SPhil Edworthy 2004, 2005, 2006 3*cb4046c5SPhil Edworthy Free Software Foundation, Inc. 4*cb4046c5SPhil Edworthy 5*cb4046c5SPhil EdworthyThis file is free software; you can redistribute it and/or modify it 6*cb4046c5SPhil Edworthyunder the terms of the GNU General Public License as published by the 7*cb4046c5SPhil EdworthyFree Software Foundation; either version 2, or (at your option) any 8*cb4046c5SPhil Edworthylater version. 9*cb4046c5SPhil Edworthy 10*cb4046c5SPhil EdworthyIn addition to the permissions in the GNU General Public License, the 11*cb4046c5SPhil EdworthyFree Software Foundation gives you unlimited permission to link the 12*cb4046c5SPhil Edworthycompiled version of this file into combinations with other programs, 13*cb4046c5SPhil Edworthyand to distribute those combinations without any restriction coming 14*cb4046c5SPhil Edworthyfrom the use of this file. (The General Public License restrictions 15*cb4046c5SPhil Edworthydo apply in other respects; for example, they cover modification of 16*cb4046c5SPhil Edworthythe file, and distribution when not linked into a combine 17*cb4046c5SPhil Edworthyexecutable.) 18*cb4046c5SPhil Edworthy 19*cb4046c5SPhil EdworthyThis file is distributed in the hope that it will be useful, but 20*cb4046c5SPhil EdworthyWITHOUT ANY WARRANTY; without even the implied warranty of 21*cb4046c5SPhil EdworthyMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22*cb4046c5SPhil EdworthyGeneral Public License for more details. 23*cb4046c5SPhil Edworthy 24*cb4046c5SPhil EdworthyYou should have received a copy of the GNU General Public License 25*cb4046c5SPhil Edworthyalong with this program; see the file COPYING. If not, write to 26*cb4046c5SPhil Edworthythe Free Software Foundation, 51 Franklin Street, Fifth Floor, 27*cb4046c5SPhil EdworthyBoston, MA 02110-1301, USA. */ 28*cb4046c5SPhil Edworthy 29*cb4046c5SPhil Edworthy!! libgcc routines for the Renesas / SuperH SH CPUs. 30*cb4046c5SPhil Edworthy!! Contributed by Steve Chamberlain. 31*cb4046c5SPhil Edworthy!! sac@cygnus.com 32*cb4046c5SPhil Edworthy 33*cb4046c5SPhil Edworthy!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 34*cb4046c5SPhil Edworthy!! recoded in assembly by Toshiyasu Morita 35*cb4046c5SPhil Edworthy!! tm@netcom.com 36*cb4046c5SPhil Edworthy 37*cb4046c5SPhil Edworthy/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 38*cb4046c5SPhil Edworthy ELF local label prefixes by J"orn Rennecke 39*cb4046c5SPhil Edworthy amylaar@cygnus.com */ 40*cb4046c5SPhil Edworthy 41*cb4046c5SPhil Edworthy! 42*cb4046c5SPhil Edworthy! __ashrsi3 43*cb4046c5SPhil Edworthy! 44*cb4046c5SPhil Edworthy! Entry: 45*cb4046c5SPhil Edworthy! 46*cb4046c5SPhil Edworthy! r4: Value to shift 47*cb4046c5SPhil Edworthy! r5: Shifts 48*cb4046c5SPhil Edworthy! 49*cb4046c5SPhil Edworthy! Exit: 50*cb4046c5SPhil Edworthy! 51*cb4046c5SPhil Edworthy! r0: Result 52*cb4046c5SPhil Edworthy! 53*cb4046c5SPhil Edworthy! Destroys: 54*cb4046c5SPhil Edworthy! 55*cb4046c5SPhil Edworthy! (none) 56*cb4046c5SPhil Edworthy! 57*cb4046c5SPhil Edworthy 58*cb4046c5SPhil Edworthy .global __ashrsi3 59*cb4046c5SPhil Edworthy 60*cb4046c5SPhil Edworthy .align 2 61*cb4046c5SPhil Edworthy__ashrsi3: 62*cb4046c5SPhil Edworthy mov #31,r0 63*cb4046c5SPhil Edworthy and r0,r5 64*cb4046c5SPhil Edworthy mova ashrsi3_table,r0 65*cb4046c5SPhil Edworthy mov.b @(r0,r5),r5 66*cb4046c5SPhil Edworthy#ifdef __sh1__ 67*cb4046c5SPhil Edworthy add r5,r0 68*cb4046c5SPhil Edworthy jmp @r0 69*cb4046c5SPhil Edworthy#else 70*cb4046c5SPhil Edworthy braf r5 71*cb4046c5SPhil Edworthy#endif 72*cb4046c5SPhil Edworthy mov r4,r0 73*cb4046c5SPhil Edworthy 74*cb4046c5SPhil Edworthy .align 2 75*cb4046c5SPhil Edworthyashrsi3_table: 76*cb4046c5SPhil Edworthy .byte ashrsi3_0-ashrsi3_table 77*cb4046c5SPhil Edworthy .byte ashrsi3_1-ashrsi3_table 78*cb4046c5SPhil Edworthy .byte ashrsi3_2-ashrsi3_table 79*cb4046c5SPhil Edworthy .byte ashrsi3_3-ashrsi3_table 80*cb4046c5SPhil Edworthy .byte ashrsi3_4-ashrsi3_table 81*cb4046c5SPhil Edworthy .byte ashrsi3_5-ashrsi3_table 82*cb4046c5SPhil Edworthy .byte ashrsi3_6-ashrsi3_table 83*cb4046c5SPhil Edworthy .byte ashrsi3_7-ashrsi3_table 84*cb4046c5SPhil Edworthy .byte ashrsi3_8-ashrsi3_table 85*cb4046c5SPhil Edworthy .byte ashrsi3_9-ashrsi3_table 86*cb4046c5SPhil Edworthy .byte ashrsi3_10-ashrsi3_table 87*cb4046c5SPhil Edworthy .byte ashrsi3_11-ashrsi3_table 88*cb4046c5SPhil Edworthy .byte ashrsi3_12-ashrsi3_table 89*cb4046c5SPhil Edworthy .byte ashrsi3_13-ashrsi3_table 90*cb4046c5SPhil Edworthy .byte ashrsi3_14-ashrsi3_table 91*cb4046c5SPhil Edworthy .byte ashrsi3_15-ashrsi3_table 92*cb4046c5SPhil Edworthy .byte ashrsi3_16-ashrsi3_table 93*cb4046c5SPhil Edworthy .byte ashrsi3_17-ashrsi3_table 94*cb4046c5SPhil Edworthy .byte ashrsi3_18-ashrsi3_table 95*cb4046c5SPhil Edworthy .byte ashrsi3_19-ashrsi3_table 96*cb4046c5SPhil Edworthy .byte ashrsi3_20-ashrsi3_table 97*cb4046c5SPhil Edworthy .byte ashrsi3_21-ashrsi3_table 98*cb4046c5SPhil Edworthy .byte ashrsi3_22-ashrsi3_table 99*cb4046c5SPhil Edworthy .byte ashrsi3_23-ashrsi3_table 100*cb4046c5SPhil Edworthy .byte ashrsi3_24-ashrsi3_table 101*cb4046c5SPhil Edworthy .byte ashrsi3_25-ashrsi3_table 102*cb4046c5SPhil Edworthy .byte ashrsi3_26-ashrsi3_table 103*cb4046c5SPhil Edworthy .byte ashrsi3_27-ashrsi3_table 104*cb4046c5SPhil Edworthy .byte ashrsi3_28-ashrsi3_table 105*cb4046c5SPhil Edworthy .byte ashrsi3_29-ashrsi3_table 106*cb4046c5SPhil Edworthy .byte ashrsi3_30-ashrsi3_table 107*cb4046c5SPhil Edworthy .byte ashrsi3_31-ashrsi3_table 108*cb4046c5SPhil Edworthy 109*cb4046c5SPhil Edworthyashrsi3_31: 110*cb4046c5SPhil Edworthy rotcl r0 111*cb4046c5SPhil Edworthy rts 112*cb4046c5SPhil Edworthy subc r0,r0 113*cb4046c5SPhil Edworthy 114*cb4046c5SPhil Edworthyashrsi3_30: 115*cb4046c5SPhil Edworthy shar r0 116*cb4046c5SPhil Edworthyashrsi3_29: 117*cb4046c5SPhil Edworthy shar r0 118*cb4046c5SPhil Edworthyashrsi3_28: 119*cb4046c5SPhil Edworthy shar r0 120*cb4046c5SPhil Edworthyashrsi3_27: 121*cb4046c5SPhil Edworthy shar r0 122*cb4046c5SPhil Edworthyashrsi3_26: 123*cb4046c5SPhil Edworthy shar r0 124*cb4046c5SPhil Edworthyashrsi3_25: 125*cb4046c5SPhil Edworthy shar r0 126*cb4046c5SPhil Edworthyashrsi3_24: 127*cb4046c5SPhil Edworthy shlr16 r0 128*cb4046c5SPhil Edworthy shlr8 r0 129*cb4046c5SPhil Edworthy rts 130*cb4046c5SPhil Edworthy exts.b r0,r0 131*cb4046c5SPhil Edworthy 132*cb4046c5SPhil Edworthyashrsi3_23: 133*cb4046c5SPhil Edworthy shar r0 134*cb4046c5SPhil Edworthyashrsi3_22: 135*cb4046c5SPhil Edworthy shar r0 136*cb4046c5SPhil Edworthyashrsi3_21: 137*cb4046c5SPhil Edworthy shar r0 138*cb4046c5SPhil Edworthyashrsi3_20: 139*cb4046c5SPhil Edworthy shar r0 140*cb4046c5SPhil Edworthyashrsi3_19: 141*cb4046c5SPhil Edworthy shar r0 142*cb4046c5SPhil Edworthyashrsi3_18: 143*cb4046c5SPhil Edworthy shar r0 144*cb4046c5SPhil Edworthyashrsi3_17: 145*cb4046c5SPhil Edworthy shar r0 146*cb4046c5SPhil Edworthyashrsi3_16: 147*cb4046c5SPhil Edworthy shlr16 r0 148*cb4046c5SPhil Edworthy rts 149*cb4046c5SPhil Edworthy exts.w r0,r0 150*cb4046c5SPhil Edworthy 151*cb4046c5SPhil Edworthyashrsi3_15: 152*cb4046c5SPhil Edworthy shar r0 153*cb4046c5SPhil Edworthyashrsi3_14: 154*cb4046c5SPhil Edworthy shar r0 155*cb4046c5SPhil Edworthyashrsi3_13: 156*cb4046c5SPhil Edworthy shar r0 157*cb4046c5SPhil Edworthyashrsi3_12: 158*cb4046c5SPhil Edworthy shar r0 159*cb4046c5SPhil Edworthyashrsi3_11: 160*cb4046c5SPhil Edworthy shar r0 161*cb4046c5SPhil Edworthyashrsi3_10: 162*cb4046c5SPhil Edworthy shar r0 163*cb4046c5SPhil Edworthyashrsi3_9: 164*cb4046c5SPhil Edworthy shar r0 165*cb4046c5SPhil Edworthyashrsi3_8: 166*cb4046c5SPhil Edworthy shar r0 167*cb4046c5SPhil Edworthyashrsi3_7: 168*cb4046c5SPhil Edworthy shar r0 169*cb4046c5SPhil Edworthyashrsi3_6: 170*cb4046c5SPhil Edworthy shar r0 171*cb4046c5SPhil Edworthyashrsi3_5: 172*cb4046c5SPhil Edworthy shar r0 173*cb4046c5SPhil Edworthyashrsi3_4: 174*cb4046c5SPhil Edworthy shar r0 175*cb4046c5SPhil Edworthyashrsi3_3: 176*cb4046c5SPhil Edworthy shar r0 177*cb4046c5SPhil Edworthyashrsi3_2: 178*cb4046c5SPhil Edworthy shar r0 179*cb4046c5SPhil Edworthyashrsi3_1: 180*cb4046c5SPhil Edworthy rts 181*cb4046c5SPhil Edworthy shar r0 182*cb4046c5SPhil Edworthy 183*cb4046c5SPhil Edworthyashrsi3_0: 184*cb4046c5SPhil Edworthy rts 185*cb4046c5SPhil Edworthy nop 186