_millicodethunk.S 5.4 KB

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