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