| #if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) |
| .text |
| |
| |
| |
| |
| .globl CRYPTO_rdrand |
| .hidden CRYPTO_rdrand |
| .type CRYPTO_rdrand,@function |
| .align 16 |
| CRYPTO_rdrand: |
| .cfi_startproc |
| xorq %rax,%rax |
| |
| |
| .byte 0x48, 0x0f, 0xc7, 0xf1 |
| |
| adcq %rax,%rax |
| movq %rcx,0(%rdi) |
| .byte 0xf3,0xc3 |
| .cfi_endproc |
| |
| |
| |
| |
| |
| .globl CRYPTO_rdrand_multiple8_buf |
| .hidden CRYPTO_rdrand_multiple8_buf |
| .type CRYPTO_rdrand_multiple8_buf,@function |
| .align 16 |
| CRYPTO_rdrand_multiple8_buf: |
| .cfi_startproc |
| testq %rsi,%rsi |
| jz .Lout |
| movq $8,%rdx |
| .Lloop: |
| |
| |
| .byte 0x48, 0x0f, 0xc7, 0xf1 |
| jnc .Lerr |
| movq %rcx,0(%rdi) |
| addq %rdx,%rdi |
| subq %rdx,%rsi |
| jnz .Lloop |
| .Lout: |
| movq $1,%rax |
| .byte 0xf3,0xc3 |
| .Lerr: |
| xorq %rax,%rax |
| .byte 0xf3,0xc3 |
| .cfi_endproc |
| #endif |