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