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 51SYM(__st_r13_to_r25): 52 st r25, [sp,48] 53SYM(__st_r13_to_r24): 54 st r24, [sp,44] 55SYM(__st_r13_to_r23): 56 st r23, [sp,40] 57SYM(__st_r13_to_r22): 58 st r22, [sp,36] 59SYM(__st_r13_to_r21): 60 st r21, [sp,32] 61SYM(__st_r13_to_r20): 62 st r20, [sp,28] 63SYM(__st_r13_to_r19): 64 st r19, [sp,24] 65SYM(__st_r13_to_r18): 66 st r18, [sp,20] 67SYM(__st_r13_to_r17): 68 st r17, [sp,16] 69SYM(__st_r13_to_r16): 70 st r16, [sp,12] 71SYM(__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) 119SYM(__ld_r13_to_r25): 120 ld r25, [sp,48] 121SYM(__ld_r13_to_r24): 122 ld r24, [sp,44] 123SYM(__ld_r13_to_r23): 124 ld r23, [sp,40] 125SYM(__ld_r13_to_r22): 126 ld r22, [sp,36] 127SYM(__ld_r13_to_r21): 128 ld r21, [sp,32] 129SYM(__ld_r13_to_r20): 130 ld r20, [sp,28] 131SYM(__ld_r13_to_r19): 132 ld r19, [sp,24] 133SYM(__ld_r13_to_r18): 134 ld r18, [sp,20] 135SYM(__ld_r13_to_r17): 136 ld r17, [sp,16] 137SYM(__ld_r13_to_r16): 138 ld r16, [sp,12] 139SYM(__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 186SYM(__ld_r13_to_r25_ret): 187 ld r25, [sp,48] 188SYM(__ld_r13_to_r24_ret): 189 ld r24, [sp,44] 190SYM(__ld_r13_to_r23_ret): 191 ld r23, [sp,40] 192SYM(__ld_r13_to_r22_ret): 193 ld r22, [sp,36] 194SYM(__ld_r13_to_r21_ret): 195 ld r21, [sp,32] 196SYM(__ld_r13_to_r20_ret): 197 ld r20, [sp,28] 198SYM(__ld_r13_to_r19_ret): 199 ld r19, [sp,24] 200SYM(__ld_r13_to_r18_ret): 201 ld r18, [sp,20] 202SYM(__ld_r13_to_r17_ret): 203 ld r17, [sp,16] 204SYM(__ld_r13_to_r16_ret): 205 ld r16, [sp,12] 206SYM(__ld_r13_to_r15_ret): 207 ld r15, [sp,8] 208SYM(__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