1 /* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 2 3 Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 4 2004, 2005, 2006 5 Free Software Foundation, Inc. 6 */ 7 8 !! libgcc routines for the Renesas / SuperH SH CPUs. 9 !! Contributed by Steve Chamberlain. 10 !! sac@cygnus.com 11 12 !! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 13 !! recoded in assembly by Toshiyasu Morita 14 !! tm@netcom.com 15 16 /* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 17 ELF local label prefixes by J"orn Rennecke 18 amylaar@cygnus.com */ 19 20 ! 21 ! __ashrsi3 22 ! 23 ! Entry: 24 ! 25 ! r4: Value to shift 26 ! r5: Shifts 27 ! 28 ! Exit: 29 ! 30 ! r0: Result 31 ! 32 ! Destroys: 33 ! 34 ! (none) 35 ! 36 ! __ashrsi3_r0 37 ! 38 ! Entry: 39 ! 40 ! r4: Value to shift 41 ! r0: Shifts 42 ! 43 ! Exit: 44 ! 45 ! r0: Result 46 ! 47 ! Destroys: 48 ! 49 ! (none) 50 51 .global __ashrsi3 52 .global __ashrsi3_r0 53 54 .align 2 55 __ashrsi3: 56 mov r5,r0 57 .align 2 58 __ashrsi3_r0: 59 and #31,r0 60 mov.l r4,@-r15 61 mov r0,r4 62 mova ashrsi3_table,r0 63 mov.b @(r0,r4),r4 64 add r4,r0 65 jmp @r0 66 mov.l @r15+,r0 67 68 .align 2 69 ashrsi3_table: 70 .byte ashrsi3_0-ashrsi3_table 71 .byte ashrsi3_1-ashrsi3_table 72 .byte ashrsi3_2-ashrsi3_table 73 .byte ashrsi3_3-ashrsi3_table 74 .byte ashrsi3_4-ashrsi3_table 75 .byte ashrsi3_5-ashrsi3_table 76 .byte ashrsi3_6-ashrsi3_table 77 .byte ashrsi3_7-ashrsi3_table 78 .byte ashrsi3_8-ashrsi3_table 79 .byte ashrsi3_9-ashrsi3_table 80 .byte ashrsi3_10-ashrsi3_table 81 .byte ashrsi3_11-ashrsi3_table 82 .byte ashrsi3_12-ashrsi3_table 83 .byte ashrsi3_13-ashrsi3_table 84 .byte ashrsi3_14-ashrsi3_table 85 .byte ashrsi3_15-ashrsi3_table 86 .byte ashrsi3_16-ashrsi3_table 87 .byte ashrsi3_17-ashrsi3_table 88 .byte ashrsi3_18-ashrsi3_table 89 .byte ashrsi3_19-ashrsi3_table 90 .byte ashrsi3_20-ashrsi3_table 91 .byte ashrsi3_21-ashrsi3_table 92 .byte ashrsi3_22-ashrsi3_table 93 .byte ashrsi3_23-ashrsi3_table 94 .byte ashrsi3_24-ashrsi3_table 95 .byte ashrsi3_25-ashrsi3_table 96 .byte ashrsi3_26-ashrsi3_table 97 .byte ashrsi3_27-ashrsi3_table 98 .byte ashrsi3_28-ashrsi3_table 99 .byte ashrsi3_29-ashrsi3_table 100 .byte ashrsi3_30-ashrsi3_table 101 .byte ashrsi3_31-ashrsi3_table 102 103 ashrsi3_31: 104 rotcl r0 105 rts 106 subc r0,r0 107 108 ashrsi3_30: 109 shar r0 110 ashrsi3_29: 111 shar r0 112 ashrsi3_28: 113 shar r0 114 ashrsi3_27: 115 shar r0 116 ashrsi3_26: 117 shar r0 118 ashrsi3_25: 119 shar r0 120 ashrsi3_24: 121 shlr16 r0 122 shlr8 r0 123 rts 124 exts.b r0,r0 125 126 ashrsi3_23: 127 shar r0 128 ashrsi3_22: 129 shar r0 130 ashrsi3_21: 131 shar r0 132 ashrsi3_20: 133 shar r0 134 ashrsi3_19: 135 shar r0 136 ashrsi3_18: 137 shar r0 138 ashrsi3_17: 139 shar r0 140 ashrsi3_16: 141 shlr16 r0 142 rts 143 exts.w r0,r0 144 145 ashrsi3_15: 146 shar r0 147 ashrsi3_14: 148 shar r0 149 ashrsi3_13: 150 shar r0 151 ashrsi3_12: 152 shar r0 153 ashrsi3_11: 154 shar r0 155 ashrsi3_10: 156 shar r0 157 ashrsi3_9: 158 shar r0 159 ashrsi3_8: 160 shar r0 161 ashrsi3_7: 162 shar r0 163 ashrsi3_6: 164 shar r0 165 ashrsi3_5: 166 shar r0 167 ashrsi3_4: 168 shar r0 169 ashrsi3_3: 170 shar r0 171 ashrsi3_2: 172 shar r0 173 ashrsi3_1: 174 rts 175 shar r0 176 177 ashrsi3_0: 178 rts 179 nop
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.