1 #if defined(__x86_64__) 2 .text 3 4 5 6 7 .globl CRYPTO_rdrand 8 .hidden CRYPTO_rdrand 9 .type CRYPTO_rdrand,@function 10 .align 16 11 CRYPTO_rdrand: 12 xorq %rax,%rax 13 14 15 .byte 0x48, 0x0f, 0xc7, 0xf1 16 17 adcq %rax,%rax 18 movq %rcx,0(%rdi) 19 .byte 0xf3,0xc3 20 21 22 23 24 25 .globl CRYPTO_rdrand_multiple8_buf 26 .hidden CRYPTO_rdrand_multiple8_buf 27 .type CRYPTO_rdrand_multiple8_buf,@function 28 .align 16 29 CRYPTO_rdrand_multiple8_buf: 30 testq %rsi,%rsi 31 jz .Lout 32 movq $8,%rdx 33 .Lloop: 34 35 36 .byte 0x48, 0x0f, 0xc7, 0xf1 37 jnc .Lerr 38 movq %rcx,0(%rdi) 39 addq %rdx,%rdi 40 subq %rdx,%rsi 41 jnz .Lloop 42 .Lout: 43 movq $1,%rax 44 .byte 0xf3,0xc3 45 .Lerr: 46 xorq %rax,%rax 47 .byte 0xf3,0xc3 48 #endif 49