1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 1995, 1997, 2007-2013 Free Software Foundation, Inc. 4 */ 5 6 /* ANSI concatenation macros. */ 7 8 #define CONCAT1(a, b) CONCAT2(a, b) 9 #define CONCAT2(a, b) a ## b 10 11 /* Use the right prefix for global labels. */ 12 13 #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) 14 15 #ifndef WORKING_ASSEMBLER 16 #define abs_l abs 17 #define asl_l asl 18 #define mov_l mov 19 #endif 20 21 #define FUNC(X) .type SYM(X),@function 22 #define HIDDEN_FUNC(X) FUNC(X)` .hidden X 23 #define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X 24 #define ENDFUNC(X) ENDFUNC0(X) 25 26 .section .text 27 .align 4 28 .global SYM(__st_r13_to_r15) 29 .global SYM(__st_r13_to_r16) 30 .global SYM(__st_r13_to_r17) 31 .global SYM(__st_r13_to_r18) 32 .global SYM(__st_r13_to_r19) 33 .global SYM(__st_r13_to_r20) 34 .global SYM(__st_r13_to_r21) 35 .global SYM(__st_r13_to_r22) 36 .global SYM(__st_r13_to_r23) 37 .global SYM(__st_r13_to_r24) 38 .global SYM(__st_r13_to_r25) 39 HIDDEN_FUNC(__st_r13_to_r15) 40 HIDDEN_FUNC(__st_r13_to_r16) 41 HIDDEN_FUNC(__st_r13_to_r17) 42 HIDDEN_FUNC(__st_r13_to_r18) 43 HIDDEN_FUNC(__st_r13_to_r19) 44 HIDDEN_FUNC(__st_r13_to_r20) 45 HIDDEN_FUNC(__st_r13_to_r21) 46 HIDDEN_FUNC(__st_r13_to_r22) 47 HIDDEN_FUNC(__st_r13_to_r23) 48 HIDDEN_FUNC(__st_r13_to_r24) 49 HIDDEN_FUNC(__st_r13_to_r25) 50 .align 4 51 SYM(__st_r13_to_r25): 52 st r25, [sp,48] 53 SYM(__st_r13_to_r24): 54 st r24, [sp,44] 55 SYM(__st_r13_to_r23): 56 st r23, [sp,40] 57 SYM(__st_r13_to_r22): 58 st r22, [sp,36] 59 SYM(__st_r13_to_r21): 60 st r21, [sp,32] 61 SYM(__st_r13_to_r20): 62 st r20, [sp,28] 63 SYM(__st_r13_to_r19): 64 st r19, [sp,24] 65 SYM(__st_r13_to_r18): 66 st r18, [sp,20] 67 SYM(__st_r13_to_r17): 68 st r17, [sp,16] 69 SYM(__st_r13_to_r16): 70 st r16, [sp,12] 71 SYM(__st_r13_to_r15): 72 #ifdef __ARC700__ 73 st r15, [sp,8] ; minimum function size to avoid stall: 6 bytes. 74 #else 75 st_s r15, [sp,8] 76 #endif 77 st_s r14, [sp,4] 78 j_s.d [%blink] 79 st_s r13, [sp,0] 80 ENDFUNC(__st_r13_to_r15) 81 ENDFUNC(__st_r13_to_r16) 82 ENDFUNC(__st_r13_to_r17) 83 ENDFUNC(__st_r13_to_r18) 84 ENDFUNC(__st_r13_to_r19) 85 ENDFUNC(__st_r13_to_r20) 86 ENDFUNC(__st_r13_to_r21) 87 ENDFUNC(__st_r13_to_r22) 88 ENDFUNC(__st_r13_to_r23) 89 ENDFUNC(__st_r13_to_r24) 90 ENDFUNC(__st_r13_to_r25) 91 92 .section .text 93 .align 4 94 ; ================================== 95 ; the loads 96 97 .global SYM(__ld_r13_to_r15) 98 .global SYM(__ld_r13_to_r16) 99 .global SYM(__ld_r13_to_r17) 100 .global SYM(__ld_r13_to_r18) 101 .global SYM(__ld_r13_to_r19) 102 .global SYM(__ld_r13_to_r20) 103 .global SYM(__ld_r13_to_r21) 104 .global SYM(__ld_r13_to_r22) 105 .global SYM(__ld_r13_to_r23) 106 .global SYM(__ld_r13_to_r24) 107 .global SYM(__ld_r13_to_r25) 108 HIDDEN_FUNC(__ld_r13_to_r15) 109 HIDDEN_FUNC(__ld_r13_to_r16) 110 HIDDEN_FUNC(__ld_r13_to_r17) 111 HIDDEN_FUNC(__ld_r13_to_r18) 112 HIDDEN_FUNC(__ld_r13_to_r19) 113 HIDDEN_FUNC(__ld_r13_to_r20) 114 HIDDEN_FUNC(__ld_r13_to_r21) 115 HIDDEN_FUNC(__ld_r13_to_r22) 116 HIDDEN_FUNC(__ld_r13_to_r23) 117 HIDDEN_FUNC(__ld_r13_to_r24) 118 HIDDEN_FUNC(__ld_r13_to_r25) 119 SYM(__ld_r13_to_r25): 120 ld r25, [sp,48] 121 SYM(__ld_r13_to_r24): 122 ld r24, [sp,44] 123 SYM(__ld_r13_to_r23): 124 ld r23, [sp,40] 125 SYM(__ld_r13_to_r22): 126 ld r22, [sp,36] 127 SYM(__ld_r13_to_r21): 128 ld r21, [sp,32] 129 SYM(__ld_r13_to_r20): 130 ld r20, [sp,28] 131 SYM(__ld_r13_to_r19): 132 ld r19, [sp,24] 133 SYM(__ld_r13_to_r18): 134 ld r18, [sp,20] 135 SYM(__ld_r13_to_r17): 136 ld r17, [sp,16] 137 SYM(__ld_r13_to_r16): 138 ld r16, [sp,12] 139 SYM(__ld_r13_to_r15): 140 #ifdef __ARC700__ 141 ld r15, [sp,8] ; minimum function size to avoid stall: 6 bytes. 142 #else 143 ld_s r15, [sp,8] 144 #endif 145 ld_s r14, [sp,4] 146 j_s.d [%blink] 147 ld_s r13, [sp,0] 148 ENDFUNC(__ld_r13_to_r15) 149 ENDFUNC(__ld_r13_to_r16) 150 ENDFUNC(__ld_r13_to_r17) 151 ENDFUNC(__ld_r13_to_r18) 152 ENDFUNC(__ld_r13_to_r19) 153 ENDFUNC(__ld_r13_to_r20) 154 ENDFUNC(__ld_r13_to_r21) 155 ENDFUNC(__ld_r13_to_r22) 156 ENDFUNC(__ld_r13_to_r23) 157 ENDFUNC(__ld_r13_to_r24) 158 ENDFUNC(__ld_r13_to_r25) 159 160 .global SYM(__ld_r13_to_r14_ret) 161 .global SYM(__ld_r13_to_r15_ret) 162 .global SYM(__ld_r13_to_r16_ret) 163 .global SYM(__ld_r13_to_r17_ret) 164 .global SYM(__ld_r13_to_r18_ret) 165 .global SYM(__ld_r13_to_r19_ret) 166 .global SYM(__ld_r13_to_r20_ret) 167 .global SYM(__ld_r13_to_r21_ret) 168 .global SYM(__ld_r13_to_r22_ret) 169 .global SYM(__ld_r13_to_r23_ret) 170 .global SYM(__ld_r13_to_r24_ret) 171 .global SYM(__ld_r13_to_r25_ret) 172 HIDDEN_FUNC(__ld_r13_to_r14_ret) 173 HIDDEN_FUNC(__ld_r13_to_r15_ret) 174 HIDDEN_FUNC(__ld_r13_to_r16_ret) 175 HIDDEN_FUNC(__ld_r13_to_r17_ret) 176 HIDDEN_FUNC(__ld_r13_to_r18_ret) 177 HIDDEN_FUNC(__ld_r13_to_r19_ret) 178 HIDDEN_FUNC(__ld_r13_to_r20_ret) 179 HIDDEN_FUNC(__ld_r13_to_r21_ret) 180 HIDDEN_FUNC(__ld_r13_to_r22_ret) 181 HIDDEN_FUNC(__ld_r13_to_r23_ret) 182 HIDDEN_FUNC(__ld_r13_to_r24_ret) 183 HIDDEN_FUNC(__ld_r13_to_r25_ret) 184 .section .text 185 .align 4 186 SYM(__ld_r13_to_r25_ret): 187 ld r25, [sp,48] 188 SYM(__ld_r13_to_r24_ret): 189 ld r24, [sp,44] 190 SYM(__ld_r13_to_r23_ret): 191 ld r23, [sp,40] 192 SYM(__ld_r13_to_r22_ret): 193 ld r22, [sp,36] 194 SYM(__ld_r13_to_r21_ret): 195 ld r21, [sp,32] 196 SYM(__ld_r13_to_r20_ret): 197 ld r20, [sp,28] 198 SYM(__ld_r13_to_r19_ret): 199 ld r19, [sp,24] 200 SYM(__ld_r13_to_r18_ret): 201 ld r18, [sp,20] 202 SYM(__ld_r13_to_r17_ret): 203 ld r17, [sp,16] 204 SYM(__ld_r13_to_r16_ret): 205 ld r16, [sp,12] 206 SYM(__ld_r13_to_r15_ret): 207 ld r15, [sp,8] 208 SYM(__ld_r13_to_r14_ret): 209 ld blink,[sp,r12] 210 ld_s r14, [sp,4] 211 ld.ab r13, [sp,r12] 212 j_s.d [%blink] 213 add_s sp,sp,4 214 ENDFUNC(__ld_r13_to_r14_ret) 215 ENDFUNC(__ld_r13_to_r15_ret) 216 ENDFUNC(__ld_r13_to_r16_ret) 217 ENDFUNC(__ld_r13_to_r17_ret) 218 ENDFUNC(__ld_r13_to_r18_ret) 219 ENDFUNC(__ld_r13_to_r19_ret) 220 ENDFUNC(__ld_r13_to_r20_ret) 221 ENDFUNC(__ld_r13_to_r21_ret) 222 ENDFUNC(__ld_r13_to_r22_ret) 223 ENDFUNC(__ld_r13_to_r23_ret) 224 ENDFUNC(__ld_r13_to_r24_ret) 225 ENDFUNC(__ld_r13_to_r25_ret) 226