aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/hvcalls.S
diff options
context:
space:
mode:
authorSam Ravnborg <sam@ravnborg.org>2008-12-03 06:11:52 -0500
committerDavid S. Miller <davem@davemloft.net>2008-12-04 12:17:21 -0500
commita88b5ba8bd8ac18aad65ee6c6a254e2e74876db3 (patch)
treeeb3d0ffaf53c3f7ec6083752c2097cecd1cb892a /arch/sparc/kernel/hvcalls.S
parentd670bd4f803c8b646acd20f3ba21e65458293faf (diff)
sparc,sparc64: unify kernel/
o Move all files from sparc64/kernel/ to sparc/kernel - rename as appropriate o Update sparc/Makefile to the changes o Update sparc/kernel/Makefile to include the sparc64 files NOTE: This commit changes link order on sparc64! Link order had to change for either of sparc32 and sparc64. And assuming sparc64 see more testing than sparc32 change link order on sparc64 where issues will be caught faster. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/hvcalls.S')
-rw-r--r--arch/sparc/kernel/hvcalls.S800
1 files changed, 800 insertions, 0 deletions
diff --git a/arch/sparc/kernel/hvcalls.S b/arch/sparc/kernel/hvcalls.S
new file mode 100644
index 00000000000..8a5f35ffb15
--- /dev/null
+++ b/arch/sparc/kernel/hvcalls.S
@@ -0,0 +1,800 @@
1 /* %o0: devhandle
2 * %o1: devino
3 *
4 * returns %o0: sysino
5 */
6ENTRY(sun4v_devino_to_sysino)
7 mov HV_FAST_INTR_DEVINO2SYSINO, %o5
8 ta HV_FAST_TRAP
9 retl
10 mov %o1, %o0
11ENDPROC(sun4v_devino_to_sysino)
12
13 /* %o0: sysino
14 *
15 * returns %o0: intr_enabled (HV_INTR_{DISABLED,ENABLED})
16 */
17ENTRY(sun4v_intr_getenabled)
18 mov HV_FAST_INTR_GETENABLED, %o5
19 ta HV_FAST_TRAP
20 retl
21 mov %o1, %o0
22ENDPROC(sun4v_intr_getenabled)
23
24 /* %o0: sysino
25 * %o1: intr_enabled (HV_INTR_{DISABLED,ENABLED})
26 */
27ENTRY(sun4v_intr_setenabled)
28 mov HV_FAST_INTR_SETENABLED, %o5
29 ta HV_FAST_TRAP
30 retl
31 nop
32ENDPROC(sun4v_intr_setenabled)
33
34 /* %o0: sysino
35 *
36 * returns %o0: intr_state (HV_INTR_STATE_*)
37 */
38ENTRY(sun4v_intr_getstate)
39 mov HV_FAST_INTR_GETSTATE, %o5
40 ta HV_FAST_TRAP
41 retl
42 mov %o1, %o0
43ENDPROC(sun4v_intr_getstate)
44
45 /* %o0: sysino
46 * %o1: intr_state (HV_INTR_STATE_*)
47 */
48ENTRY(sun4v_intr_setstate)
49 mov HV_FAST_INTR_SETSTATE, %o5
50 ta HV_FAST_TRAP
51 retl
52 nop
53ENDPROC(sun4v_intr_setstate)
54
55 /* %o0: sysino
56 *
57 * returns %o0: cpuid
58 */
59ENTRY(sun4v_intr_gettarget)
60 mov HV_FAST_INTR_GETTARGET, %o5
61 ta HV_FAST_TRAP
62 retl
63 mov %o1, %o0
64ENDPROC(sun4v_intr_gettarget)
65
66 /* %o0: sysino
67 * %o1: cpuid
68 */
69ENTRY(sun4v_intr_settarget)
70 mov HV_FAST_INTR_SETTARGET, %o5
71 ta HV_FAST_TRAP
72 retl
73 nop
74ENDPROC(sun4v_intr_settarget)
75
76 /* %o0: cpuid
77 * %o1: pc
78 * %o2: rtba
79 * %o3: arg0
80 *
81 * returns %o0: status
82 */
83ENTRY(sun4v_cpu_start)
84 mov HV_FAST_CPU_START, %o5
85 ta HV_FAST_TRAP
86 retl
87 nop
88ENDPROC(sun4v_cpu_start)
89
90 /* %o0: cpuid
91 *
92 * returns %o0: status
93 */
94ENTRY(sun4v_cpu_stop)
95 mov HV_FAST_CPU_STOP, %o5
96 ta HV_FAST_TRAP
97 retl
98 nop
99ENDPROC(sun4v_cpu_stop)
100
101 /* returns %o0: status */
102ENTRY(sun4v_cpu_yield)
103 mov HV_FAST_CPU_YIELD, %o5
104 ta HV_FAST_TRAP
105 retl
106 nop
107ENDPROC(sun4v_cpu_yield)
108
109 /* %o0: type
110 * %o1: queue paddr
111 * %o2: num queue entries
112 *
113 * returns %o0: status
114 */
115ENTRY(sun4v_cpu_qconf)
116 mov HV_FAST_CPU_QCONF, %o5
117 ta HV_FAST_TRAP
118 retl
119 nop
120ENDPROC(sun4v_cpu_qconf)
121
122 /* %o0: num cpus in cpu list
123 * %o1: cpu list paddr
124 * %o2: mondo block paddr
125 *
126 * returns %o0: status
127 */
128ENTRY(sun4v_cpu_mondo_send)
129 mov HV_FAST_CPU_MONDO_SEND, %o5
130 ta HV_FAST_TRAP
131 retl
132 nop
133ENDPROC(sun4v_cpu_mondo_send)
134
135 /* %o0: CPU ID
136 *
137 * returns %o0: -status if status non-zero, else
138 * %o0: cpu state as HV_CPU_STATE_*
139 */
140ENTRY(sun4v_cpu_state)
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
148ENDPROC(sun4v_cpu_state)
149
150 /* %o0: virtual address
151 * %o1: must be zero
152 * %o2: TTE
153 * %o3: HV_MMU_* flags
154 *
155 * returns %o0: status
156 */
157ENTRY(sun4v_mmu_map_perm_addr)
158 mov HV_FAST_MMU_MAP_PERM_ADDR, %o5
159 ta HV_FAST_TRAP
160 retl
161 nop
162ENDPROC(sun4v_mmu_map_perm_addr)
163
164 /* %o0: number of TSB descriptions
165 * %o1: TSB descriptions real address
166 *
167 * returns %o0: status
168 */
169ENTRY(sun4v_mmu_tsb_ctx0)
170 mov HV_FAST_MMU_TSB_CTX0, %o5
171 ta HV_FAST_TRAP
172 retl
173 nop
174ENDPROC(sun4v_mmu_tsb_ctx0)
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 */
182ENTRY(sun4v_get_version)
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]
190ENDPROC(sun4v_get_version)
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 */
199ENTRY(sun4v_set_version)
200 mov HV_CORE_SET_VER, %o5
201 mov %o3, %o4
202 ta HV_CORE_TRAP
203 retl
204 stx %o1, [%o4]
205ENDPROC(sun4v_set_version)
206
207 /* %o0: pointer to unsigned long time
208 *
209 * returns %o0: status
210 */
211ENTRY(sun4v_tod_get)
212 mov %o0, %o4
213 mov HV_FAST_TOD_GET, %o5
214 ta HV_FAST_TRAP
215 stx %o1, [%o4]
216 retl
217 nop
218ENDPROC(sun4v_tod_get)
219
220 /* %o0: time
221 *
222 * returns %o0: status
223 */
224ENTRY(sun4v_tod_set)
225 mov HV_FAST_TOD_SET, %o5
226 ta HV_FAST_TRAP
227 retl
228 nop
229ENDPROC(sun4v_tod_set)
230
231 /* %o0: pointer to unsigned long status
232 *
233 * returns %o0: signed character
234 */
235ENTRY(sun4v_con_getchar)
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
244ENDPROC(sun4v_con_getchar)
245
246 /* %o0: signed long character
247 *
248 * returns %o0: status
249 */
250ENTRY(sun4v_con_putchar)
251 mov HV_FAST_CONS_PUTCHAR, %o5
252 ta HV_FAST_TRAP
253 retl
254 sra %o0, 0, %o0
255ENDPROC(sun4v_con_putchar)
256
257 /* %o0: buffer real address
258 * %o1: buffer size
259 * %o2: pointer to unsigned long bytes_read
260 *
261 * returns %o0: status
262 */
263ENTRY(sun4v_con_read)
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
277ENDPROC(sun4v_con_read)
278
279 /* %o0: buffer real address
280 * %o1: buffer size
281 * %o2: pointer to unsigned long bytes_written
282 *
283 * returns %o0: status
284 */
285ENTRY(sun4v_con_write)
286 mov %o2, %o4
287 mov HV_FAST_CONS_WRITE, %o5
288 ta HV_FAST_TRAP
289 stx %o1, [%o4]
290 retl
291 nop
292ENDPROC(sun4v_con_write)
293
294 /* %o0: soft state
295 * %o1: address of description string
296 *
297 * returns %o0: status
298 */
299ENTRY(sun4v_mach_set_soft_state)
300 mov HV_FAST_MACH_SET_SOFT_STATE, %o5
301 ta HV_FAST_TRAP
302 retl
303 nop
304ENDPROC(sun4v_mach_set_soft_state)
305
306 /* %o0: exit code
307 *
308 * Does not return.
309 */
310ENTRY(sun4v_mach_exit)
311 mov HV_FAST_MACH_EXIT, %o5
312 ta HV_FAST_TRAP
313 retl
314 nop
315ENDPROC(sun4v_mach_exit)
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 */
323ENTRY(sun4v_mach_desc)
324 mov %o2, %o4
325 mov HV_FAST_MACH_DESC, %o5
326 ta HV_FAST_TRAP
327 stx %o1, [%o4]
328 retl
329 nop
330ENDPROC(sun4v_mach_desc)
331
332 /* %o0: new timeout in milliseconds
333 * %o1: pointer to unsigned long orig_timeout
334 *
335 * returns %o0: status
336 */
337ENTRY(sun4v_mach_set_watchdog)
338 mov %o1, %o4
339 mov HV_FAST_MACH_SET_WATCHDOG, %o5
340 ta HV_FAST_TRAP
341 stx %o1, [%o4]
342 retl
343 nop
344ENDPROC(sun4v_mach_set_watchdog)
345
346 /* No inputs and does not return. */
347ENTRY(sun4v_mach_sir)
348 mov %o1, %o4
349 mov HV_FAST_MACH_SIR, %o5
350 ta HV_FAST_TRAP
351 stx %o1, [%o4]
352 retl
353 nop
354ENDPROC(sun4v_mach_sir)
355
356 /* %o0: channel
357 * %o1: ra
358 * %o2: num_entries
359 *
360 * returns %o0: status
361 */
362ENTRY(sun4v_ldc_tx_qconf)
363 mov HV_FAST_LDC_TX_QCONF, %o5
364 ta HV_FAST_TRAP
365 retl
366 nop
367ENDPROC(sun4v_ldc_tx_qconf)
368
369 /* %o0: channel
370 * %o1: pointer to unsigned long ra
371 * %o2: pointer to unsigned long num_entries
372 *
373 * returns %o0: status
374 */
375ENTRY(sun4v_ldc_tx_qinfo)
376 mov %o1, %g1
377 mov %o2, %g2
378 mov HV_FAST_LDC_TX_QINFO, %o5
379 ta HV_FAST_TRAP
380 stx %o1, [%g1]
381 stx %o2, [%g2]
382 retl
383 nop
384ENDPROC(sun4v_ldc_tx_qinfo)
385
386 /* %o0: channel
387 * %o1: pointer to unsigned long head_off
388 * %o2: pointer to unsigned long tail_off
389 * %o2: pointer to unsigned long chan_state
390 *
391 * returns %o0: status
392 */
393ENTRY(sun4v_ldc_tx_get_state)
394 mov %o1, %g1
395 mov %o2, %g2
396 mov %o3, %g3
397 mov HV_FAST_LDC_TX_GET_STATE, %o5
398 ta HV_FAST_TRAP
399 stx %o1, [%g1]
400 stx %o2, [%g2]
401 stx %o3, [%g3]
402 retl
403 nop
404ENDPROC(sun4v_ldc_tx_get_state)
405
406 /* %o0: channel
407 * %o1: tail_off
408 *
409 * returns %o0: status
410 */
411ENTRY(sun4v_ldc_tx_set_qtail)
412 mov HV_FAST_LDC_TX_SET_QTAIL, %o5
413 ta HV_FAST_TRAP
414 retl
415 nop
416ENDPROC(sun4v_ldc_tx_set_qtail)
417
418 /* %o0: channel
419 * %o1: ra
420 * %o2: num_entries
421 *
422 * returns %o0: status
423 */
424ENTRY(sun4v_ldc_rx_qconf)
425 mov HV_FAST_LDC_RX_QCONF, %o5
426 ta HV_FAST_TRAP
427 retl
428 nop
429ENDPROC(sun4v_ldc_rx_qconf)
430
431 /* %o0: channel
432 * %o1: pointer to unsigned long ra
433 * %o2: pointer to unsigned long num_entries
434 *
435 * returns %o0: status
436 */
437ENTRY(sun4v_ldc_rx_qinfo)
438 mov %o1, %g1
439 mov %o2, %g2
440 mov HV_FAST_LDC_RX_QINFO, %o5
441 ta HV_FAST_TRAP
442 stx %o1, [%g1]
443 stx %o2, [%g2]
444 retl
445 nop
446ENDPROC(sun4v_ldc_rx_qinfo)
447
448 /* %o0: channel
449 * %o1: pointer to unsigned long head_off
450 * %o2: pointer to unsigned long tail_off
451 * %o2: pointer to unsigned long chan_state
452 *
453 * returns %o0: status
454 */
455ENTRY(sun4v_ldc_rx_get_state)
456 mov %o1, %g1
457 mov %o2, %g2
458 mov %o3, %g3
459 mov HV_FAST_LDC_RX_GET_STATE, %o5
460 ta HV_FAST_TRAP
461 stx %o1, [%g1]
462 stx %o2, [%g2]
463 stx %o3, [%g3]
464 retl
465 nop
466ENDPROC(sun4v_ldc_rx_get_state)
467
468 /* %o0: channel
469 * %o1: head_off
470 *
471 * returns %o0: status
472 */
473ENTRY(sun4v_ldc_rx_set_qhead)
474 mov HV_FAST_LDC_RX_SET_QHEAD, %o5
475 ta HV_FAST_TRAP
476 retl
477 nop
478ENDPROC(sun4v_ldc_rx_set_qhead)
479
480 /* %o0: channel
481 * %o1: ra
482 * %o2: num_entries
483 *
484 * returns %o0: status
485 */
486ENTRY(sun4v_ldc_set_map_table)
487 mov HV_FAST_LDC_SET_MAP_TABLE, %o5
488 ta HV_FAST_TRAP
489 retl
490 nop
491ENDPROC(sun4v_ldc_set_map_table)
492
493 /* %o0: channel
494 * %o1: pointer to unsigned long ra
495 * %o2: pointer to unsigned long num_entries
496 *
497 * returns %o0: status
498 */
499ENTRY(sun4v_ldc_get_map_table)
500 mov %o1, %g1
501 mov %o2, %g2
502 mov HV_FAST_LDC_GET_MAP_TABLE, %o5
503 ta HV_FAST_TRAP
504 stx %o1, [%g1]
505 stx %o2, [%g2]
506 retl
507 nop
508ENDPROC(sun4v_ldc_get_map_table)
509
510 /* %o0: channel
511 * %o1: dir_code
512 * %o2: tgt_raddr
513 * %o3: lcl_raddr
514 * %o4: len
515 * %o5: pointer to unsigned long actual_len
516 *
517 * returns %o0: status
518 */
519ENTRY(sun4v_ldc_copy)
520 mov %o5, %g1
521 mov HV_FAST_LDC_COPY, %o5
522 ta HV_FAST_TRAP
523 stx %o1, [%g1]
524 retl
525 nop
526ENDPROC(sun4v_ldc_copy)
527
528 /* %o0: channel
529 * %o1: cookie
530 * %o2: pointer to unsigned long ra
531 * %o3: pointer to unsigned long perm
532 *
533 * returns %o0: status
534 */
535ENTRY(sun4v_ldc_mapin)
536 mov %o2, %g1
537 mov %o3, %g2
538 mov HV_FAST_LDC_MAPIN, %o5
539 ta HV_FAST_TRAP
540 stx %o1, [%g1]
541 stx %o2, [%g2]
542 retl
543 nop
544ENDPROC(sun4v_ldc_mapin)
545
546 /* %o0: ra
547 *
548 * returns %o0: status
549 */
550ENTRY(sun4v_ldc_unmap)
551 mov HV_FAST_LDC_UNMAP, %o5
552 ta HV_FAST_TRAP
553 retl
554 nop
555ENDPROC(sun4v_ldc_unmap)
556
557 /* %o0: channel
558 * %o1: cookie
559 * %o2: mte_cookie
560 *
561 * returns %o0: status
562 */
563ENTRY(sun4v_ldc_revoke)
564 mov HV_FAST_LDC_REVOKE, %o5
565 ta HV_FAST_TRAP
566 retl
567 nop
568ENDPROC(sun4v_ldc_revoke)
569
570 /* %o0: device handle
571 * %o1: device INO
572 * %o2: pointer to unsigned long cookie
573 *
574 * returns %o0: status
575 */
576ENTRY(sun4v_vintr_get_cookie)
577 mov %o2, %g1
578 mov HV_FAST_VINTR_GET_COOKIE, %o5
579 ta HV_FAST_TRAP
580 stx %o1, [%g1]
581 retl
582 nop
583ENDPROC(sun4v_vintr_get_cookie)
584
585 /* %o0: device handle
586 * %o1: device INO
587 * %o2: cookie
588 *
589 * returns %o0: status
590 */
591ENTRY(sun4v_vintr_set_cookie)
592 mov HV_FAST_VINTR_SET_COOKIE, %o5
593 ta HV_FAST_TRAP
594 retl
595 nop
596ENDPROC(sun4v_vintr_set_cookie)
597
598 /* %o0: device handle
599 * %o1: device INO
600 * %o2: pointer to unsigned long valid_state
601 *
602 * returns %o0: status
603 */
604ENTRY(sun4v_vintr_get_valid)
605 mov %o2, %g1
606 mov HV_FAST_VINTR_GET_VALID, %o5
607 ta HV_FAST_TRAP
608 stx %o1, [%g1]
609 retl
610 nop
611ENDPROC(sun4v_vintr_get_valid)
612
613 /* %o0: device handle
614 * %o1: device INO
615 * %o2: valid_state
616 *
617 * returns %o0: status
618 */
619ENTRY(sun4v_vintr_set_valid)
620 mov HV_FAST_VINTR_SET_VALID, %o5
621 ta HV_FAST_TRAP
622 retl
623 nop
624ENDPROC(sun4v_vintr_set_valid)
625
626 /* %o0: device handle
627 * %o1: device INO
628 * %o2: pointer to unsigned long state
629 *
630 * returns %o0: status
631 */
632ENTRY(sun4v_vintr_get_state)
633 mov %o2, %g1
634 mov HV_FAST_VINTR_GET_STATE, %o5
635 ta HV_FAST_TRAP
636 stx %o1, [%g1]
637 retl
638 nop
639ENDPROC(sun4v_vintr_get_state)
640
641 /* %o0: device handle
642 * %o1: device INO
643 * %o2: state
644 *
645 * returns %o0: status
646 */
647ENTRY(sun4v_vintr_set_state)
648 mov HV_FAST_VINTR_SET_STATE, %o5
649 ta HV_FAST_TRAP
650 retl
651 nop
652ENDPROC(sun4v_vintr_set_state)
653
654 /* %o0: device handle
655 * %o1: device INO
656 * %o2: pointer to unsigned long cpuid
657 *
658 * returns %o0: status
659 */
660ENTRY(sun4v_vintr_get_target)
661 mov %o2, %g1
662 mov HV_FAST_VINTR_GET_TARGET, %o5
663 ta HV_FAST_TRAP
664 stx %o1, [%g1]
665 retl
666 nop
667ENDPROC(sun4v_vintr_get_target)
668
669 /* %o0: device handle
670 * %o1: device INO
671 * %o2: cpuid
672 *
673 * returns %o0: status
674 */
675ENTRY(sun4v_vintr_set_target)
676 mov HV_FAST_VINTR_SET_TARGET, %o5
677 ta HV_FAST_TRAP
678 retl
679 nop
680ENDPROC(sun4v_vintr_set_target)
681
682 /* %o0: NCS sub-function
683 * %o1: sub-function arg real-address
684 * %o2: sub-function arg size
685 *
686 * returns %o0: status
687 */
688ENTRY(sun4v_ncs_request)
689 mov HV_FAST_NCS_REQUEST, %o5
690 ta HV_FAST_TRAP
691 retl
692 nop
693ENDPROC(sun4v_ncs_request)
694
695ENTRY(sun4v_svc_send)
696 save %sp, -192, %sp
697 mov %i0, %o0
698 mov %i1, %o1
699 mov %i2, %o2
700 mov HV_FAST_SVC_SEND, %o5
701 ta HV_FAST_TRAP
702 stx %o1, [%i3]
703 ret
704 restore
705ENDPROC(sun4v_svc_send)
706
707ENTRY(sun4v_svc_recv)
708 save %sp, -192, %sp
709 mov %i0, %o0
710 mov %i1, %o1
711 mov %i2, %o2
712 mov HV_FAST_SVC_RECV, %o5
713 ta HV_FAST_TRAP
714 stx %o1, [%i3]
715 ret
716 restore
717ENDPROC(sun4v_svc_recv)
718
719ENTRY(sun4v_svc_getstatus)
720 mov HV_FAST_SVC_GETSTATUS, %o5
721 mov %o1, %o4
722 ta HV_FAST_TRAP
723 stx %o1, [%o4]
724 retl
725 nop
726ENDPROC(sun4v_svc_getstatus)
727
728ENTRY(sun4v_svc_setstatus)
729 mov HV_FAST_SVC_SETSTATUS, %o5
730 ta HV_FAST_TRAP
731 retl
732 nop
733ENDPROC(sun4v_svc_setstatus)
734
735ENTRY(sun4v_svc_clrstatus)
736 mov HV_FAST_SVC_CLRSTATUS, %o5
737 ta HV_FAST_TRAP
738 retl
739 nop
740ENDPROC(sun4v_svc_clrstatus)
741
742ENTRY(sun4v_mmustat_conf)
743 mov %o1, %o4
744 mov HV_FAST_MMUSTAT_CONF, %o5
745 ta HV_FAST_TRAP
746 stx %o1, [%o4]
747 retl
748 nop
749ENDPROC(sun4v_mmustat_conf)
750
751ENTRY(sun4v_mmustat_info)
752 mov %o0, %o4
753 mov HV_FAST_MMUSTAT_INFO, %o5
754 ta HV_FAST_TRAP
755 stx %o1, [%o4]
756 retl
757 nop
758ENDPROC(sun4v_mmustat_info)
759
760ENTRY(sun4v_mmu_demap_all)
761 clr %o0
762 clr %o1
763 mov HV_MMU_ALL, %o2
764 mov HV_FAST_MMU_DEMAP_ALL, %o5
765 ta HV_FAST_TRAP
766 retl
767 nop
768ENDPROC(sun4v_mmu_demap_all)
769
770ENTRY(sun4v_niagara_getperf)
771 mov %o0, %o4
772 mov HV_FAST_GET_PERFREG, %o5
773 ta HV_FAST_TRAP
774 stx %o1, [%o4]
775 retl
776 nop
777ENDPROC(sun4v_niagara_getperf)
778
779ENTRY(sun4v_niagara_setperf)
780 mov HV_FAST_SET_PERFREG, %o5
781 ta HV_FAST_TRAP
782 retl
783 nop
784ENDPROC(sun4v_niagara_setperf)
785
786ENTRY(sun4v_niagara2_getperf)
787 mov %o0, %o4
788 mov HV_FAST_N2_GET_PERFREG, %o5
789 ta HV_FAST_TRAP
790 stx %o1, [%o4]
791 retl
792 nop
793ENDPROC(sun4v_niagara2_getperf)
794
795ENTRY(sun4v_niagara2_setperf)
796 mov HV_FAST_N2_SET_PERFREG, %o5
797 ta HV_FAST_TRAP
798 retl
799 nop
800ENDPROC(sun4v_niagara2_setperf)