Merge branch 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / 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)