1 #if defined(__x86_64__) 2 .text 3 4 5 6 7 .globl _CRYPTO_rdrand 8 .private_extern _CRYPTO_rdrand 9 10 .p2align 4 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 .private_extern _CRYPTO_rdrand_multiple8_buf 27 28 .p2align 4 29 _CRYPTO_rdrand_multiple8_buf: 30 testq %rsi,%rsi 31 jz L$out 32 movq $8,%rdx 33 L$loop: 34 35 36 .byte 0x48, 0x0f, 0xc7, 0xf1 37 jnc L$err 38 movq %rcx,0(%rdi) 39 addq %rdx,%rdi 40 subq %rdx,%rsi 41 jnz L$loop 42 L$out: 43 movq $1,%rax 44 .byte 0xf3,0xc3 45 L$err: 46 xorq %rax,%rax 47 .byte 0xf3,0xc3 48 #endif 49