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