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