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