1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* n2-asm.S: Niagara2 RNG hypervisor call assembler.
3  *
4  * Copyright (C) 2008 David S. Miller <davem@davemloft.net>
5  */
6 #include <linux/linkage.h>
7 #include <asm/hypervisor.h>
8 #include "n2rng.h"
9 
10 	.text
11 
12 ENTRY(sun4v_rng_get_diag_ctl)
13 	mov	HV_FAST_RNG_GET_DIAG_CTL, %o5
14 	ta	HV_FAST_TRAP
15 	retl
16 	 nop
17 ENDPROC(sun4v_rng_get_diag_ctl)
18 
19 ENTRY(sun4v_rng_ctl_read_v1)
20 	mov	%o1, %o3
21 	mov	%o2, %o4
22 	mov	HV_FAST_RNG_CTL_READ, %o5
23 	ta	HV_FAST_TRAP
24 	stx	%o1, [%o3]
25 	retl
26 	 stx	%o2, [%o4]
27 ENDPROC(sun4v_rng_ctl_read_v1)
28 
29 ENTRY(sun4v_rng_ctl_read_v2)
30 	save	%sp, -192, %sp
31 	mov	%i0, %o0
32 	mov	%i1, %o1
33 	mov	HV_FAST_RNG_CTL_READ, %o5
34 	ta	HV_FAST_TRAP
35 	stx	%o1, [%i2]
36 	stx	%o2, [%i3]
37 	stx	%o3, [%i4]
38 	stx	%o4, [%i5]
39 	ret
40 	restore	%g0, %o0, %o0
41 ENDPROC(sun4v_rng_ctl_read_v2)
42 
43 ENTRY(sun4v_rng_ctl_write_v1)
44 	mov	%o3, %o4
45 	mov	HV_FAST_RNG_CTL_WRITE, %o5
46 	ta	HV_FAST_TRAP
47 	retl
48 	 stx	%o1, [%o4]
49 ENDPROC(sun4v_rng_ctl_write_v1)
50 
51 ENTRY(sun4v_rng_ctl_write_v2)
52 	mov	HV_FAST_RNG_CTL_WRITE, %o5
53 	ta	HV_FAST_TRAP
54 	retl
55 	 nop
56 ENDPROC(sun4v_rng_ctl_write_v2)
57 
58 ENTRY(sun4v_rng_data_read_diag_v1)
59 	mov	%o2, %o4
60 	mov	HV_FAST_RNG_DATA_READ_DIAG, %o5
61 	ta	HV_FAST_TRAP
62 	retl
63 	 stx	%o1, [%o4]
64 ENDPROC(sun4v_rng_data_read_diag_v1)
65 
66 ENTRY(sun4v_rng_data_read_diag_v2)
67 	mov	%o3, %o4
68 	mov	HV_FAST_RNG_DATA_READ_DIAG, %o5
69 	ta	HV_FAST_TRAP
70 	retl
71 	 stx	%o1, [%o4]
72 ENDPROC(sun4v_rng_data_read_diag_v2)
73 
74 ENTRY(sun4v_rng_data_read)
75 	mov	%o1, %o4
76 	mov	HV_FAST_RNG_DATA_READ, %o5
77 	ta	HV_FAST_TRAP
78 	retl
79 	 stx	%o1, [%o4]
80 ENDPROC(sun4v_rng_data_read)
81