trampoline-armv8.S 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  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(BORINGSSL_PREFIX)
  11. #include <boringssl_prefix_symbols_asm.h>
  12. #endif
  13. #include <openssl/arm_arch.h>
  14. .text
  15. // abi_test_trampoline loads callee-saved registers from |state|, calls |func|
  16. // with |argv|, then saves the callee-saved registers into |state|. It returns
  17. // the result of |func|. The |unwind| argument is unused.
  18. // uint64_t abi_test_trampoline(void (*func)(...), CallerState *state,
  19. // const uint64_t *argv, size_t argc,
  20. // uint64_t unwind);
  21. .globl _abi_test_trampoline
  22. .private_extern _abi_test_trampoline
  23. .align 4
  24. _abi_test_trampoline:
  25. Labi_test_trampoline_begin:
  26. AARCH64_SIGN_LINK_REGISTER
  27. // Stack layout (low to high addresses)
  28. // x29,x30 (16 bytes)
  29. // d8-d15 (64 bytes)
  30. // x19-x28 (80 bytes)
  31. // x1 (8 bytes)
  32. // padding (8 bytes)
  33. stp x29, x30, [sp, #-176]!
  34. mov x29, sp
  35. // Saved callee-saved registers and |state|.
  36. stp d8, d9, [sp, #16]
  37. stp d10, d11, [sp, #32]
  38. stp d12, d13, [sp, #48]
  39. stp d14, d15, [sp, #64]
  40. stp x19, x20, [sp, #80]
  41. stp x21, x22, [sp, #96]
  42. stp x23, x24, [sp, #112]
  43. stp x25, x26, [sp, #128]
  44. stp x27, x28, [sp, #144]
  45. str x1, [sp, #160]
  46. // Load registers from |state|, with the exception of x29. x29 is the
  47. // frame pointer and also callee-saved, but AAPCS64 allows platforms to
  48. // mandate that x29 always point to a frame. iOS64 does so, which means
  49. // we cannot fill x29 with entropy without violating ABI rules
  50. // ourselves. x29 is tested separately below.
  51. ldp d8, d9, [x1], #16
  52. ldp d10, d11, [x1], #16
  53. ldp d12, d13, [x1], #16
  54. ldp d14, d15, [x1], #16
  55. ldp x19, x20, [x1], #16
  56. ldp x21, x22, [x1], #16
  57. ldp x23, x24, [x1], #16
  58. ldp x25, x26, [x1], #16
  59. ldp x27, x28, [x1], #16
  60. // Move parameters into temporary registers.
  61. mov x9, x0
  62. mov x10, x2
  63. mov x11, x3
  64. // Load parameters into registers.
  65. cbz x11, Largs_done
  66. ldr x0, [x10], #8
  67. subs x11, x11, #1
  68. b.eq Largs_done
  69. ldr x1, [x10], #8
  70. subs x11, x11, #1
  71. b.eq Largs_done
  72. ldr x2, [x10], #8
  73. subs x11, x11, #1
  74. b.eq Largs_done
  75. ldr x3, [x10], #8
  76. subs x11, x11, #1
  77. b.eq Largs_done
  78. ldr x4, [x10], #8
  79. subs x11, x11, #1
  80. b.eq Largs_done
  81. ldr x5, [x10], #8
  82. subs x11, x11, #1
  83. b.eq Largs_done
  84. ldr x6, [x10], #8
  85. subs x11, x11, #1
  86. b.eq Largs_done
  87. ldr x7, [x10], #8
  88. Largs_done:
  89. blr x9
  90. // Reload |state| and store registers.
  91. ldr x1, [sp, #160]
  92. stp d8, d9, [x1], #16
  93. stp d10, d11, [x1], #16
  94. stp d12, d13, [x1], #16
  95. stp d14, d15, [x1], #16
  96. stp x19, x20, [x1], #16
  97. stp x21, x22, [x1], #16
  98. stp x23, x24, [x1], #16
  99. stp x25, x26, [x1], #16
  100. stp x27, x28, [x1], #16
  101. // |func| is required to preserve x29, the frame pointer. We cannot load
  102. // random values into x29 (see comment above), so compare it against the
  103. // expected value and zero the field of |state| if corrupted.
  104. mov x9, sp
  105. cmp x29, x9
  106. b.eq Lx29_ok
  107. str xzr, [x1]
  108. Lx29_ok:
  109. // Restore callee-saved registers.
  110. ldp d8, d9, [sp, #16]
  111. ldp d10, d11, [sp, #32]
  112. ldp d12, d13, [sp, #48]
  113. ldp d14, d15, [sp, #64]
  114. ldp x19, x20, [sp, #80]
  115. ldp x21, x22, [sp, #96]
  116. ldp x23, x24, [sp, #112]
  117. ldp x25, x26, [sp, #128]
  118. ldp x27, x28, [sp, #144]
  119. ldp x29, x30, [sp], #176
  120. AARCH64_VALIDATE_LINK_REGISTER
  121. ret
  122. .globl _abi_test_clobber_x0
  123. .private_extern _abi_test_clobber_x0
  124. .align 4
  125. _abi_test_clobber_x0:
  126. AARCH64_VALID_CALL_TARGET
  127. mov x0, xzr
  128. ret
  129. .globl _abi_test_clobber_x1
  130. .private_extern _abi_test_clobber_x1
  131. .align 4
  132. _abi_test_clobber_x1:
  133. AARCH64_VALID_CALL_TARGET
  134. mov x1, xzr
  135. ret
  136. .globl _abi_test_clobber_x2
  137. .private_extern _abi_test_clobber_x2
  138. .align 4
  139. _abi_test_clobber_x2:
  140. AARCH64_VALID_CALL_TARGET
  141. mov x2, xzr
  142. ret
  143. .globl _abi_test_clobber_x3
  144. .private_extern _abi_test_clobber_x3
  145. .align 4
  146. _abi_test_clobber_x3:
  147. AARCH64_VALID_CALL_TARGET
  148. mov x3, xzr
  149. ret
  150. .globl _abi_test_clobber_x4
  151. .private_extern _abi_test_clobber_x4
  152. .align 4
  153. _abi_test_clobber_x4:
  154. AARCH64_VALID_CALL_TARGET
  155. mov x4, xzr
  156. ret
  157. .globl _abi_test_clobber_x5
  158. .private_extern _abi_test_clobber_x5
  159. .align 4
  160. _abi_test_clobber_x5:
  161. AARCH64_VALID_CALL_TARGET
  162. mov x5, xzr
  163. ret
  164. .globl _abi_test_clobber_x6
  165. .private_extern _abi_test_clobber_x6
  166. .align 4
  167. _abi_test_clobber_x6:
  168. AARCH64_VALID_CALL_TARGET
  169. mov x6, xzr
  170. ret
  171. .globl _abi_test_clobber_x7
  172. .private_extern _abi_test_clobber_x7
  173. .align 4
  174. _abi_test_clobber_x7:
  175. AARCH64_VALID_CALL_TARGET
  176. mov x7, xzr
  177. ret
  178. .globl _abi_test_clobber_x8
  179. .private_extern _abi_test_clobber_x8
  180. .align 4
  181. _abi_test_clobber_x8:
  182. AARCH64_VALID_CALL_TARGET
  183. mov x8, xzr
  184. ret
  185. .globl _abi_test_clobber_x9
  186. .private_extern _abi_test_clobber_x9
  187. .align 4
  188. _abi_test_clobber_x9:
  189. AARCH64_VALID_CALL_TARGET
  190. mov x9, xzr
  191. ret
  192. .globl _abi_test_clobber_x10
  193. .private_extern _abi_test_clobber_x10
  194. .align 4
  195. _abi_test_clobber_x10:
  196. AARCH64_VALID_CALL_TARGET
  197. mov x10, xzr
  198. ret
  199. .globl _abi_test_clobber_x11
  200. .private_extern _abi_test_clobber_x11
  201. .align 4
  202. _abi_test_clobber_x11:
  203. AARCH64_VALID_CALL_TARGET
  204. mov x11, xzr
  205. ret
  206. .globl _abi_test_clobber_x12
  207. .private_extern _abi_test_clobber_x12
  208. .align 4
  209. _abi_test_clobber_x12:
  210. AARCH64_VALID_CALL_TARGET
  211. mov x12, xzr
  212. ret
  213. .globl _abi_test_clobber_x13
  214. .private_extern _abi_test_clobber_x13
  215. .align 4
  216. _abi_test_clobber_x13:
  217. AARCH64_VALID_CALL_TARGET
  218. mov x13, xzr
  219. ret
  220. .globl _abi_test_clobber_x14
  221. .private_extern _abi_test_clobber_x14
  222. .align 4
  223. _abi_test_clobber_x14:
  224. AARCH64_VALID_CALL_TARGET
  225. mov x14, xzr
  226. ret
  227. .globl _abi_test_clobber_x15
  228. .private_extern _abi_test_clobber_x15
  229. .align 4
  230. _abi_test_clobber_x15:
  231. AARCH64_VALID_CALL_TARGET
  232. mov x15, xzr
  233. ret
  234. .globl _abi_test_clobber_x16
  235. .private_extern _abi_test_clobber_x16
  236. .align 4
  237. _abi_test_clobber_x16:
  238. AARCH64_VALID_CALL_TARGET
  239. mov x16, xzr
  240. ret
  241. .globl _abi_test_clobber_x17
  242. .private_extern _abi_test_clobber_x17
  243. .align 4
  244. _abi_test_clobber_x17:
  245. AARCH64_VALID_CALL_TARGET
  246. mov x17, xzr
  247. ret
  248. .globl _abi_test_clobber_x19
  249. .private_extern _abi_test_clobber_x19
  250. .align 4
  251. _abi_test_clobber_x19:
  252. AARCH64_VALID_CALL_TARGET
  253. mov x19, xzr
  254. ret
  255. .globl _abi_test_clobber_x20
  256. .private_extern _abi_test_clobber_x20
  257. .align 4
  258. _abi_test_clobber_x20:
  259. AARCH64_VALID_CALL_TARGET
  260. mov x20, xzr
  261. ret
  262. .globl _abi_test_clobber_x21
  263. .private_extern _abi_test_clobber_x21
  264. .align 4
  265. _abi_test_clobber_x21:
  266. AARCH64_VALID_CALL_TARGET
  267. mov x21, xzr
  268. ret
  269. .globl _abi_test_clobber_x22
  270. .private_extern _abi_test_clobber_x22
  271. .align 4
  272. _abi_test_clobber_x22:
  273. AARCH64_VALID_CALL_TARGET
  274. mov x22, xzr
  275. ret
  276. .globl _abi_test_clobber_x23
  277. .private_extern _abi_test_clobber_x23
  278. .align 4
  279. _abi_test_clobber_x23:
  280. AARCH64_VALID_CALL_TARGET
  281. mov x23, xzr
  282. ret
  283. .globl _abi_test_clobber_x24
  284. .private_extern _abi_test_clobber_x24
  285. .align 4
  286. _abi_test_clobber_x24:
  287. AARCH64_VALID_CALL_TARGET
  288. mov x24, xzr
  289. ret
  290. .globl _abi_test_clobber_x25
  291. .private_extern _abi_test_clobber_x25
  292. .align 4
  293. _abi_test_clobber_x25:
  294. AARCH64_VALID_CALL_TARGET
  295. mov x25, xzr
  296. ret
  297. .globl _abi_test_clobber_x26
  298. .private_extern _abi_test_clobber_x26
  299. .align 4
  300. _abi_test_clobber_x26:
  301. AARCH64_VALID_CALL_TARGET
  302. mov x26, xzr
  303. ret
  304. .globl _abi_test_clobber_x27
  305. .private_extern _abi_test_clobber_x27
  306. .align 4
  307. _abi_test_clobber_x27:
  308. AARCH64_VALID_CALL_TARGET
  309. mov x27, xzr
  310. ret
  311. .globl _abi_test_clobber_x28
  312. .private_extern _abi_test_clobber_x28
  313. .align 4
  314. _abi_test_clobber_x28:
  315. AARCH64_VALID_CALL_TARGET
  316. mov x28, xzr
  317. ret
  318. .globl _abi_test_clobber_x29
  319. .private_extern _abi_test_clobber_x29
  320. .align 4
  321. _abi_test_clobber_x29:
  322. AARCH64_VALID_CALL_TARGET
  323. mov x29, xzr
  324. ret
  325. .globl _abi_test_clobber_d0
  326. .private_extern _abi_test_clobber_d0
  327. .align 4
  328. _abi_test_clobber_d0:
  329. AARCH64_VALID_CALL_TARGET
  330. fmov d0, xzr
  331. ret
  332. .globl _abi_test_clobber_d1
  333. .private_extern _abi_test_clobber_d1
  334. .align 4
  335. _abi_test_clobber_d1:
  336. AARCH64_VALID_CALL_TARGET
  337. fmov d1, xzr
  338. ret
  339. .globl _abi_test_clobber_d2
  340. .private_extern _abi_test_clobber_d2
  341. .align 4
  342. _abi_test_clobber_d2:
  343. AARCH64_VALID_CALL_TARGET
  344. fmov d2, xzr
  345. ret
  346. .globl _abi_test_clobber_d3
  347. .private_extern _abi_test_clobber_d3
  348. .align 4
  349. _abi_test_clobber_d3:
  350. AARCH64_VALID_CALL_TARGET
  351. fmov d3, xzr
  352. ret
  353. .globl _abi_test_clobber_d4
  354. .private_extern _abi_test_clobber_d4
  355. .align 4
  356. _abi_test_clobber_d4:
  357. AARCH64_VALID_CALL_TARGET
  358. fmov d4, xzr
  359. ret
  360. .globl _abi_test_clobber_d5
  361. .private_extern _abi_test_clobber_d5
  362. .align 4
  363. _abi_test_clobber_d5:
  364. AARCH64_VALID_CALL_TARGET
  365. fmov d5, xzr
  366. ret
  367. .globl _abi_test_clobber_d6
  368. .private_extern _abi_test_clobber_d6
  369. .align 4
  370. _abi_test_clobber_d6:
  371. AARCH64_VALID_CALL_TARGET
  372. fmov d6, xzr
  373. ret
  374. .globl _abi_test_clobber_d7
  375. .private_extern _abi_test_clobber_d7
  376. .align 4
  377. _abi_test_clobber_d7:
  378. AARCH64_VALID_CALL_TARGET
  379. fmov d7, xzr
  380. ret
  381. .globl _abi_test_clobber_d8
  382. .private_extern _abi_test_clobber_d8
  383. .align 4
  384. _abi_test_clobber_d8:
  385. AARCH64_VALID_CALL_TARGET
  386. fmov d8, xzr
  387. ret
  388. .globl _abi_test_clobber_d9
  389. .private_extern _abi_test_clobber_d9
  390. .align 4
  391. _abi_test_clobber_d9:
  392. AARCH64_VALID_CALL_TARGET
  393. fmov d9, xzr
  394. ret
  395. .globl _abi_test_clobber_d10
  396. .private_extern _abi_test_clobber_d10
  397. .align 4
  398. _abi_test_clobber_d10:
  399. AARCH64_VALID_CALL_TARGET
  400. fmov d10, xzr
  401. ret
  402. .globl _abi_test_clobber_d11
  403. .private_extern _abi_test_clobber_d11
  404. .align 4
  405. _abi_test_clobber_d11:
  406. AARCH64_VALID_CALL_TARGET
  407. fmov d11, xzr
  408. ret
  409. .globl _abi_test_clobber_d12
  410. .private_extern _abi_test_clobber_d12
  411. .align 4
  412. _abi_test_clobber_d12:
  413. AARCH64_VALID_CALL_TARGET
  414. fmov d12, xzr
  415. ret
  416. .globl _abi_test_clobber_d13
  417. .private_extern _abi_test_clobber_d13
  418. .align 4
  419. _abi_test_clobber_d13:
  420. AARCH64_VALID_CALL_TARGET
  421. fmov d13, xzr
  422. ret
  423. .globl _abi_test_clobber_d14
  424. .private_extern _abi_test_clobber_d14
  425. .align 4
  426. _abi_test_clobber_d14:
  427. AARCH64_VALID_CALL_TARGET
  428. fmov d14, xzr
  429. ret
  430. .globl _abi_test_clobber_d15
  431. .private_extern _abi_test_clobber_d15
  432. .align 4
  433. _abi_test_clobber_d15:
  434. AARCH64_VALID_CALL_TARGET
  435. fmov d15, xzr
  436. ret
  437. .globl _abi_test_clobber_d16
  438. .private_extern _abi_test_clobber_d16
  439. .align 4
  440. _abi_test_clobber_d16:
  441. AARCH64_VALID_CALL_TARGET
  442. fmov d16, xzr
  443. ret
  444. .globl _abi_test_clobber_d17
  445. .private_extern _abi_test_clobber_d17
  446. .align 4
  447. _abi_test_clobber_d17:
  448. AARCH64_VALID_CALL_TARGET
  449. fmov d17, xzr
  450. ret
  451. .globl _abi_test_clobber_d18
  452. .private_extern _abi_test_clobber_d18
  453. .align 4
  454. _abi_test_clobber_d18:
  455. AARCH64_VALID_CALL_TARGET
  456. fmov d18, xzr
  457. ret
  458. .globl _abi_test_clobber_d19
  459. .private_extern _abi_test_clobber_d19
  460. .align 4
  461. _abi_test_clobber_d19:
  462. AARCH64_VALID_CALL_TARGET
  463. fmov d19, xzr
  464. ret
  465. .globl _abi_test_clobber_d20
  466. .private_extern _abi_test_clobber_d20
  467. .align 4
  468. _abi_test_clobber_d20:
  469. AARCH64_VALID_CALL_TARGET
  470. fmov d20, xzr
  471. ret
  472. .globl _abi_test_clobber_d21
  473. .private_extern _abi_test_clobber_d21
  474. .align 4
  475. _abi_test_clobber_d21:
  476. AARCH64_VALID_CALL_TARGET
  477. fmov d21, xzr
  478. ret
  479. .globl _abi_test_clobber_d22
  480. .private_extern _abi_test_clobber_d22
  481. .align 4
  482. _abi_test_clobber_d22:
  483. AARCH64_VALID_CALL_TARGET
  484. fmov d22, xzr
  485. ret
  486. .globl _abi_test_clobber_d23
  487. .private_extern _abi_test_clobber_d23
  488. .align 4
  489. _abi_test_clobber_d23:
  490. AARCH64_VALID_CALL_TARGET
  491. fmov d23, xzr
  492. ret
  493. .globl _abi_test_clobber_d24
  494. .private_extern _abi_test_clobber_d24
  495. .align 4
  496. _abi_test_clobber_d24:
  497. AARCH64_VALID_CALL_TARGET
  498. fmov d24, xzr
  499. ret
  500. .globl _abi_test_clobber_d25
  501. .private_extern _abi_test_clobber_d25
  502. .align 4
  503. _abi_test_clobber_d25:
  504. AARCH64_VALID_CALL_TARGET
  505. fmov d25, xzr
  506. ret
  507. .globl _abi_test_clobber_d26
  508. .private_extern _abi_test_clobber_d26
  509. .align 4
  510. _abi_test_clobber_d26:
  511. AARCH64_VALID_CALL_TARGET
  512. fmov d26, xzr
  513. ret
  514. .globl _abi_test_clobber_d27
  515. .private_extern _abi_test_clobber_d27
  516. .align 4
  517. _abi_test_clobber_d27:
  518. AARCH64_VALID_CALL_TARGET
  519. fmov d27, xzr
  520. ret
  521. .globl _abi_test_clobber_d28
  522. .private_extern _abi_test_clobber_d28
  523. .align 4
  524. _abi_test_clobber_d28:
  525. AARCH64_VALID_CALL_TARGET
  526. fmov d28, xzr
  527. ret
  528. .globl _abi_test_clobber_d29
  529. .private_extern _abi_test_clobber_d29
  530. .align 4
  531. _abi_test_clobber_d29:
  532. AARCH64_VALID_CALL_TARGET
  533. fmov d29, xzr
  534. ret
  535. .globl _abi_test_clobber_d30
  536. .private_extern _abi_test_clobber_d30
  537. .align 4
  538. _abi_test_clobber_d30:
  539. AARCH64_VALID_CALL_TARGET
  540. fmov d30, xzr
  541. ret
  542. .globl _abi_test_clobber_d31
  543. .private_extern _abi_test_clobber_d31
  544. .align 4
  545. _abi_test_clobber_d31:
  546. AARCH64_VALID_CALL_TARGET
  547. fmov d31, xzr
  548. ret
  549. .globl _abi_test_clobber_v8_upper
  550. .private_extern _abi_test_clobber_v8_upper
  551. .align 4
  552. _abi_test_clobber_v8_upper:
  553. AARCH64_VALID_CALL_TARGET
  554. fmov v8.d[1], xzr
  555. ret
  556. .globl _abi_test_clobber_v9_upper
  557. .private_extern _abi_test_clobber_v9_upper
  558. .align 4
  559. _abi_test_clobber_v9_upper:
  560. AARCH64_VALID_CALL_TARGET
  561. fmov v9.d[1], xzr
  562. ret
  563. .globl _abi_test_clobber_v10_upper
  564. .private_extern _abi_test_clobber_v10_upper
  565. .align 4
  566. _abi_test_clobber_v10_upper:
  567. AARCH64_VALID_CALL_TARGET
  568. fmov v10.d[1], xzr
  569. ret
  570. .globl _abi_test_clobber_v11_upper
  571. .private_extern _abi_test_clobber_v11_upper
  572. .align 4
  573. _abi_test_clobber_v11_upper:
  574. AARCH64_VALID_CALL_TARGET
  575. fmov v11.d[1], xzr
  576. ret
  577. .globl _abi_test_clobber_v12_upper
  578. .private_extern _abi_test_clobber_v12_upper
  579. .align 4
  580. _abi_test_clobber_v12_upper:
  581. AARCH64_VALID_CALL_TARGET
  582. fmov v12.d[1], xzr
  583. ret
  584. .globl _abi_test_clobber_v13_upper
  585. .private_extern _abi_test_clobber_v13_upper
  586. .align 4
  587. _abi_test_clobber_v13_upper:
  588. AARCH64_VALID_CALL_TARGET
  589. fmov v13.d[1], xzr
  590. ret
  591. .globl _abi_test_clobber_v14_upper
  592. .private_extern _abi_test_clobber_v14_upper
  593. .align 4
  594. _abi_test_clobber_v14_upper:
  595. AARCH64_VALID_CALL_TARGET
  596. fmov v14.d[1], xzr
  597. ret
  598. .globl _abi_test_clobber_v15_upper
  599. .private_extern _abi_test_clobber_v15_upper
  600. .align 4
  601. _abi_test_clobber_v15_upper:
  602. AARCH64_VALID_CALL_TARGET
  603. fmov v15.d[1], xzr
  604. ret
  605. #endif // !OPENSSL_NO_ASM