1
2
3
4
5
6
7
8
9 #include "ppc_asm.h"
10
11 .machine "ppc64"
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 .macro GLOBAL name
33 .section ".text"
34 .balign 4
35 .globl \name
36 \name:
37 .endm
38
39 .macro NO_SUPPORT name
40 GLOBAL \name
41 b ps3_no_support
42 .endm
43
44 .macro HVCALL num
45 li r11, \num
46 .long 0x44000022
47 extsw r3, r3
48 .endm
49
50 .macro SAVE_LR offset=4
51 mflr r0
52 stw r0, \offset(r1)
53 .endm
54
55 .macro LOAD_LR offset=4
56 lwz r0, \offset(r1)
57 mtlr r0
58 .endm
59
60 .macro LOAD_64_REG target,high,low
61 sldi r11, \high, 32
62 or \target, r11, \low
63 .endm
64
65 .macro LOAD_64_STACK target,offset
66 ld \target, \offset(r1)
67 .endm
68
69 .macro LOAD_R3
70 LOAD_64_REG r3,r3,r4
71 .endm
72
73 .macro LOAD_R4
74 LOAD_64_REG r4,r5,r6
75 .endm
76
77 .macro LOAD_R5
78 LOAD_64_REG r5,r7,r8
79 .endm
80
81 .macro LOAD_R6
82 LOAD_64_REG r6,r9,r10
83 .endm
84
85 .macro LOAD_R7
86 LOAD_64_STACK r7,8
87 .endm
88
89 .macro LOAD_R8
90 LOAD_64_STACK r8,16
91 .endm
92
93 .macro LOAD_R9
94 LOAD_64_STACK r9,24
95 .endm
96
97 .macro LOAD_R10
98 LOAD_64_STACK r10,32
99 .endm
100
101 .macro LOAD_REGS_0
102 stwu 1,-16(1)
103 stw 3, 8(1)
104 .endm
105
106 .macro LOAD_REGS_5
107 LOAD_R3
108 LOAD_R4
109 LOAD_R5
110 LOAD_R6
111 LOAD_R7
112 .endm
113
114 .macro LOAD_REGS_6
115 LOAD_REGS_5
116 LOAD_R8
117 .endm
118
119 .macro LOAD_REGS_8
120 LOAD_REGS_6
121 LOAD_R9
122 LOAD_R10
123 .endm
124
125 .macro STORE_REGS_0_1
126 lwz r11, 8(r1)
127 std r4, 0(r11)
128 mr r4, r3
129 li r3, 0
130 addi r1,r1,16
131 .endm
132
133 .macro STORE_REGS_5_2
134 lwz r11, 16(r1)
135 std r4, 0(r11)
136 lwz r11, 20(r1)
137 std r5, 0(r11)
138 .endm
139
140 .macro STORE_REGS_6_1
141 lwz r11, 24(r1)
142 std r4, 0(r11)
143 .endm
144
145 GLOBAL lv1_get_logical_ppe_id
146 SAVE_LR
147 LOAD_REGS_0
148 HVCALL 69
149 STORE_REGS_0_1
150 LOAD_LR
151 blr
152
153 GLOBAL lv1_get_logical_partition_id
154 SAVE_LR
155 LOAD_REGS_0
156 HVCALL 74
157 STORE_REGS_0_1
158 LOAD_LR
159 blr
160
161 GLOBAL lv1_get_repository_node_value
162 SAVE_LR
163 LOAD_REGS_5
164 HVCALL 91
165 STORE_REGS_5_2
166 LOAD_LR
167 blr
168
169 GLOBAL lv1_panic
170 SAVE_LR
171 LOAD_REGS_8
172 HVCALL 255
173 LOAD_LR
174 blr