trampoline-armv8.S 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761
  1. // This file is generated from a similarly-named Perl script in the BoringSSL
  2. // source tree. Do not edit by hand.
  3. #if !defined(__has_feature)
  4. #define __has_feature(x) 0
  5. #endif
  6. #if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
  7. #define OPENSSL_NO_ASM
  8. #endif
  9. #if !defined(OPENSSL_NO_ASM)
  10. #if defined(__aarch64__)
  11. #if defined(BORINGSSL_PREFIX)
  12. #include <boringssl_prefix_symbols_asm.h>
  13. #endif
  14. #include <openssl/arm_arch.h>
  15. .text
  16. // abi_test_trampoline loads callee-saved registers from |state|, calls |func|
  17. // with |argv|, then saves the callee-saved registers into |state|. It returns
  18. // the result of |func|. The |unwind| argument is unused.
  19. // uint64_t abi_test_trampoline(void (*func)(...), CallerState *state,
  20. // const uint64_t *argv, size_t argc,
  21. // uint64_t unwind);
  22. .type abi_test_trampoline, %function
  23. .globl abi_test_trampoline
  24. .hidden abi_test_trampoline
  25. .align 4
  26. abi_test_trampoline:
  27. .Labi_test_trampoline_begin:
  28. AARCH64_SIGN_LINK_REGISTER
  29. // Stack layout (low to high addresses)
  30. // x29,x30 (16 bytes)
  31. // d8-d15 (64 bytes)
  32. // x19-x28 (80 bytes)
  33. // x1 (8 bytes)
  34. // padding (8 bytes)
  35. stp x29, x30, [sp, #-176]!
  36. mov x29, sp
  37. // Saved callee-saved registers and |state|.
  38. stp d8, d9, [sp, #16]
  39. stp d10, d11, [sp, #32]
  40. stp d12, d13, [sp, #48]
  41. stp d14, d15, [sp, #64]
  42. stp x19, x20, [sp, #80]
  43. stp x21, x22, [sp, #96]
  44. stp x23, x24, [sp, #112]
  45. stp x25, x26, [sp, #128]
  46. stp x27, x28, [sp, #144]
  47. str x1, [sp, #160]
  48. // Load registers from |state|, with the exception of x29. x29 is the
  49. // frame pointer and also callee-saved, but AAPCS64 allows platforms to
  50. // mandate that x29 always point to a frame. iOS64 does so, which means
  51. // we cannot fill x29 with entropy without violating ABI rules
  52. // ourselves. x29 is tested separately below.
  53. ldp d8, d9, [x1], #16
  54. ldp d10, d11, [x1], #16
  55. ldp d12, d13, [x1], #16
  56. ldp d14, d15, [x1], #16
  57. ldp x19, x20, [x1], #16
  58. ldp x21, x22, [x1], #16
  59. ldp x23, x24, [x1], #16
  60. ldp x25, x26, [x1], #16
  61. ldp x27, x28, [x1], #16
  62. // Move parameters into temporary registers.
  63. mov x9, x0
  64. mov x10, x2
  65. mov x11, x3
  66. // Load parameters into registers.
  67. cbz x11, .Largs_done
  68. ldr x0, [x10], #8
  69. subs x11, x11, #1
  70. b.eq .Largs_done
  71. ldr x1, [x10], #8
  72. subs x11, x11, #1
  73. b.eq .Largs_done
  74. ldr x2, [x10], #8
  75. subs x11, x11, #1
  76. b.eq .Largs_done
  77. ldr x3, [x10], #8
  78. subs x11, x11, #1
  79. b.eq .Largs_done
  80. ldr x4, [x10], #8
  81. subs x11, x11, #1
  82. b.eq .Largs_done
  83. ldr x5, [x10], #8
  84. subs x11, x11, #1
  85. b.eq .Largs_done
  86. ldr x6, [x10], #8
  87. subs x11, x11, #1
  88. b.eq .Largs_done
  89. ldr x7, [x10], #8
  90. .Largs_done:
  91. blr x9
  92. // Reload |state| and store registers.
  93. ldr x1, [sp, #160]
  94. stp d8, d9, [x1], #16
  95. stp d10, d11, [x1], #16
  96. stp d12, d13, [x1], #16
  97. stp d14, d15, [x1], #16
  98. stp x19, x20, [x1], #16
  99. stp x21, x22, [x1], #16
  100. stp x23, x24, [x1], #16
  101. stp x25, x26, [x1], #16
  102. stp x27, x28, [x1], #16
  103. // |func| is required to preserve x29, the frame pointer. We cannot load
  104. // random values into x29 (see comment above), so compare it against the
  105. // expected value and zero the field of |state| if corrupted.
  106. mov x9, sp
  107. cmp x29, x9
  108. b.eq .Lx29_ok
  109. str xzr, [x1]
  110. .Lx29_ok:
  111. // Restore callee-saved registers.
  112. ldp d8, d9, [sp, #16]
  113. ldp d10, d11, [sp, #32]
  114. ldp d12, d13, [sp, #48]
  115. ldp d14, d15, [sp, #64]
  116. ldp x19, x20, [sp, #80]
  117. ldp x21, x22, [sp, #96]
  118. ldp x23, x24, [sp, #112]
  119. ldp x25, x26, [sp, #128]
  120. ldp x27, x28, [sp, #144]
  121. ldp x29, x30, [sp], #176
  122. AARCH64_VALIDATE_LINK_REGISTER
  123. ret
  124. .size abi_test_trampoline,.-abi_test_trampoline
  125. .type abi_test_clobber_x0, %function
  126. .globl abi_test_clobber_x0
  127. .hidden abi_test_clobber_x0
  128. .align 4
  129. abi_test_clobber_x0:
  130. AARCH64_VALID_CALL_TARGET
  131. mov x0, xzr
  132. ret
  133. .size abi_test_clobber_x0,.-abi_test_clobber_x0
  134. .type abi_test_clobber_x1, %function
  135. .globl abi_test_clobber_x1
  136. .hidden abi_test_clobber_x1
  137. .align 4
  138. abi_test_clobber_x1:
  139. AARCH64_VALID_CALL_TARGET
  140. mov x1, xzr
  141. ret
  142. .size abi_test_clobber_x1,.-abi_test_clobber_x1
  143. .type abi_test_clobber_x2, %function
  144. .globl abi_test_clobber_x2
  145. .hidden abi_test_clobber_x2
  146. .align 4
  147. abi_test_clobber_x2:
  148. AARCH64_VALID_CALL_TARGET
  149. mov x2, xzr
  150. ret
  151. .size abi_test_clobber_x2,.-abi_test_clobber_x2
  152. .type abi_test_clobber_x3, %function
  153. .globl abi_test_clobber_x3
  154. .hidden abi_test_clobber_x3
  155. .align 4
  156. abi_test_clobber_x3:
  157. AARCH64_VALID_CALL_TARGET
  158. mov x3, xzr
  159. ret
  160. .size abi_test_clobber_x3,.-abi_test_clobber_x3
  161. .type abi_test_clobber_x4, %function
  162. .globl abi_test_clobber_x4
  163. .hidden abi_test_clobber_x4
  164. .align 4
  165. abi_test_clobber_x4:
  166. AARCH64_VALID_CALL_TARGET
  167. mov x4, xzr
  168. ret
  169. .size abi_test_clobber_x4,.-abi_test_clobber_x4
  170. .type abi_test_clobber_x5, %function
  171. .globl abi_test_clobber_x5
  172. .hidden abi_test_clobber_x5
  173. .align 4
  174. abi_test_clobber_x5:
  175. AARCH64_VALID_CALL_TARGET
  176. mov x5, xzr
  177. ret
  178. .size abi_test_clobber_x5,.-abi_test_clobber_x5
  179. .type abi_test_clobber_x6, %function
  180. .globl abi_test_clobber_x6
  181. .hidden abi_test_clobber_x6
  182. .align 4
  183. abi_test_clobber_x6:
  184. AARCH64_VALID_CALL_TARGET
  185. mov x6, xzr
  186. ret
  187. .size abi_test_clobber_x6,.-abi_test_clobber_x6
  188. .type abi_test_clobber_x7, %function
  189. .globl abi_test_clobber_x7
  190. .hidden abi_test_clobber_x7
  191. .align 4
  192. abi_test_clobber_x7:
  193. AARCH64_VALID_CALL_TARGET
  194. mov x7, xzr
  195. ret
  196. .size abi_test_clobber_x7,.-abi_test_clobber_x7
  197. .type abi_test_clobber_x8, %function
  198. .globl abi_test_clobber_x8
  199. .hidden abi_test_clobber_x8
  200. .align 4
  201. abi_test_clobber_x8:
  202. AARCH64_VALID_CALL_TARGET
  203. mov x8, xzr
  204. ret
  205. .size abi_test_clobber_x8,.-abi_test_clobber_x8
  206. .type abi_test_clobber_x9, %function
  207. .globl abi_test_clobber_x9
  208. .hidden abi_test_clobber_x9
  209. .align 4
  210. abi_test_clobber_x9:
  211. AARCH64_VALID_CALL_TARGET
  212. mov x9, xzr
  213. ret
  214. .size abi_test_clobber_x9,.-abi_test_clobber_x9
  215. .type abi_test_clobber_x10, %function
  216. .globl abi_test_clobber_x10
  217. .hidden abi_test_clobber_x10
  218. .align 4
  219. abi_test_clobber_x10:
  220. AARCH64_VALID_CALL_TARGET
  221. mov x10, xzr
  222. ret
  223. .size abi_test_clobber_x10,.-abi_test_clobber_x10
  224. .type abi_test_clobber_x11, %function
  225. .globl abi_test_clobber_x11
  226. .hidden abi_test_clobber_x11
  227. .align 4
  228. abi_test_clobber_x11:
  229. AARCH64_VALID_CALL_TARGET
  230. mov x11, xzr
  231. ret
  232. .size abi_test_clobber_x11,.-abi_test_clobber_x11
  233. .type abi_test_clobber_x12, %function
  234. .globl abi_test_clobber_x12
  235. .hidden abi_test_clobber_x12
  236. .align 4
  237. abi_test_clobber_x12:
  238. AARCH64_VALID_CALL_TARGET
  239. mov x12, xzr
  240. ret
  241. .size abi_test_clobber_x12,.-abi_test_clobber_x12
  242. .type abi_test_clobber_x13, %function
  243. .globl abi_test_clobber_x13
  244. .hidden abi_test_clobber_x13
  245. .align 4
  246. abi_test_clobber_x13:
  247. AARCH64_VALID_CALL_TARGET
  248. mov x13, xzr
  249. ret
  250. .size abi_test_clobber_x13,.-abi_test_clobber_x13
  251. .type abi_test_clobber_x14, %function
  252. .globl abi_test_clobber_x14
  253. .hidden abi_test_clobber_x14
  254. .align 4
  255. abi_test_clobber_x14:
  256. AARCH64_VALID_CALL_TARGET
  257. mov x14, xzr
  258. ret
  259. .size abi_test_clobber_x14,.-abi_test_clobber_x14
  260. .type abi_test_clobber_x15, %function
  261. .globl abi_test_clobber_x15
  262. .hidden abi_test_clobber_x15
  263. .align 4
  264. abi_test_clobber_x15:
  265. AARCH64_VALID_CALL_TARGET
  266. mov x15, xzr
  267. ret
  268. .size abi_test_clobber_x15,.-abi_test_clobber_x15
  269. .type abi_test_clobber_x16, %function
  270. .globl abi_test_clobber_x16
  271. .hidden abi_test_clobber_x16
  272. .align 4
  273. abi_test_clobber_x16:
  274. AARCH64_VALID_CALL_TARGET
  275. mov x16, xzr
  276. ret
  277. .size abi_test_clobber_x16,.-abi_test_clobber_x16
  278. .type abi_test_clobber_x17, %function
  279. .globl abi_test_clobber_x17
  280. .hidden abi_test_clobber_x17
  281. .align 4
  282. abi_test_clobber_x17:
  283. AARCH64_VALID_CALL_TARGET
  284. mov x17, xzr
  285. ret
  286. .size abi_test_clobber_x17,.-abi_test_clobber_x17
  287. .type abi_test_clobber_x19, %function
  288. .globl abi_test_clobber_x19
  289. .hidden abi_test_clobber_x19
  290. .align 4
  291. abi_test_clobber_x19:
  292. AARCH64_VALID_CALL_TARGET
  293. mov x19, xzr
  294. ret
  295. .size abi_test_clobber_x19,.-abi_test_clobber_x19
  296. .type abi_test_clobber_x20, %function
  297. .globl abi_test_clobber_x20
  298. .hidden abi_test_clobber_x20
  299. .align 4
  300. abi_test_clobber_x20:
  301. AARCH64_VALID_CALL_TARGET
  302. mov x20, xzr
  303. ret
  304. .size abi_test_clobber_x20,.-abi_test_clobber_x20
  305. .type abi_test_clobber_x21, %function
  306. .globl abi_test_clobber_x21
  307. .hidden abi_test_clobber_x21
  308. .align 4
  309. abi_test_clobber_x21:
  310. AARCH64_VALID_CALL_TARGET
  311. mov x21, xzr
  312. ret
  313. .size abi_test_clobber_x21,.-abi_test_clobber_x21
  314. .type abi_test_clobber_x22, %function
  315. .globl abi_test_clobber_x22
  316. .hidden abi_test_clobber_x22
  317. .align 4
  318. abi_test_clobber_x22:
  319. AARCH64_VALID_CALL_TARGET
  320. mov x22, xzr
  321. ret
  322. .size abi_test_clobber_x22,.-abi_test_clobber_x22
  323. .type abi_test_clobber_x23, %function
  324. .globl abi_test_clobber_x23
  325. .hidden abi_test_clobber_x23
  326. .align 4
  327. abi_test_clobber_x23:
  328. AARCH64_VALID_CALL_TARGET
  329. mov x23, xzr
  330. ret
  331. .size abi_test_clobber_x23,.-abi_test_clobber_x23
  332. .type abi_test_clobber_x24, %function
  333. .globl abi_test_clobber_x24
  334. .hidden abi_test_clobber_x24
  335. .align 4
  336. abi_test_clobber_x24:
  337. AARCH64_VALID_CALL_TARGET
  338. mov x24, xzr
  339. ret
  340. .size abi_test_clobber_x24,.-abi_test_clobber_x24
  341. .type abi_test_clobber_x25, %function
  342. .globl abi_test_clobber_x25
  343. .hidden abi_test_clobber_x25
  344. .align 4
  345. abi_test_clobber_x25:
  346. AARCH64_VALID_CALL_TARGET
  347. mov x25, xzr
  348. ret
  349. .size abi_test_clobber_x25,.-abi_test_clobber_x25
  350. .type abi_test_clobber_x26, %function
  351. .globl abi_test_clobber_x26
  352. .hidden abi_test_clobber_x26
  353. .align 4
  354. abi_test_clobber_x26:
  355. AARCH64_VALID_CALL_TARGET
  356. mov x26, xzr
  357. ret
  358. .size abi_test_clobber_x26,.-abi_test_clobber_x26
  359. .type abi_test_clobber_x27, %function
  360. .globl abi_test_clobber_x27
  361. .hidden abi_test_clobber_x27
  362. .align 4
  363. abi_test_clobber_x27:
  364. AARCH64_VALID_CALL_TARGET
  365. mov x27, xzr
  366. ret
  367. .size abi_test_clobber_x27,.-abi_test_clobber_x27
  368. .type abi_test_clobber_x28, %function
  369. .globl abi_test_clobber_x28
  370. .hidden abi_test_clobber_x28
  371. .align 4
  372. abi_test_clobber_x28:
  373. AARCH64_VALID_CALL_TARGET
  374. mov x28, xzr
  375. ret
  376. .size abi_test_clobber_x28,.-abi_test_clobber_x28
  377. .type abi_test_clobber_x29, %function
  378. .globl abi_test_clobber_x29
  379. .hidden abi_test_clobber_x29
  380. .align 4
  381. abi_test_clobber_x29:
  382. AARCH64_VALID_CALL_TARGET
  383. mov x29, xzr
  384. ret
  385. .size abi_test_clobber_x29,.-abi_test_clobber_x29
  386. .type abi_test_clobber_d0, %function
  387. .globl abi_test_clobber_d0
  388. .hidden abi_test_clobber_d0
  389. .align 4
  390. abi_test_clobber_d0:
  391. AARCH64_VALID_CALL_TARGET
  392. fmov d0, xzr
  393. ret
  394. .size abi_test_clobber_d0,.-abi_test_clobber_d0
  395. .type abi_test_clobber_d1, %function
  396. .globl abi_test_clobber_d1
  397. .hidden abi_test_clobber_d1
  398. .align 4
  399. abi_test_clobber_d1:
  400. AARCH64_VALID_CALL_TARGET
  401. fmov d1, xzr
  402. ret
  403. .size abi_test_clobber_d1,.-abi_test_clobber_d1
  404. .type abi_test_clobber_d2, %function
  405. .globl abi_test_clobber_d2
  406. .hidden abi_test_clobber_d2
  407. .align 4
  408. abi_test_clobber_d2:
  409. AARCH64_VALID_CALL_TARGET
  410. fmov d2, xzr
  411. ret
  412. .size abi_test_clobber_d2,.-abi_test_clobber_d2
  413. .type abi_test_clobber_d3, %function
  414. .globl abi_test_clobber_d3
  415. .hidden abi_test_clobber_d3
  416. .align 4
  417. abi_test_clobber_d3:
  418. AARCH64_VALID_CALL_TARGET
  419. fmov d3, xzr
  420. ret
  421. .size abi_test_clobber_d3,.-abi_test_clobber_d3
  422. .type abi_test_clobber_d4, %function
  423. .globl abi_test_clobber_d4
  424. .hidden abi_test_clobber_d4
  425. .align 4
  426. abi_test_clobber_d4:
  427. AARCH64_VALID_CALL_TARGET
  428. fmov d4, xzr
  429. ret
  430. .size abi_test_clobber_d4,.-abi_test_clobber_d4
  431. .type abi_test_clobber_d5, %function
  432. .globl abi_test_clobber_d5
  433. .hidden abi_test_clobber_d5
  434. .align 4
  435. abi_test_clobber_d5:
  436. AARCH64_VALID_CALL_TARGET
  437. fmov d5, xzr
  438. ret
  439. .size abi_test_clobber_d5,.-abi_test_clobber_d5
  440. .type abi_test_clobber_d6, %function
  441. .globl abi_test_clobber_d6
  442. .hidden abi_test_clobber_d6
  443. .align 4
  444. abi_test_clobber_d6:
  445. AARCH64_VALID_CALL_TARGET
  446. fmov d6, xzr
  447. ret
  448. .size abi_test_clobber_d6,.-abi_test_clobber_d6
  449. .type abi_test_clobber_d7, %function
  450. .globl abi_test_clobber_d7
  451. .hidden abi_test_clobber_d7
  452. .align 4
  453. abi_test_clobber_d7:
  454. AARCH64_VALID_CALL_TARGET
  455. fmov d7, xzr
  456. ret
  457. .size abi_test_clobber_d7,.-abi_test_clobber_d7
  458. .type abi_test_clobber_d8, %function
  459. .globl abi_test_clobber_d8
  460. .hidden abi_test_clobber_d8
  461. .align 4
  462. abi_test_clobber_d8:
  463. AARCH64_VALID_CALL_TARGET
  464. fmov d8, xzr
  465. ret
  466. .size abi_test_clobber_d8,.-abi_test_clobber_d8
  467. .type abi_test_clobber_d9, %function
  468. .globl abi_test_clobber_d9
  469. .hidden abi_test_clobber_d9
  470. .align 4
  471. abi_test_clobber_d9:
  472. AARCH64_VALID_CALL_TARGET
  473. fmov d9, xzr
  474. ret
  475. .size abi_test_clobber_d9,.-abi_test_clobber_d9
  476. .type abi_test_clobber_d10, %function
  477. .globl abi_test_clobber_d10
  478. .hidden abi_test_clobber_d10
  479. .align 4
  480. abi_test_clobber_d10:
  481. AARCH64_VALID_CALL_TARGET
  482. fmov d10, xzr
  483. ret
  484. .size abi_test_clobber_d10,.-abi_test_clobber_d10
  485. .type abi_test_clobber_d11, %function
  486. .globl abi_test_clobber_d11
  487. .hidden abi_test_clobber_d11
  488. .align 4
  489. abi_test_clobber_d11:
  490. AARCH64_VALID_CALL_TARGET
  491. fmov d11, xzr
  492. ret
  493. .size abi_test_clobber_d11,.-abi_test_clobber_d11
  494. .type abi_test_clobber_d12, %function
  495. .globl abi_test_clobber_d12
  496. .hidden abi_test_clobber_d12
  497. .align 4
  498. abi_test_clobber_d12:
  499. AARCH64_VALID_CALL_TARGET
  500. fmov d12, xzr
  501. ret
  502. .size abi_test_clobber_d12,.-abi_test_clobber_d12
  503. .type abi_test_clobber_d13, %function
  504. .globl abi_test_clobber_d13
  505. .hidden abi_test_clobber_d13
  506. .align 4
  507. abi_test_clobber_d13:
  508. AARCH64_VALID_CALL_TARGET
  509. fmov d13, xzr
  510. ret
  511. .size abi_test_clobber_d13,.-abi_test_clobber_d13
  512. .type abi_test_clobber_d14, %function
  513. .globl abi_test_clobber_d14
  514. .hidden abi_test_clobber_d14
  515. .align 4
  516. abi_test_clobber_d14:
  517. AARCH64_VALID_CALL_TARGET
  518. fmov d14, xzr
  519. ret
  520. .size abi_test_clobber_d14,.-abi_test_clobber_d14
  521. .type abi_test_clobber_d15, %function
  522. .globl abi_test_clobber_d15
  523. .hidden abi_test_clobber_d15
  524. .align 4
  525. abi_test_clobber_d15:
  526. AARCH64_VALID_CALL_TARGET
  527. fmov d15, xzr
  528. ret
  529. .size abi_test_clobber_d15,.-abi_test_clobber_d15
  530. .type abi_test_clobber_d16, %function
  531. .globl abi_test_clobber_d16
  532. .hidden abi_test_clobber_d16
  533. .align 4
  534. abi_test_clobber_d16:
  535. AARCH64_VALID_CALL_TARGET
  536. fmov d16, xzr
  537. ret
  538. .size abi_test_clobber_d16,.-abi_test_clobber_d16
  539. .type abi_test_clobber_d17, %function
  540. .globl abi_test_clobber_d17
  541. .hidden abi_test_clobber_d17
  542. .align 4
  543. abi_test_clobber_d17:
  544. AARCH64_VALID_CALL_TARGET
  545. fmov d17, xzr
  546. ret
  547. .size abi_test_clobber_d17,.-abi_test_clobber_d17
  548. .type abi_test_clobber_d18, %function
  549. .globl abi_test_clobber_d18
  550. .hidden abi_test_clobber_d18
  551. .align 4
  552. abi_test_clobber_d18:
  553. AARCH64_VALID_CALL_TARGET
  554. fmov d18, xzr
  555. ret
  556. .size abi_test_clobber_d18,.-abi_test_clobber_d18
  557. .type abi_test_clobber_d19, %function
  558. .globl abi_test_clobber_d19
  559. .hidden abi_test_clobber_d19
  560. .align 4
  561. abi_test_clobber_d19:
  562. AARCH64_VALID_CALL_TARGET
  563. fmov d19, xzr
  564. ret
  565. .size abi_test_clobber_d19,.-abi_test_clobber_d19
  566. .type abi_test_clobber_d20, %function
  567. .globl abi_test_clobber_d20
  568. .hidden abi_test_clobber_d20
  569. .align 4
  570. abi_test_clobber_d20:
  571. AARCH64_VALID_CALL_TARGET
  572. fmov d20, xzr
  573. ret
  574. .size abi_test_clobber_d20,.-abi_test_clobber_d20
  575. .type abi_test_clobber_d21, %function
  576. .globl abi_test_clobber_d21
  577. .hidden abi_test_clobber_d21
  578. .align 4
  579. abi_test_clobber_d21:
  580. AARCH64_VALID_CALL_TARGET
  581. fmov d21, xzr
  582. ret
  583. .size abi_test_clobber_d21,.-abi_test_clobber_d21
  584. .type abi_test_clobber_d22, %function
  585. .globl abi_test_clobber_d22
  586. .hidden abi_test_clobber_d22
  587. .align 4
  588. abi_test_clobber_d22:
  589. AARCH64_VALID_CALL_TARGET
  590. fmov d22, xzr
  591. ret
  592. .size abi_test_clobber_d22,.-abi_test_clobber_d22
  593. .type abi_test_clobber_d23, %function
  594. .globl abi_test_clobber_d23
  595. .hidden abi_test_clobber_d23
  596. .align 4
  597. abi_test_clobber_d23:
  598. AARCH64_VALID_CALL_TARGET
  599. fmov d23, xzr
  600. ret
  601. .size abi_test_clobber_d23,.-abi_test_clobber_d23
  602. .type abi_test_clobber_d24, %function
  603. .globl abi_test_clobber_d24
  604. .hidden abi_test_clobber_d24
  605. .align 4
  606. abi_test_clobber_d24:
  607. AARCH64_VALID_CALL_TARGET
  608. fmov d24, xzr
  609. ret
  610. .size abi_test_clobber_d24,.-abi_test_clobber_d24
  611. .type abi_test_clobber_d25, %function
  612. .globl abi_test_clobber_d25
  613. .hidden abi_test_clobber_d25
  614. .align 4
  615. abi_test_clobber_d25:
  616. AARCH64_VALID_CALL_TARGET
  617. fmov d25, xzr
  618. ret
  619. .size abi_test_clobber_d25,.-abi_test_clobber_d25
  620. .type abi_test_clobber_d26, %function
  621. .globl abi_test_clobber_d26
  622. .hidden abi_test_clobber_d26
  623. .align 4
  624. abi_test_clobber_d26:
  625. AARCH64_VALID_CALL_TARGET
  626. fmov d26, xzr
  627. ret
  628. .size abi_test_clobber_d26,.-abi_test_clobber_d26
  629. .type abi_test_clobber_d27, %function
  630. .globl abi_test_clobber_d27
  631. .hidden abi_test_clobber_d27
  632. .align 4
  633. abi_test_clobber_d27:
  634. AARCH64_VALID_CALL_TARGET
  635. fmov d27, xzr
  636. ret
  637. .size abi_test_clobber_d27,.-abi_test_clobber_d27
  638. .type abi_test_clobber_d28, %function
  639. .globl abi_test_clobber_d28
  640. .hidden abi_test_clobber_d28
  641. .align 4
  642. abi_test_clobber_d28:
  643. AARCH64_VALID_CALL_TARGET
  644. fmov d28, xzr
  645. ret
  646. .size abi_test_clobber_d28,.-abi_test_clobber_d28
  647. .type abi_test_clobber_d29, %function
  648. .globl abi_test_clobber_d29
  649. .hidden abi_test_clobber_d29
  650. .align 4
  651. abi_test_clobber_d29:
  652. AARCH64_VALID_CALL_TARGET
  653. fmov d29, xzr
  654. ret
  655. .size abi_test_clobber_d29,.-abi_test_clobber_d29
  656. .type abi_test_clobber_d30, %function
  657. .globl abi_test_clobber_d30
  658. .hidden abi_test_clobber_d30
  659. .align 4
  660. abi_test_clobber_d30:
  661. AARCH64_VALID_CALL_TARGET
  662. fmov d30, xzr
  663. ret
  664. .size abi_test_clobber_d30,.-abi_test_clobber_d30
  665. .type abi_test_clobber_d31, %function
  666. .globl abi_test_clobber_d31
  667. .hidden abi_test_clobber_d31
  668. .align 4
  669. abi_test_clobber_d31:
  670. AARCH64_VALID_CALL_TARGET
  671. fmov d31, xzr
  672. ret
  673. .size abi_test_clobber_d31,.-abi_test_clobber_d31
  674. .type abi_test_clobber_v8_upper, %function
  675. .globl abi_test_clobber_v8_upper
  676. .hidden abi_test_clobber_v8_upper
  677. .align 4
  678. abi_test_clobber_v8_upper:
  679. AARCH64_VALID_CALL_TARGET
  680. fmov v8.d[1], xzr
  681. ret
  682. .size abi_test_clobber_v8_upper,.-abi_test_clobber_v8_upper
  683. .type abi_test_clobber_v9_upper, %function
  684. .globl abi_test_clobber_v9_upper
  685. .hidden abi_test_clobber_v9_upper
  686. .align 4
  687. abi_test_clobber_v9_upper:
  688. AARCH64_VALID_CALL_TARGET
  689. fmov v9.d[1], xzr
  690. ret
  691. .size abi_test_clobber_v9_upper,.-abi_test_clobber_v9_upper
  692. .type abi_test_clobber_v10_upper, %function
  693. .globl abi_test_clobber_v10_upper
  694. .hidden abi_test_clobber_v10_upper
  695. .align 4
  696. abi_test_clobber_v10_upper:
  697. AARCH64_VALID_CALL_TARGET
  698. fmov v10.d[1], xzr
  699. ret
  700. .size abi_test_clobber_v10_upper,.-abi_test_clobber_v10_upper
  701. .type abi_test_clobber_v11_upper, %function
  702. .globl abi_test_clobber_v11_upper
  703. .hidden abi_test_clobber_v11_upper
  704. .align 4
  705. abi_test_clobber_v11_upper:
  706. AARCH64_VALID_CALL_TARGET
  707. fmov v11.d[1], xzr
  708. ret
  709. .size abi_test_clobber_v11_upper,.-abi_test_clobber_v11_upper
  710. .type abi_test_clobber_v12_upper, %function
  711. .globl abi_test_clobber_v12_upper
  712. .hidden abi_test_clobber_v12_upper
  713. .align 4
  714. abi_test_clobber_v12_upper:
  715. AARCH64_VALID_CALL_TARGET
  716. fmov v12.d[1], xzr
  717. ret
  718. .size abi_test_clobber_v12_upper,.-abi_test_clobber_v12_upper
  719. .type abi_test_clobber_v13_upper, %function
  720. .globl abi_test_clobber_v13_upper
  721. .hidden abi_test_clobber_v13_upper
  722. .align 4
  723. abi_test_clobber_v13_upper:
  724. AARCH64_VALID_CALL_TARGET
  725. fmov v13.d[1], xzr
  726. ret
  727. .size abi_test_clobber_v13_upper,.-abi_test_clobber_v13_upper
  728. .type abi_test_clobber_v14_upper, %function
  729. .globl abi_test_clobber_v14_upper
  730. .hidden abi_test_clobber_v14_upper
  731. .align 4
  732. abi_test_clobber_v14_upper:
  733. AARCH64_VALID_CALL_TARGET
  734. fmov v14.d[1], xzr
  735. ret
  736. .size abi_test_clobber_v14_upper,.-abi_test_clobber_v14_upper
  737. .type abi_test_clobber_v15_upper, %function
  738. .globl abi_test_clobber_v15_upper
  739. .hidden abi_test_clobber_v15_upper
  740. .align 4
  741. abi_test_clobber_v15_upper:
  742. AARCH64_VALID_CALL_TARGET
  743. fmov v15.d[1], xzr
  744. ret
  745. .size abi_test_clobber_v15_upper,.-abi_test_clobber_v15_upper
  746. #endif
  747. #endif // !OPENSSL_NO_ASM
  748. .section .note.GNU-stack,"",%progbits