Home | History | Annotate | Download | only in fipsmodule
      1 default	rel
      2 %define XMMWORD
      3 %define YMMWORD
      4 %define ZMMWORD
      5 section	.text code align=64
      6 
      7 
      8 
      9 
     10 
     11 global	CRYPTO_rdrand
     12 
     13 ALIGN	16
     14 CRYPTO_rdrand:
     15 	mov	QWORD[8+rsp],rdi	;WIN64 prologue
     16 	mov	QWORD[16+rsp],rsi
     17 	mov	rax,rsp
     18 $L$SEH_begin_CRYPTO_rdrand:
     19 	mov	rdi,rcx
     20 
     21 
     22 	xor	rax,rax
     23 
     24 
     25 DB	0x48,0x0f,0xc7,0xf1
     26 
     27 	adc	rax,rax
     28 	mov	QWORD[rdi],rcx
     29 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
     30 	mov	rsi,QWORD[16+rsp]
     31 	DB	0F3h,0C3h		;repret
     32 
     33 
     34 
     35 
     36 
     37 global	CRYPTO_rdrand_multiple8_buf
     38 
     39 ALIGN	16
     40 CRYPTO_rdrand_multiple8_buf:
     41 	mov	QWORD[8+rsp],rdi	;WIN64 prologue
     42 	mov	QWORD[16+rsp],rsi
     43 	mov	rax,rsp
     44 $L$SEH_begin_CRYPTO_rdrand_multiple8_buf:
     45 	mov	rdi,rcx
     46 	mov	rsi,rdx
     47 
     48 
     49 	test	rsi,rsi
     50 	jz	NEAR $L$out
     51 	mov	rdx,8
     52 $L$loop:
     53 
     54 
     55 DB	0x48,0x0f,0xc7,0xf1
     56 	jnc	NEAR $L$err
     57 	mov	QWORD[rdi],rcx
     58 	add	rdi,rdx
     59 	sub	rsi,rdx
     60 	jnz	NEAR $L$loop
     61 $L$out:
     62 	mov	rax,1
     63 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
     64 	mov	rsi,QWORD[16+rsp]
     65 	DB	0F3h,0C3h		;repret
     66 $L$err:
     67 	xor	rax,rax
     68 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
     69 	mov	rsi,QWORD[16+rsp]
     70 	DB	0F3h,0C3h		;repret
     71