1// This file is generated from a similarly-named Perl script in the BoringSSL 2// source tree. Do not edit by hand. 3 4#include <openssl/asm_base.h> 5 6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__APPLE__) 7.text 8 9 10 11 12 13 14 15 16 17.globl _abi_test_trampoline 18.private_extern _abi_test_trampoline 19.p2align 4 20_abi_test_trampoline: 21 22 23_CET_ENDBR 24 25 26 27 28 29 30 31 32 33 subq $120,%rsp 34 35 36 movq %r8,48(%rsp) 37 movq %rbx,64(%rsp) 38 39 40 movq %rbp,72(%rsp) 41 42 43 movq %r12,80(%rsp) 44 45 46 movq %r13,88(%rsp) 47 48 49 movq %r14,96(%rsp) 50 51 52 movq %r15,104(%rsp) 53 54 55 56 movq 0(%rsi),%rbx 57 movq 8(%rsi),%rbp 58 movq 16(%rsi),%r12 59 movq 24(%rsi),%r13 60 movq 32(%rsi),%r14 61 movq 40(%rsi),%r15 62 63 movq %rdi,32(%rsp) 64 movq %rsi,40(%rsp) 65 66 67 68 69 movq %rdx,%r10 70 movq %rcx,%r11 71 decq %r11 72 js L$args_done 73 movq (%r10),%rdi 74 addq $8,%r10 75 decq %r11 76 js L$args_done 77 movq (%r10),%rsi 78 addq $8,%r10 79 decq %r11 80 js L$args_done 81 movq (%r10),%rdx 82 addq $8,%r10 83 decq %r11 84 js L$args_done 85 movq (%r10),%rcx 86 addq $8,%r10 87 decq %r11 88 js L$args_done 89 movq (%r10),%r8 90 addq $8,%r10 91 decq %r11 92 js L$args_done 93 movq (%r10),%r9 94 addq $8,%r10 95 leaq 0(%rsp),%rax 96L$args_loop: 97 decq %r11 98 js L$args_done 99 100 101 102 103 104 105 movq %r11,56(%rsp) 106 movq (%r10),%r11 107 movq %r11,(%rax) 108 movq 56(%rsp),%r11 109 110 addq $8,%r10 111 addq $8,%rax 112 jmp L$args_loop 113 114L$args_done: 115 movq 32(%rsp),%rax 116 movq 48(%rsp),%r10 117 testq %r10,%r10 118 jz L$no_unwind 119 120 121 pushfq 122 orq $0x100,0(%rsp) 123 popfq 124 125 126 127 nop 128.globl _abi_test_unwind_start 129.private_extern _abi_test_unwind_start 130_abi_test_unwind_start: 131 132 call *%rax 133.globl _abi_test_unwind_return 134.private_extern _abi_test_unwind_return 135_abi_test_unwind_return: 136 137 138 139 140 pushfq 141 andq $-0x101,0(%rsp) 142 popfq 143.globl _abi_test_unwind_stop 144.private_extern _abi_test_unwind_stop 145_abi_test_unwind_stop: 146 147 jmp L$call_done 148 149L$no_unwind: 150 call *%rax 151 152L$call_done: 153 154 movq 40(%rsp),%rsi 155 movq %rbx,0(%rsi) 156 movq %rbp,8(%rsi) 157 movq %r12,16(%rsi) 158 movq %r13,24(%rsi) 159 movq %r14,32(%rsi) 160 movq %r15,40(%rsi) 161 movq 64(%rsp),%rbx 162 163 movq 72(%rsp),%rbp 164 165 movq 80(%rsp),%r12 166 167 movq 88(%rsp),%r13 168 169 movq 96(%rsp),%r14 170 171 movq 104(%rsp),%r15 172 173 addq $120,%rsp 174 175 176 177 ret 178 179 180 181 182.globl _abi_test_clobber_rax 183.private_extern _abi_test_clobber_rax 184.p2align 4 185_abi_test_clobber_rax: 186_CET_ENDBR 187 xorq %rax,%rax 188 ret 189 190 191.globl _abi_test_clobber_rbx 192.private_extern _abi_test_clobber_rbx 193.p2align 4 194_abi_test_clobber_rbx: 195_CET_ENDBR 196 xorq %rbx,%rbx 197 ret 198 199 200.globl _abi_test_clobber_rcx 201.private_extern _abi_test_clobber_rcx 202.p2align 4 203_abi_test_clobber_rcx: 204_CET_ENDBR 205 xorq %rcx,%rcx 206 ret 207 208 209.globl _abi_test_clobber_rdx 210.private_extern _abi_test_clobber_rdx 211.p2align 4 212_abi_test_clobber_rdx: 213_CET_ENDBR 214 xorq %rdx,%rdx 215 ret 216 217 218.globl _abi_test_clobber_rdi 219.private_extern _abi_test_clobber_rdi 220.p2align 4 221_abi_test_clobber_rdi: 222_CET_ENDBR 223 xorq %rdi,%rdi 224 ret 225 226 227.globl _abi_test_clobber_rsi 228.private_extern _abi_test_clobber_rsi 229.p2align 4 230_abi_test_clobber_rsi: 231_CET_ENDBR 232 xorq %rsi,%rsi 233 ret 234 235 236.globl _abi_test_clobber_rbp 237.private_extern _abi_test_clobber_rbp 238.p2align 4 239_abi_test_clobber_rbp: 240_CET_ENDBR 241 xorq %rbp,%rbp 242 ret 243 244 245.globl _abi_test_clobber_r8 246.private_extern _abi_test_clobber_r8 247.p2align 4 248_abi_test_clobber_r8: 249_CET_ENDBR 250 xorq %r8,%r8 251 ret 252 253 254.globl _abi_test_clobber_r9 255.private_extern _abi_test_clobber_r9 256.p2align 4 257_abi_test_clobber_r9: 258_CET_ENDBR 259 xorq %r9,%r9 260 ret 261 262 263.globl _abi_test_clobber_r10 264.private_extern _abi_test_clobber_r10 265.p2align 4 266_abi_test_clobber_r10: 267_CET_ENDBR 268 xorq %r10,%r10 269 ret 270 271 272.globl _abi_test_clobber_r11 273.private_extern _abi_test_clobber_r11 274.p2align 4 275_abi_test_clobber_r11: 276_CET_ENDBR 277 xorq %r11,%r11 278 ret 279 280 281.globl _abi_test_clobber_r12 282.private_extern _abi_test_clobber_r12 283.p2align 4 284_abi_test_clobber_r12: 285_CET_ENDBR 286 xorq %r12,%r12 287 ret 288 289 290.globl _abi_test_clobber_r13 291.private_extern _abi_test_clobber_r13 292.p2align 4 293_abi_test_clobber_r13: 294_CET_ENDBR 295 xorq %r13,%r13 296 ret 297 298 299.globl _abi_test_clobber_r14 300.private_extern _abi_test_clobber_r14 301.p2align 4 302_abi_test_clobber_r14: 303_CET_ENDBR 304 xorq %r14,%r14 305 ret 306 307 308.globl _abi_test_clobber_r15 309.private_extern _abi_test_clobber_r15 310.p2align 4 311_abi_test_clobber_r15: 312_CET_ENDBR 313 xorq %r15,%r15 314 ret 315 316 317.globl _abi_test_clobber_xmm0 318.private_extern _abi_test_clobber_xmm0 319.p2align 4 320_abi_test_clobber_xmm0: 321_CET_ENDBR 322 pxor %xmm0,%xmm0 323 ret 324 325 326.globl _abi_test_clobber_xmm1 327.private_extern _abi_test_clobber_xmm1 328.p2align 4 329_abi_test_clobber_xmm1: 330_CET_ENDBR 331 pxor %xmm1,%xmm1 332 ret 333 334 335.globl _abi_test_clobber_xmm2 336.private_extern _abi_test_clobber_xmm2 337.p2align 4 338_abi_test_clobber_xmm2: 339_CET_ENDBR 340 pxor %xmm2,%xmm2 341 ret 342 343 344.globl _abi_test_clobber_xmm3 345.private_extern _abi_test_clobber_xmm3 346.p2align 4 347_abi_test_clobber_xmm3: 348_CET_ENDBR 349 pxor %xmm3,%xmm3 350 ret 351 352 353.globl _abi_test_clobber_xmm4 354.private_extern _abi_test_clobber_xmm4 355.p2align 4 356_abi_test_clobber_xmm4: 357_CET_ENDBR 358 pxor %xmm4,%xmm4 359 ret 360 361 362.globl _abi_test_clobber_xmm5 363.private_extern _abi_test_clobber_xmm5 364.p2align 4 365_abi_test_clobber_xmm5: 366_CET_ENDBR 367 pxor %xmm5,%xmm5 368 ret 369 370 371.globl _abi_test_clobber_xmm6 372.private_extern _abi_test_clobber_xmm6 373.p2align 4 374_abi_test_clobber_xmm6: 375_CET_ENDBR 376 pxor %xmm6,%xmm6 377 ret 378 379 380.globl _abi_test_clobber_xmm7 381.private_extern _abi_test_clobber_xmm7 382.p2align 4 383_abi_test_clobber_xmm7: 384_CET_ENDBR 385 pxor %xmm7,%xmm7 386 ret 387 388 389.globl _abi_test_clobber_xmm8 390.private_extern _abi_test_clobber_xmm8 391.p2align 4 392_abi_test_clobber_xmm8: 393_CET_ENDBR 394 pxor %xmm8,%xmm8 395 ret 396 397 398.globl _abi_test_clobber_xmm9 399.private_extern _abi_test_clobber_xmm9 400.p2align 4 401_abi_test_clobber_xmm9: 402_CET_ENDBR 403 pxor %xmm9,%xmm9 404 ret 405 406 407.globl _abi_test_clobber_xmm10 408.private_extern _abi_test_clobber_xmm10 409.p2align 4 410_abi_test_clobber_xmm10: 411_CET_ENDBR 412 pxor %xmm10,%xmm10 413 ret 414 415 416.globl _abi_test_clobber_xmm11 417.private_extern _abi_test_clobber_xmm11 418.p2align 4 419_abi_test_clobber_xmm11: 420_CET_ENDBR 421 pxor %xmm11,%xmm11 422 ret 423 424 425.globl _abi_test_clobber_xmm12 426.private_extern _abi_test_clobber_xmm12 427.p2align 4 428_abi_test_clobber_xmm12: 429_CET_ENDBR 430 pxor %xmm12,%xmm12 431 ret 432 433 434.globl _abi_test_clobber_xmm13 435.private_extern _abi_test_clobber_xmm13 436.p2align 4 437_abi_test_clobber_xmm13: 438_CET_ENDBR 439 pxor %xmm13,%xmm13 440 ret 441 442 443.globl _abi_test_clobber_xmm14 444.private_extern _abi_test_clobber_xmm14 445.p2align 4 446_abi_test_clobber_xmm14: 447_CET_ENDBR 448 pxor %xmm14,%xmm14 449 ret 450 451 452.globl _abi_test_clobber_xmm15 453.private_extern _abi_test_clobber_xmm15 454.p2align 4 455_abi_test_clobber_xmm15: 456_CET_ENDBR 457 pxor %xmm15,%xmm15 458 ret 459 460 461 462 463 464.globl _abi_test_bad_unwind_wrong_register 465.private_extern _abi_test_bad_unwind_wrong_register 466.p2align 4 467_abi_test_bad_unwind_wrong_register: 468 469 470_CET_ENDBR 471 pushq %r12 472 473 474 475 476 477 478 nop 479 popq %r12 480 481 ret 482 483 484 485 486 487 488 489 490.globl _abi_test_bad_unwind_temporary 491.private_extern _abi_test_bad_unwind_temporary 492.p2align 4 493_abi_test_bad_unwind_temporary: 494 495 496_CET_ENDBR 497 pushq %r12 498 499 500 501 502 movq %r12,%rax 503 incq %rax 504 movq %rax,(%rsp) 505 506 507 508 movq %r12,(%rsp) 509 510 511 popq %r12 512 513 ret 514 515 516 517 518 519 520 521 522.globl _abi_test_get_and_clear_direction_flag 523.private_extern _abi_test_get_and_clear_direction_flag 524_abi_test_get_and_clear_direction_flag: 525_CET_ENDBR 526 pushfq 527 popq %rax 528 andq $0x400,%rax 529 shrq $10,%rax 530 cld 531 ret 532 533 534 535 536 537.globl _abi_test_set_direction_flag 538.private_extern _abi_test_set_direction_flag 539_abi_test_set_direction_flag: 540_CET_ENDBR 541 std 542 ret 543 544#endif 545