]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
6eda3a75 DM |
2 | /* %o0: devhandle |
3 | * %o1: devino | |
4 | * | |
5 | * returns %o0: sysino | |
6 | */ | |
687124dd | 7 | ENTRY(sun4v_devino_to_sysino) |
6eda3a75 DM |
8 | mov HV_FAST_INTR_DEVINO2SYSINO, %o5 |
9 | ta HV_FAST_TRAP | |
10 | retl | |
11 | mov %o1, %o0 | |
687124dd | 12 | ENDPROC(sun4v_devino_to_sysino) |
6eda3a75 DM |
13 | |
14 | /* %o0: sysino | |
15 | * | |
16 | * returns %o0: intr_enabled (HV_INTR_{DISABLED,ENABLED}) | |
17 | */ | |
687124dd | 18 | ENTRY(sun4v_intr_getenabled) |
6eda3a75 DM |
19 | mov HV_FAST_INTR_GETENABLED, %o5 |
20 | ta HV_FAST_TRAP | |
21 | retl | |
22 | mov %o1, %o0 | |
687124dd | 23 | ENDPROC(sun4v_intr_getenabled) |
6eda3a75 DM |
24 | |
25 | /* %o0: sysino | |
26 | * %o1: intr_enabled (HV_INTR_{DISABLED,ENABLED}) | |
27 | */ | |
687124dd | 28 | ENTRY(sun4v_intr_setenabled) |
6eda3a75 DM |
29 | mov HV_FAST_INTR_SETENABLED, %o5 |
30 | ta HV_FAST_TRAP | |
31 | retl | |
32 | nop | |
687124dd | 33 | ENDPROC(sun4v_intr_setenabled) |
6eda3a75 DM |
34 | |
35 | /* %o0: sysino | |
36 | * | |
37 | * returns %o0: intr_state (HV_INTR_STATE_*) | |
38 | */ | |
687124dd | 39 | ENTRY(sun4v_intr_getstate) |
6eda3a75 DM |
40 | mov HV_FAST_INTR_GETSTATE, %o5 |
41 | ta HV_FAST_TRAP | |
42 | retl | |
43 | mov %o1, %o0 | |
687124dd | 44 | ENDPROC(sun4v_intr_getstate) |
6eda3a75 DM |
45 | |
46 | /* %o0: sysino | |
47 | * %o1: intr_state (HV_INTR_STATE_*) | |
48 | */ | |
687124dd | 49 | ENTRY(sun4v_intr_setstate) |
6eda3a75 DM |
50 | mov HV_FAST_INTR_SETSTATE, %o5 |
51 | ta HV_FAST_TRAP | |
52 | retl | |
53 | nop | |
687124dd | 54 | ENDPROC(sun4v_intr_setstate) |
6eda3a75 DM |
55 | |
56 | /* %o0: sysino | |
57 | * | |
58 | * returns %o0: cpuid | |
59 | */ | |
687124dd | 60 | ENTRY(sun4v_intr_gettarget) |
6eda3a75 DM |
61 | mov HV_FAST_INTR_GETTARGET, %o5 |
62 | ta HV_FAST_TRAP | |
63 | retl | |
64 | mov %o1, %o0 | |
687124dd | 65 | ENDPROC(sun4v_intr_gettarget) |
6eda3a75 DM |
66 | |
67 | /* %o0: sysino | |
68 | * %o1: cpuid | |
69 | */ | |
687124dd | 70 | ENTRY(sun4v_intr_settarget) |
6eda3a75 DM |
71 | mov HV_FAST_INTR_SETTARGET, %o5 |
72 | ta HV_FAST_TRAP | |
73 | retl | |
74 | nop | |
687124dd | 75 | ENDPROC(sun4v_intr_settarget) |
6eda3a75 DM |
76 | |
77 | /* %o0: cpuid | |
78 | * %o1: pc | |
79 | * %o2: rtba | |
80 | * %o3: arg0 | |
81 | * | |
82 | * returns %o0: status | |
83 | */ | |
687124dd | 84 | ENTRY(sun4v_cpu_start) |
6eda3a75 DM |
85 | mov HV_FAST_CPU_START, %o5 |
86 | ta HV_FAST_TRAP | |
87 | retl | |
88 | nop | |
687124dd | 89 | ENDPROC(sun4v_cpu_start) |
6eda3a75 DM |
90 | |
91 | /* %o0: cpuid | |
92 | * | |
93 | * returns %o0: status | |
94 | */ | |
687124dd | 95 | ENTRY(sun4v_cpu_stop) |
6eda3a75 DM |
96 | mov HV_FAST_CPU_STOP, %o5 |
97 | ta HV_FAST_TRAP | |
98 | retl | |
99 | nop | |
687124dd | 100 | ENDPROC(sun4v_cpu_stop) |
6eda3a75 DM |
101 | |
102 | /* returns %o0: status */ | |
687124dd | 103 | ENTRY(sun4v_cpu_yield) |
6eda3a75 DM |
104 | mov HV_FAST_CPU_YIELD, %o5 |
105 | ta HV_FAST_TRAP | |
106 | retl | |
107 | nop | |
687124dd | 108 | ENDPROC(sun4v_cpu_yield) |
6eda3a75 | 109 | |
28d43de7 VK |
110 | /* %o0: cpuid |
111 | * | |
112 | * returns %o0: status | |
113 | */ | |
114 | ENTRY(sun4v_cpu_poke) | |
115 | mov HV_FAST_CPU_POKE, %o5 | |
116 | ta HV_FAST_TRAP | |
117 | retl | |
118 | nop | |
119 | ENDPROC(sun4v_cpu_poke) | |
120 | ||
6eda3a75 DM |
121 | /* %o0: type |
122 | * %o1: queue paddr | |
123 | * %o2: num queue entries | |
124 | * | |
125 | * returns %o0: status | |
126 | */ | |
687124dd | 127 | ENTRY(sun4v_cpu_qconf) |
6eda3a75 DM |
128 | mov HV_FAST_CPU_QCONF, %o5 |
129 | ta HV_FAST_TRAP | |
130 | retl | |
131 | nop | |
687124dd | 132 | ENDPROC(sun4v_cpu_qconf) |
6eda3a75 DM |
133 | |
134 | /* %o0: num cpus in cpu list | |
135 | * %o1: cpu list paddr | |
136 | * %o2: mondo block paddr | |
137 | * | |
138 | * returns %o0: status | |
139 | */ | |
687124dd | 140 | ENTRY(sun4v_cpu_mondo_send) |
6eda3a75 DM |
141 | mov HV_FAST_CPU_MONDO_SEND, %o5 |
142 | ta HV_FAST_TRAP | |
143 | retl | |
144 | nop | |
687124dd | 145 | ENDPROC(sun4v_cpu_mondo_send) |
6eda3a75 DM |
146 | |
147 | /* %o0: CPU ID | |
148 | * | |
149 | * returns %o0: -status if status non-zero, else | |
150 | * %o0: cpu state as HV_CPU_STATE_* | |
151 | */ | |
687124dd | 152 | ENTRY(sun4v_cpu_state) |
6eda3a75 DM |
153 | mov HV_FAST_CPU_STATE, %o5 |
154 | ta HV_FAST_TRAP | |
155 | brnz,pn %o0, 1f | |
156 | sub %g0, %o0, %o0 | |
157 | mov %o1, %o0 | |
158 | 1: retl | |
159 | nop | |
687124dd | 160 | ENDPROC(sun4v_cpu_state) |
6eda3a75 DM |
161 | |
162 | /* %o0: virtual address | |
163 | * %o1: must be zero | |
164 | * %o2: TTE | |
165 | * %o3: HV_MMU_* flags | |
166 | * | |
167 | * returns %o0: status | |
168 | */ | |
687124dd | 169 | ENTRY(sun4v_mmu_map_perm_addr) |
6eda3a75 DM |
170 | mov HV_FAST_MMU_MAP_PERM_ADDR, %o5 |
171 | ta HV_FAST_TRAP | |
172 | retl | |
173 | nop | |
687124dd | 174 | ENDPROC(sun4v_mmu_map_perm_addr) |
6eda3a75 DM |
175 | |
176 | /* %o0: number of TSB descriptions | |
177 | * %o1: TSB descriptions real address | |
178 | * | |
179 | * returns %o0: status | |
180 | */ | |
687124dd | 181 | ENTRY(sun4v_mmu_tsb_ctx0) |
6eda3a75 DM |
182 | mov HV_FAST_MMU_TSB_CTX0, %o5 |
183 | ta HV_FAST_TRAP | |
184 | retl | |
185 | nop | |
687124dd | 186 | ENDPROC(sun4v_mmu_tsb_ctx0) |
6eda3a75 DM |
187 | |
188 | /* %o0: API group number | |
189 | * %o1: pointer to unsigned long major number storage | |
190 | * %o2: pointer to unsigned long minor number storage | |
191 | * | |
192 | * returns %o0: status | |
193 | */ | |
687124dd | 194 | ENTRY(sun4v_get_version) |
6eda3a75 DM |
195 | mov HV_CORE_GET_VER, %o5 |
196 | mov %o1, %o3 | |
197 | mov %o2, %o4 | |
198 | ta HV_CORE_TRAP | |
199 | stx %o1, [%o3] | |
200 | retl | |
201 | stx %o2, [%o4] | |
687124dd | 202 | ENDPROC(sun4v_get_version) |
6eda3a75 DM |
203 | |
204 | /* %o0: API group number | |
205 | * %o1: desired major number | |
206 | * %o2: desired minor number | |
207 | * %o3: pointer to unsigned long actual minor number storage | |
208 | * | |
209 | * returns %o0: status | |
210 | */ | |
687124dd | 211 | ENTRY(sun4v_set_version) |
6eda3a75 DM |
212 | mov HV_CORE_SET_VER, %o5 |
213 | mov %o3, %o4 | |
214 | ta HV_CORE_TRAP | |
215 | retl | |
216 | stx %o1, [%o4] | |
687124dd | 217 | ENDPROC(sun4v_set_version) |
6eda3a75 DM |
218 | |
219 | /* %o0: pointer to unsigned long time | |
220 | * | |
221 | * returns %o0: status | |
222 | */ | |
687124dd | 223 | ENTRY(sun4v_tod_get) |
6eda3a75 DM |
224 | mov %o0, %o4 |
225 | mov HV_FAST_TOD_GET, %o5 | |
226 | ta HV_FAST_TRAP | |
227 | stx %o1, [%o4] | |
228 | retl | |
229 | nop | |
687124dd | 230 | ENDPROC(sun4v_tod_get) |
6eda3a75 DM |
231 | |
232 | /* %o0: time | |
233 | * | |
234 | * returns %o0: status | |
235 | */ | |
687124dd | 236 | ENTRY(sun4v_tod_set) |
6eda3a75 DM |
237 | mov HV_FAST_TOD_SET, %o5 |
238 | ta HV_FAST_TRAP | |
239 | retl | |
240 | nop | |
687124dd | 241 | ENDPROC(sun4v_tod_set) |
6eda3a75 DM |
242 | |
243 | /* %o0: pointer to unsigned long status | |
244 | * | |
245 | * returns %o0: signed character | |
246 | */ | |
687124dd | 247 | ENTRY(sun4v_con_getchar) |
6eda3a75 DM |
248 | mov %o0, %o4 |
249 | mov HV_FAST_CONS_GETCHAR, %o5 | |
250 | clr %o0 | |
251 | clr %o1 | |
252 | ta HV_FAST_TRAP | |
253 | stx %o0, [%o4] | |
254 | retl | |
255 | sra %o1, 0, %o0 | |
687124dd | 256 | ENDPROC(sun4v_con_getchar) |
6eda3a75 DM |
257 | |
258 | /* %o0: signed long character | |
259 | * | |
260 | * returns %o0: status | |
261 | */ | |
687124dd | 262 | ENTRY(sun4v_con_putchar) |
6eda3a75 DM |
263 | mov HV_FAST_CONS_PUTCHAR, %o5 |
264 | ta HV_FAST_TRAP | |
265 | retl | |
266 | sra %o0, 0, %o0 | |
687124dd | 267 | ENDPROC(sun4v_con_putchar) |
6eda3a75 DM |
268 | |
269 | /* %o0: buffer real address | |
270 | * %o1: buffer size | |
271 | * %o2: pointer to unsigned long bytes_read | |
272 | * | |
273 | * returns %o0: status | |
274 | */ | |
687124dd | 275 | ENTRY(sun4v_con_read) |
6eda3a75 DM |
276 | mov %o2, %o4 |
277 | mov HV_FAST_CONS_READ, %o5 | |
278 | ta HV_FAST_TRAP | |
279 | brnz %o0, 1f | |
280 | cmp %o1, -1 /* break */ | |
281 | be,a,pn %icc, 1f | |
282 | mov %o1, %o0 | |
283 | cmp %o1, -2 /* hup */ | |
284 | be,a,pn %icc, 1f | |
285 | mov %o1, %o0 | |
286 | stx %o1, [%o4] | |
287 | 1: retl | |
288 | nop | |
687124dd | 289 | ENDPROC(sun4v_con_read) |
6eda3a75 DM |
290 | |
291 | /* %o0: buffer real address | |
292 | * %o1: buffer size | |
293 | * %o2: pointer to unsigned long bytes_written | |
294 | * | |
295 | * returns %o0: status | |
296 | */ | |
687124dd | 297 | ENTRY(sun4v_con_write) |
6eda3a75 DM |
298 | mov %o2, %o4 |
299 | mov HV_FAST_CONS_WRITE, %o5 | |
300 | ta HV_FAST_TRAP | |
301 | stx %o1, [%o4] | |
302 | retl | |
303 | nop | |
687124dd | 304 | ENDPROC(sun4v_con_write) |
6eda3a75 DM |
305 | |
306 | /* %o0: soft state | |
307 | * %o1: address of description string | |
308 | * | |
309 | * returns %o0: status | |
310 | */ | |
687124dd | 311 | ENTRY(sun4v_mach_set_soft_state) |
6eda3a75 DM |
312 | mov HV_FAST_MACH_SET_SOFT_STATE, %o5 |
313 | ta HV_FAST_TRAP | |
314 | retl | |
315 | nop | |
687124dd | 316 | ENDPROC(sun4v_mach_set_soft_state) |
6eda3a75 DM |
317 | |
318 | /* %o0: exit code | |
319 | * | |
320 | * Does not return. | |
321 | */ | |
687124dd | 322 | ENTRY(sun4v_mach_exit) |
6eda3a75 DM |
323 | mov HV_FAST_MACH_EXIT, %o5 |
324 | ta HV_FAST_TRAP | |
325 | retl | |
326 | nop | |
687124dd | 327 | ENDPROC(sun4v_mach_exit) |
6eda3a75 DM |
328 | |
329 | /* %o0: buffer real address | |
330 | * %o1: buffer length | |
331 | * %o2: pointer to unsigned long real_buf_len | |
332 | * | |
333 | * returns %o0: status | |
334 | */ | |
687124dd | 335 | ENTRY(sun4v_mach_desc) |
6eda3a75 DM |
336 | mov %o2, %o4 |
337 | mov HV_FAST_MACH_DESC, %o5 | |
338 | ta HV_FAST_TRAP | |
339 | stx %o1, [%o4] | |
340 | retl | |
341 | nop | |
687124dd | 342 | ENDPROC(sun4v_mach_desc) |
6eda3a75 DM |
343 | |
344 | /* %o0: new timeout in milliseconds | |
345 | * %o1: pointer to unsigned long orig_timeout | |
346 | * | |
347 | * returns %o0: status | |
348 | */ | |
687124dd | 349 | ENTRY(sun4v_mach_set_watchdog) |
6eda3a75 DM |
350 | mov %o1, %o4 |
351 | mov HV_FAST_MACH_SET_WATCHDOG, %o5 | |
352 | ta HV_FAST_TRAP | |
ca0bb079 | 353 | brnz,a,pn %o4, 0f |
6eda3a75 | 354 | stx %o1, [%o4] |
ca0bb079 | 355 | 0: retl |
6eda3a75 | 356 | nop |
687124dd | 357 | ENDPROC(sun4v_mach_set_watchdog) |
d3867f04 | 358 | EXPORT_SYMBOL(sun4v_mach_set_watchdog) |
6eda3a75 DM |
359 | |
360 | /* No inputs and does not return. */ | |
687124dd | 361 | ENTRY(sun4v_mach_sir) |
6eda3a75 DM |
362 | mov %o1, %o4 |
363 | mov HV_FAST_MACH_SIR, %o5 | |
364 | ta HV_FAST_TRAP | |
365 | stx %o1, [%o4] | |
366 | retl | |
367 | nop | |
687124dd | 368 | ENDPROC(sun4v_mach_sir) |
6eda3a75 DM |
369 | |
370 | /* %o0: channel | |
371 | * %o1: ra | |
372 | * %o2: num_entries | |
373 | * | |
374 | * returns %o0: status | |
375 | */ | |
687124dd | 376 | ENTRY(sun4v_ldc_tx_qconf) |
6eda3a75 DM |
377 | mov HV_FAST_LDC_TX_QCONF, %o5 |
378 | ta HV_FAST_TRAP | |
379 | retl | |
380 | nop | |
687124dd | 381 | ENDPROC(sun4v_ldc_tx_qconf) |
6eda3a75 DM |
382 | |
383 | /* %o0: channel | |
384 | * %o1: pointer to unsigned long ra | |
385 | * %o2: pointer to unsigned long num_entries | |
386 | * | |
387 | * returns %o0: status | |
388 | */ | |
687124dd | 389 | ENTRY(sun4v_ldc_tx_qinfo) |
6eda3a75 DM |
390 | mov %o1, %g1 |
391 | mov %o2, %g2 | |
392 | mov HV_FAST_LDC_TX_QINFO, %o5 | |
393 | ta HV_FAST_TRAP | |
394 | stx %o1, [%g1] | |
395 | stx %o2, [%g2] | |
396 | retl | |
397 | nop | |
687124dd | 398 | ENDPROC(sun4v_ldc_tx_qinfo) |
6eda3a75 DM |
399 | |
400 | /* %o0: channel | |
401 | * %o1: pointer to unsigned long head_off | |
402 | * %o2: pointer to unsigned long tail_off | |
403 | * %o2: pointer to unsigned long chan_state | |
404 | * | |
405 | * returns %o0: status | |
406 | */ | |
687124dd | 407 | ENTRY(sun4v_ldc_tx_get_state) |
6eda3a75 DM |
408 | mov %o1, %g1 |
409 | mov %o2, %g2 | |
410 | mov %o3, %g3 | |
411 | mov HV_FAST_LDC_TX_GET_STATE, %o5 | |
412 | ta HV_FAST_TRAP | |
413 | stx %o1, [%g1] | |
414 | stx %o2, [%g2] | |
415 | stx %o3, [%g3] | |
416 | retl | |
417 | nop | |
687124dd | 418 | ENDPROC(sun4v_ldc_tx_get_state) |
6eda3a75 DM |
419 | |
420 | /* %o0: channel | |
421 | * %o1: tail_off | |
422 | * | |
423 | * returns %o0: status | |
424 | */ | |
687124dd | 425 | ENTRY(sun4v_ldc_tx_set_qtail) |
6eda3a75 DM |
426 | mov HV_FAST_LDC_TX_SET_QTAIL, %o5 |
427 | ta HV_FAST_TRAP | |
428 | retl | |
429 | nop | |
687124dd | 430 | ENDPROC(sun4v_ldc_tx_set_qtail) |
6eda3a75 DM |
431 | |
432 | /* %o0: channel | |
433 | * %o1: ra | |
434 | * %o2: num_entries | |
435 | * | |
436 | * returns %o0: status | |
437 | */ | |
687124dd | 438 | ENTRY(sun4v_ldc_rx_qconf) |
6eda3a75 DM |
439 | mov HV_FAST_LDC_RX_QCONF, %o5 |
440 | ta HV_FAST_TRAP | |
441 | retl | |
442 | nop | |
687124dd | 443 | ENDPROC(sun4v_ldc_rx_qconf) |
6eda3a75 DM |
444 | |
445 | /* %o0: channel | |
446 | * %o1: pointer to unsigned long ra | |
447 | * %o2: pointer to unsigned long num_entries | |
448 | * | |
449 | * returns %o0: status | |
450 | */ | |
687124dd | 451 | ENTRY(sun4v_ldc_rx_qinfo) |
6eda3a75 DM |
452 | mov %o1, %g1 |
453 | mov %o2, %g2 | |
454 | mov HV_FAST_LDC_RX_QINFO, %o5 | |
455 | ta HV_FAST_TRAP | |
456 | stx %o1, [%g1] | |
457 | stx %o2, [%g2] | |
458 | retl | |
459 | nop | |
687124dd | 460 | ENDPROC(sun4v_ldc_rx_qinfo) |
6eda3a75 DM |
461 | |
462 | /* %o0: channel | |
463 | * %o1: pointer to unsigned long head_off | |
464 | * %o2: pointer to unsigned long tail_off | |
465 | * %o2: pointer to unsigned long chan_state | |
466 | * | |
467 | * returns %o0: status | |
468 | */ | |
687124dd | 469 | ENTRY(sun4v_ldc_rx_get_state) |
6eda3a75 DM |
470 | mov %o1, %g1 |
471 | mov %o2, %g2 | |
472 | mov %o3, %g3 | |
473 | mov HV_FAST_LDC_RX_GET_STATE, %o5 | |
474 | ta HV_FAST_TRAP | |
475 | stx %o1, [%g1] | |
476 | stx %o2, [%g2] | |
477 | stx %o3, [%g3] | |
478 | retl | |
479 | nop | |
687124dd | 480 | ENDPROC(sun4v_ldc_rx_get_state) |
6eda3a75 DM |
481 | |
482 | /* %o0: channel | |
483 | * %o1: head_off | |
484 | * | |
485 | * returns %o0: status | |
486 | */ | |
687124dd | 487 | ENTRY(sun4v_ldc_rx_set_qhead) |
6eda3a75 DM |
488 | mov HV_FAST_LDC_RX_SET_QHEAD, %o5 |
489 | ta HV_FAST_TRAP | |
490 | retl | |
491 | nop | |
687124dd | 492 | ENDPROC(sun4v_ldc_rx_set_qhead) |
6eda3a75 DM |
493 | |
494 | /* %o0: channel | |
495 | * %o1: ra | |
496 | * %o2: num_entries | |
497 | * | |
498 | * returns %o0: status | |
499 | */ | |
687124dd | 500 | ENTRY(sun4v_ldc_set_map_table) |
6eda3a75 DM |
501 | mov HV_FAST_LDC_SET_MAP_TABLE, %o5 |
502 | ta HV_FAST_TRAP | |
503 | retl | |
504 | nop | |
687124dd | 505 | ENDPROC(sun4v_ldc_set_map_table) |
6eda3a75 DM |
506 | |
507 | /* %o0: channel | |
508 | * %o1: pointer to unsigned long ra | |
509 | * %o2: pointer to unsigned long num_entries | |
510 | * | |
511 | * returns %o0: status | |
512 | */ | |
687124dd | 513 | ENTRY(sun4v_ldc_get_map_table) |
6eda3a75 DM |
514 | mov %o1, %g1 |
515 | mov %o2, %g2 | |
516 | mov HV_FAST_LDC_GET_MAP_TABLE, %o5 | |
517 | ta HV_FAST_TRAP | |
518 | stx %o1, [%g1] | |
519 | stx %o2, [%g2] | |
520 | retl | |
521 | nop | |
687124dd | 522 | ENDPROC(sun4v_ldc_get_map_table) |
6eda3a75 DM |
523 | |
524 | /* %o0: channel | |
525 | * %o1: dir_code | |
526 | * %o2: tgt_raddr | |
527 | * %o3: lcl_raddr | |
528 | * %o4: len | |
529 | * %o5: pointer to unsigned long actual_len | |
530 | * | |
531 | * returns %o0: status | |
532 | */ | |
687124dd | 533 | ENTRY(sun4v_ldc_copy) |
6eda3a75 DM |
534 | mov %o5, %g1 |
535 | mov HV_FAST_LDC_COPY, %o5 | |
536 | ta HV_FAST_TRAP | |
537 | stx %o1, [%g1] | |
538 | retl | |
539 | nop | |
687124dd | 540 | ENDPROC(sun4v_ldc_copy) |
6eda3a75 DM |
541 | |
542 | /* %o0: channel | |
543 | * %o1: cookie | |
544 | * %o2: pointer to unsigned long ra | |
545 | * %o3: pointer to unsigned long perm | |
546 | * | |
547 | * returns %o0: status | |
548 | */ | |
687124dd | 549 | ENTRY(sun4v_ldc_mapin) |
6eda3a75 DM |
550 | mov %o2, %g1 |
551 | mov %o3, %g2 | |
552 | mov HV_FAST_LDC_MAPIN, %o5 | |
553 | ta HV_FAST_TRAP | |
554 | stx %o1, [%g1] | |
555 | stx %o2, [%g2] | |
556 | retl | |
557 | nop | |
687124dd | 558 | ENDPROC(sun4v_ldc_mapin) |
6eda3a75 DM |
559 | |
560 | /* %o0: ra | |
561 | * | |
562 | * returns %o0: status | |
563 | */ | |
687124dd | 564 | ENTRY(sun4v_ldc_unmap) |
6eda3a75 DM |
565 | mov HV_FAST_LDC_UNMAP, %o5 |
566 | ta HV_FAST_TRAP | |
567 | retl | |
568 | nop | |
687124dd | 569 | ENDPROC(sun4v_ldc_unmap) |
6eda3a75 DM |
570 | |
571 | /* %o0: channel | |
572 | * %o1: cookie | |
573 | * %o2: mte_cookie | |
574 | * | |
575 | * returns %o0: status | |
576 | */ | |
687124dd | 577 | ENTRY(sun4v_ldc_revoke) |
6eda3a75 DM |
578 | mov HV_FAST_LDC_REVOKE, %o5 |
579 | ta HV_FAST_TRAP | |
580 | retl | |
581 | nop | |
687124dd | 582 | ENDPROC(sun4v_ldc_revoke) |
6eda3a75 DM |
583 | |
584 | /* %o0: device handle | |
585 | * %o1: device INO | |
586 | * %o2: pointer to unsigned long cookie | |
587 | * | |
588 | * returns %o0: status | |
589 | */ | |
687124dd | 590 | ENTRY(sun4v_vintr_get_cookie) |
6eda3a75 DM |
591 | mov %o2, %g1 |
592 | mov HV_FAST_VINTR_GET_COOKIE, %o5 | |
593 | ta HV_FAST_TRAP | |
594 | stx %o1, [%g1] | |
595 | retl | |
596 | nop | |
687124dd | 597 | ENDPROC(sun4v_vintr_get_cookie) |
6eda3a75 DM |
598 | |
599 | /* %o0: device handle | |
600 | * %o1: device INO | |
601 | * %o2: cookie | |
602 | * | |
603 | * returns %o0: status | |
604 | */ | |
687124dd | 605 | ENTRY(sun4v_vintr_set_cookie) |
6eda3a75 DM |
606 | mov HV_FAST_VINTR_SET_COOKIE, %o5 |
607 | ta HV_FAST_TRAP | |
608 | retl | |
609 | nop | |
687124dd | 610 | ENDPROC(sun4v_vintr_set_cookie) |
6eda3a75 DM |
611 | |
612 | /* %o0: device handle | |
613 | * %o1: device INO | |
614 | * %o2: pointer to unsigned long valid_state | |
615 | * | |
616 | * returns %o0: status | |
617 | */ | |
687124dd | 618 | ENTRY(sun4v_vintr_get_valid) |
6eda3a75 DM |
619 | mov %o2, %g1 |
620 | mov HV_FAST_VINTR_GET_VALID, %o5 | |
621 | ta HV_FAST_TRAP | |
622 | stx %o1, [%g1] | |
623 | retl | |
624 | nop | |
687124dd | 625 | ENDPROC(sun4v_vintr_get_valid) |
6eda3a75 DM |
626 | |
627 | /* %o0: device handle | |
628 | * %o1: device INO | |
629 | * %o2: valid_state | |
630 | * | |
631 | * returns %o0: status | |
632 | */ | |
687124dd | 633 | ENTRY(sun4v_vintr_set_valid) |
6eda3a75 DM |
634 | mov HV_FAST_VINTR_SET_VALID, %o5 |
635 | ta HV_FAST_TRAP | |
636 | retl | |
637 | nop | |
687124dd | 638 | ENDPROC(sun4v_vintr_set_valid) |
6eda3a75 DM |
639 | |
640 | /* %o0: device handle | |
641 | * %o1: device INO | |
642 | * %o2: pointer to unsigned long state | |
643 | * | |
644 | * returns %o0: status | |
645 | */ | |
687124dd | 646 | ENTRY(sun4v_vintr_get_state) |
6eda3a75 DM |
647 | mov %o2, %g1 |
648 | mov HV_FAST_VINTR_GET_STATE, %o5 | |
649 | ta HV_FAST_TRAP | |
650 | stx %o1, [%g1] | |
651 | retl | |
652 | nop | |
687124dd | 653 | ENDPROC(sun4v_vintr_get_state) |
6eda3a75 DM |
654 | |
655 | /* %o0: device handle | |
656 | * %o1: device INO | |
657 | * %o2: state | |
658 | * | |
659 | * returns %o0: status | |
660 | */ | |
687124dd | 661 | ENTRY(sun4v_vintr_set_state) |
6eda3a75 DM |
662 | mov HV_FAST_VINTR_SET_STATE, %o5 |
663 | ta HV_FAST_TRAP | |
664 | retl | |
665 | nop | |
687124dd | 666 | ENDPROC(sun4v_vintr_set_state) |
6eda3a75 DM |
667 | |
668 | /* %o0: device handle | |
669 | * %o1: device INO | |
670 | * %o2: pointer to unsigned long cpuid | |
671 | * | |
672 | * returns %o0: status | |
673 | */ | |
687124dd | 674 | ENTRY(sun4v_vintr_get_target) |
6eda3a75 DM |
675 | mov %o2, %g1 |
676 | mov HV_FAST_VINTR_GET_TARGET, %o5 | |
677 | ta HV_FAST_TRAP | |
678 | stx %o1, [%g1] | |
679 | retl | |
680 | nop | |
687124dd | 681 | ENDPROC(sun4v_vintr_get_target) |
6eda3a75 DM |
682 | |
683 | /* %o0: device handle | |
684 | * %o1: device INO | |
685 | * %o2: cpuid | |
686 | * | |
687 | * returns %o0: status | |
688 | */ | |
687124dd | 689 | ENTRY(sun4v_vintr_set_target) |
6eda3a75 DM |
690 | mov HV_FAST_VINTR_SET_TARGET, %o5 |
691 | ta HV_FAST_TRAP | |
692 | retl | |
693 | nop | |
687124dd | 694 | ENDPROC(sun4v_vintr_set_target) |
6eda3a75 DM |
695 | |
696 | /* %o0: NCS sub-function | |
697 | * %o1: sub-function arg real-address | |
698 | * %o2: sub-function arg size | |
699 | * | |
700 | * returns %o0: status | |
701 | */ | |
687124dd | 702 | ENTRY(sun4v_ncs_request) |
6eda3a75 DM |
703 | mov HV_FAST_NCS_REQUEST, %o5 |
704 | ta HV_FAST_TRAP | |
705 | retl | |
706 | nop | |
687124dd | 707 | ENDPROC(sun4v_ncs_request) |
6eda3a75 | 708 | |
687124dd | 709 | ENTRY(sun4v_svc_send) |
6eda3a75 DM |
710 | save %sp, -192, %sp |
711 | mov %i0, %o0 | |
712 | mov %i1, %o1 | |
713 | mov %i2, %o2 | |
714 | mov HV_FAST_SVC_SEND, %o5 | |
715 | ta HV_FAST_TRAP | |
716 | stx %o1, [%i3] | |
717 | ret | |
718 | restore | |
687124dd | 719 | ENDPROC(sun4v_svc_send) |
6eda3a75 | 720 | |
687124dd | 721 | ENTRY(sun4v_svc_recv) |
6eda3a75 DM |
722 | save %sp, -192, %sp |
723 | mov %i0, %o0 | |
724 | mov %i1, %o1 | |
725 | mov %i2, %o2 | |
726 | mov HV_FAST_SVC_RECV, %o5 | |
727 | ta HV_FAST_TRAP | |
728 | stx %o1, [%i3] | |
729 | ret | |
730 | restore | |
687124dd | 731 | ENDPROC(sun4v_svc_recv) |
6eda3a75 | 732 | |
687124dd | 733 | ENTRY(sun4v_svc_getstatus) |
6eda3a75 DM |
734 | mov HV_FAST_SVC_GETSTATUS, %o5 |
735 | mov %o1, %o4 | |
736 | ta HV_FAST_TRAP | |
737 | stx %o1, [%o4] | |
738 | retl | |
739 | nop | |
687124dd | 740 | ENDPROC(sun4v_svc_getstatus) |
6eda3a75 | 741 | |
687124dd | 742 | ENTRY(sun4v_svc_setstatus) |
6eda3a75 DM |
743 | mov HV_FAST_SVC_SETSTATUS, %o5 |
744 | ta HV_FAST_TRAP | |
745 | retl | |
746 | nop | |
687124dd | 747 | ENDPROC(sun4v_svc_setstatus) |
6eda3a75 | 748 | |
687124dd | 749 | ENTRY(sun4v_svc_clrstatus) |
6eda3a75 DM |
750 | mov HV_FAST_SVC_CLRSTATUS, %o5 |
751 | ta HV_FAST_TRAP | |
752 | retl | |
753 | nop | |
687124dd | 754 | ENDPROC(sun4v_svc_clrstatus) |
6eda3a75 | 755 | |
687124dd | 756 | ENTRY(sun4v_mmustat_conf) |
6eda3a75 DM |
757 | mov %o1, %o4 |
758 | mov HV_FAST_MMUSTAT_CONF, %o5 | |
759 | ta HV_FAST_TRAP | |
760 | stx %o1, [%o4] | |
761 | retl | |
762 | nop | |
687124dd | 763 | ENDPROC(sun4v_mmustat_conf) |
6eda3a75 | 764 | |
687124dd | 765 | ENTRY(sun4v_mmustat_info) |
6eda3a75 DM |
766 | mov %o0, %o4 |
767 | mov HV_FAST_MMUSTAT_INFO, %o5 | |
768 | ta HV_FAST_TRAP | |
769 | stx %o1, [%o4] | |
770 | retl | |
771 | nop | |
687124dd | 772 | ENDPROC(sun4v_mmustat_info) |
6eda3a75 | 773 | |
687124dd | 774 | ENTRY(sun4v_mmu_demap_all) |
6eda3a75 DM |
775 | clr %o0 |
776 | clr %o1 | |
777 | mov HV_MMU_ALL, %o2 | |
778 | mov HV_FAST_MMU_DEMAP_ALL, %o5 | |
779 | ta HV_FAST_TRAP | |
780 | retl | |
781 | nop | |
687124dd | 782 | ENDPROC(sun4v_mmu_demap_all) |
3178a07c DM |
783 | |
784 | ENTRY(sun4v_niagara_getperf) | |
785 | mov %o0, %o4 | |
786 | mov HV_FAST_GET_PERFREG, %o5 | |
787 | ta HV_FAST_TRAP | |
788 | stx %o1, [%o4] | |
789 | retl | |
790 | nop | |
791 | ENDPROC(sun4v_niagara_getperf) | |
d3867f04 | 792 | EXPORT_SYMBOL(sun4v_niagara_getperf) |
3178a07c DM |
793 | |
794 | ENTRY(sun4v_niagara_setperf) | |
795 | mov HV_FAST_SET_PERFREG, %o5 | |
796 | ta HV_FAST_TRAP | |
797 | retl | |
798 | nop | |
799 | ENDPROC(sun4v_niagara_setperf) | |
d3867f04 | 800 | EXPORT_SYMBOL(sun4v_niagara_setperf) |
3178a07c DM |
801 | |
802 | ENTRY(sun4v_niagara2_getperf) | |
803 | mov %o0, %o4 | |
804 | mov HV_FAST_N2_GET_PERFREG, %o5 | |
805 | ta HV_FAST_TRAP | |
806 | stx %o1, [%o4] | |
807 | retl | |
808 | nop | |
809 | ENDPROC(sun4v_niagara2_getperf) | |
d3867f04 | 810 | EXPORT_SYMBOL(sun4v_niagara2_getperf) |
3178a07c DM |
811 | |
812 | ENTRY(sun4v_niagara2_setperf) | |
813 | mov HV_FAST_N2_SET_PERFREG, %o5 | |
814 | ta HV_FAST_TRAP | |
815 | retl | |
816 | nop | |
817 | ENDPROC(sun4v_niagara2_setperf) | |
d3867f04 | 818 | EXPORT_SYMBOL(sun4v_niagara2_setperf) |
ea5e7447 DM |
819 | |
820 | ENTRY(sun4v_reboot_data_set) | |
821 | mov HV_FAST_REBOOT_DATA_SET, %o5 | |
822 | ta HV_FAST_TRAP | |
823 | retl | |
824 | nop | |
825 | ENDPROC(sun4v_reboot_data_set) | |
8c79bfa5 DM |
826 | |
827 | ENTRY(sun4v_vt_get_perfreg) | |
828 | mov %o1, %o4 | |
829 | mov HV_FAST_VT_GET_PERFREG, %o5 | |
830 | ta HV_FAST_TRAP | |
831 | stx %o1, [%o4] | |
832 | retl | |
833 | nop | |
834 | ENDPROC(sun4v_vt_get_perfreg) | |
835 | ||
836 | ENTRY(sun4v_vt_set_perfreg) | |
837 | mov HV_FAST_VT_SET_PERFREG, %o5 | |
838 | ta HV_FAST_TRAP | |
839 | retl | |
840 | nop | |
841 | ENDPROC(sun4v_vt_set_perfreg) | |
05aa1651 | 842 | |
843 | ENTRY(sun4v_t5_get_perfreg) | |
844 | mov %o1, %o4 | |
845 | mov HV_FAST_T5_GET_PERFREG, %o5 | |
846 | ta HV_FAST_TRAP | |
847 | stx %o1, [%o4] | |
848 | retl | |
849 | nop | |
850 | ENDPROC(sun4v_t5_get_perfreg) | |
851 | ||
852 | ENTRY(sun4v_t5_set_perfreg) | |
853 | mov HV_FAST_T5_SET_PERFREG, %o5 | |
854 | ta HV_FAST_TRAP | |
855 | retl | |
856 | nop | |
857 | ENDPROC(sun4v_t5_set_perfreg) | |
b5aff55d DA |
858 | |
859 | ENTRY(sun4v_m7_get_perfreg) | |
860 | mov %o1, %o4 | |
861 | mov HV_FAST_M7_GET_PERFREG, %o5 | |
862 | ta HV_FAST_TRAP | |
863 | stx %o1, [%o4] | |
864 | retl | |
865 | nop | |
866 | ENDPROC(sun4v_m7_get_perfreg) | |
867 | ||
868 | ENTRY(sun4v_m7_set_perfreg) | |
869 | mov HV_FAST_M7_SET_PERFREG, %o5 | |
870 | ta HV_FAST_TRAP | |
871 | retl | |
872 | nop | |
873 | ENDPROC(sun4v_m7_set_perfreg) |