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