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