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 ! __ashlsi3 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 ! __ashlsi3_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 52 .global __ashlsi3 53 .global __ashlsi3_r0 54 55 .align 2 56 __ashlsi3: 57 mov r5,r0 58 .align 2 59 __ashlsi3_r0: 60 and #31,r0 61 mov.l r4,@-r15 62 mov r0,r4 63 mova ashlsi3_table,r0 64 mov.b @(r0,r4),r4 65 add r4,r0 66 jmp @r0 67 mov.l @r15+,r0 68 69 .align 2 70 ashlsi3_table: 71 .byte ashlsi3_0-ashlsi3_table 72 .byte ashlsi3_1-ashlsi3_table 73 .byte ashlsi3_2-ashlsi3_table 74 .byte ashlsi3_3-ashlsi3_table 75 .byte ashlsi3_4-ashlsi3_table 76 .byte ashlsi3_5-ashlsi3_table 77 .byte ashlsi3_6-ashlsi3_table 78 .byte ashlsi3_7-ashlsi3_table 79 .byte ashlsi3_8-ashlsi3_table 80 .byte ashlsi3_9-ashlsi3_table 81 .byte ashlsi3_10-ashlsi3_table 82 .byte ashlsi3_11-ashlsi3_table 83 .byte ashlsi3_12-ashlsi3_table 84 .byte ashlsi3_13-ashlsi3_table 85 .byte ashlsi3_14-ashlsi3_table 86 .byte ashlsi3_15-ashlsi3_table 87 .byte ashlsi3_16-ashlsi3_table 88 .byte ashlsi3_17-ashlsi3_table 89 .byte ashlsi3_18-ashlsi3_table 90 .byte ashlsi3_19-ashlsi3_table 91 .byte ashlsi3_20-ashlsi3_table 92 .byte ashlsi3_21-ashlsi3_table 93 .byte ashlsi3_22-ashlsi3_table 94 .byte ashlsi3_23-ashlsi3_table 95 .byte ashlsi3_24-ashlsi3_table 96 .byte ashlsi3_25-ashlsi3_table 97 .byte ashlsi3_26-ashlsi3_table 98 .byte ashlsi3_27-ashlsi3_table 99 .byte ashlsi3_28-ashlsi3_table 100 .byte ashlsi3_29-ashlsi3_table 101 .byte ashlsi3_30-ashlsi3_table 102 .byte ashlsi3_31-ashlsi3_table 103 104 ashlsi3_6: 105 shll2 r0 106 ashlsi3_4: 107 shll2 r0 108 ashlsi3_2: 109 rts 110 shll2 r0 111 112 ashlsi3_7: 113 shll2 r0 114 ashlsi3_5: 115 shll2 r0 116 ashlsi3_3: 117 shll2 r0 118 ashlsi3_1: 119 rts 120 shll r0 121 122 ashlsi3_14: 123 shll2 r0 124 ashlsi3_12: 125 shll2 r0 126 ashlsi3_10: 127 shll2 r0 128 ashlsi3_8: 129 rts 130 shll8 r0 131 132 ashlsi3_15: 133 shll2 r0 134 ashlsi3_13: 135 shll2 r0 136 ashlsi3_11: 137 shll2 r0 138 ashlsi3_9: 139 shll8 r0 140 rts 141 shll r0 142 143 ashlsi3_22: 144 shll2 r0 145 ashlsi3_20: 146 shll2 r0 147 ashlsi3_18: 148 shll2 r0 149 ashlsi3_16: 150 rts 151 shll16 r0 152 153 ashlsi3_23: 154 shll2 r0 155 ashlsi3_21: 156 shll2 r0 157 ashlsi3_19: 158 shll2 r0 159 ashlsi3_17: 160 shll16 r0 161 rts 162 shll r0 163 164 ashlsi3_30: 165 shll2 r0 166 ashlsi3_28: 167 shll2 r0 168 ashlsi3_26: 169 shll2 r0 170 ashlsi3_24: 171 shll16 r0 172 rts 173 shll8 r0 174 175 ashlsi3_31: 176 shll2 r0 177 ashlsi3_29: 178 shll2 r0 179 ashlsi3_27: 180 shll2 r0 181 ashlsi3_25: 182 shll16 r0 183 shll8 r0 184 rts 185 shll r0 186 187 ashlsi3_0: 188 rts 189 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.