xref: /openbmc/linux/arch/sparc/kernel/hvcalls.S (revision 0edbfea5)
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	brnz,a,pn %o4, 0f
342	stx	%o1, [%o4]
3430:	retl
344	 nop
345ENDPROC(sun4v_mach_set_watchdog)
346
347	/* No inputs and does not return.  */
348ENTRY(sun4v_mach_sir)
349	mov	%o1, %o4
350	mov	HV_FAST_MACH_SIR, %o5
351	ta	HV_FAST_TRAP
352	stx	%o1, [%o4]
353	retl
354	 nop
355ENDPROC(sun4v_mach_sir)
356
357	/* %o0: channel
358	 * %o1:	ra
359	 * %o2:	num_entries
360	 *
361	 * returns %o0:	status
362	 */
363ENTRY(sun4v_ldc_tx_qconf)
364	mov	HV_FAST_LDC_TX_QCONF, %o5
365	ta	HV_FAST_TRAP
366	retl
367	 nop
368ENDPROC(sun4v_ldc_tx_qconf)
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	 */
376ENTRY(sun4v_ldc_tx_qinfo)
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
385ENDPROC(sun4v_ldc_tx_qinfo)
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	 */
394ENTRY(sun4v_ldc_tx_get_state)
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
405ENDPROC(sun4v_ldc_tx_get_state)
406
407	/* %o0: channel
408	 * %o1:	tail_off
409	 *
410	 * returns %o0:	status
411	 */
412ENTRY(sun4v_ldc_tx_set_qtail)
413	mov	HV_FAST_LDC_TX_SET_QTAIL, %o5
414	ta	HV_FAST_TRAP
415	retl
416	 nop
417ENDPROC(sun4v_ldc_tx_set_qtail)
418
419	/* %o0: channel
420	 * %o1:	ra
421	 * %o2:	num_entries
422	 *
423	 * returns %o0:	status
424	 */
425ENTRY(sun4v_ldc_rx_qconf)
426	mov	HV_FAST_LDC_RX_QCONF, %o5
427	ta	HV_FAST_TRAP
428	retl
429	 nop
430ENDPROC(sun4v_ldc_rx_qconf)
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	 */
438ENTRY(sun4v_ldc_rx_qinfo)
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
447ENDPROC(sun4v_ldc_rx_qinfo)
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	 */
456ENTRY(sun4v_ldc_rx_get_state)
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
467ENDPROC(sun4v_ldc_rx_get_state)
468
469	/* %o0: channel
470	 * %o1:	head_off
471	 *
472	 * returns %o0:	status
473	 */
474ENTRY(sun4v_ldc_rx_set_qhead)
475	mov	HV_FAST_LDC_RX_SET_QHEAD, %o5
476	ta	HV_FAST_TRAP
477	retl
478	 nop
479ENDPROC(sun4v_ldc_rx_set_qhead)
480
481	/* %o0: channel
482	 * %o1:	ra
483	 * %o2:	num_entries
484	 *
485	 * returns %o0: status
486	 */
487ENTRY(sun4v_ldc_set_map_table)
488	mov	HV_FAST_LDC_SET_MAP_TABLE, %o5
489	ta	HV_FAST_TRAP
490	retl
491	 nop
492ENDPROC(sun4v_ldc_set_map_table)
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	 */
500ENTRY(sun4v_ldc_get_map_table)
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
509ENDPROC(sun4v_ldc_get_map_table)
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	 */
520ENTRY(sun4v_ldc_copy)
521	mov	%o5, %g1
522	mov	HV_FAST_LDC_COPY, %o5
523	ta	HV_FAST_TRAP
524	stx	%o1, [%g1]
525	retl
526	 nop
527ENDPROC(sun4v_ldc_copy)
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	 */
536ENTRY(sun4v_ldc_mapin)
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
545ENDPROC(sun4v_ldc_mapin)
546
547	/* %o0:	ra
548	 *
549	 * returns %o0:	status
550	 */
551ENTRY(sun4v_ldc_unmap)
552	mov	HV_FAST_LDC_UNMAP, %o5
553	ta	HV_FAST_TRAP
554	retl
555	 nop
556ENDPROC(sun4v_ldc_unmap)
557
558	/* %o0: channel
559	 * %o1:	cookie
560	 * %o2:	mte_cookie
561	 *
562	 * returns %o0:	status
563	 */
564ENTRY(sun4v_ldc_revoke)
565	mov	HV_FAST_LDC_REVOKE, %o5
566	ta	HV_FAST_TRAP
567	retl
568	 nop
569ENDPROC(sun4v_ldc_revoke)
570
571	/* %o0: device handle
572	 * %o1:	device INO
573	 * %o2:	pointer to unsigned long cookie
574	 *
575	 * returns %o0: status
576	 */
577ENTRY(sun4v_vintr_get_cookie)
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
584ENDPROC(sun4v_vintr_get_cookie)
585
586	/* %o0: device handle
587	 * %o1:	device INO
588	 * %o2:	cookie
589	 *
590	 * returns %o0: status
591	 */
592ENTRY(sun4v_vintr_set_cookie)
593	mov	HV_FAST_VINTR_SET_COOKIE, %o5
594	ta	HV_FAST_TRAP
595	retl
596	 nop
597ENDPROC(sun4v_vintr_set_cookie)
598
599	/* %o0: device handle
600	 * %o1:	device INO
601	 * %o2:	pointer to unsigned long valid_state
602	 *
603	 * returns %o0: status
604	 */
605ENTRY(sun4v_vintr_get_valid)
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
612ENDPROC(sun4v_vintr_get_valid)
613
614	/* %o0: device handle
615	 * %o1:	device INO
616	 * %o2:	valid_state
617	 *
618	 * returns %o0: status
619	 */
620ENTRY(sun4v_vintr_set_valid)
621	mov	HV_FAST_VINTR_SET_VALID, %o5
622	ta	HV_FAST_TRAP
623	retl
624	 nop
625ENDPROC(sun4v_vintr_set_valid)
626
627	/* %o0: device handle
628	 * %o1:	device INO
629	 * %o2:	pointer to unsigned long state
630	 *
631	 * returns %o0: status
632	 */
633ENTRY(sun4v_vintr_get_state)
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
640ENDPROC(sun4v_vintr_get_state)
641
642	/* %o0: device handle
643	 * %o1:	device INO
644	 * %o2:	state
645	 *
646	 * returns %o0: status
647	 */
648ENTRY(sun4v_vintr_set_state)
649	mov	HV_FAST_VINTR_SET_STATE, %o5
650	ta	HV_FAST_TRAP
651	retl
652	 nop
653ENDPROC(sun4v_vintr_set_state)
654
655	/* %o0: device handle
656	 * %o1:	device INO
657	 * %o2:	pointer to unsigned long cpuid
658	 *
659	 * returns %o0: status
660	 */
661ENTRY(sun4v_vintr_get_target)
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
668ENDPROC(sun4v_vintr_get_target)
669
670	/* %o0: device handle
671	 * %o1:	device INO
672	 * %o2:	cpuid
673	 *
674	 * returns %o0: status
675	 */
676ENTRY(sun4v_vintr_set_target)
677	mov	HV_FAST_VINTR_SET_TARGET, %o5
678	ta	HV_FAST_TRAP
679	retl
680	 nop
681ENDPROC(sun4v_vintr_set_target)
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	 */
689ENTRY(sun4v_ncs_request)
690	mov	HV_FAST_NCS_REQUEST, %o5
691	ta	HV_FAST_TRAP
692	retl
693	 nop
694ENDPROC(sun4v_ncs_request)
695
696ENTRY(sun4v_svc_send)
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
706ENDPROC(sun4v_svc_send)
707
708ENTRY(sun4v_svc_recv)
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
718ENDPROC(sun4v_svc_recv)
719
720ENTRY(sun4v_svc_getstatus)
721	mov	HV_FAST_SVC_GETSTATUS, %o5
722	mov	%o1, %o4
723	ta	HV_FAST_TRAP
724	stx	%o1, [%o4]
725	retl
726	 nop
727ENDPROC(sun4v_svc_getstatus)
728
729ENTRY(sun4v_svc_setstatus)
730	mov	HV_FAST_SVC_SETSTATUS, %o5
731	ta	HV_FAST_TRAP
732	retl
733	 nop
734ENDPROC(sun4v_svc_setstatus)
735
736ENTRY(sun4v_svc_clrstatus)
737	mov	HV_FAST_SVC_CLRSTATUS, %o5
738	ta	HV_FAST_TRAP
739	retl
740	 nop
741ENDPROC(sun4v_svc_clrstatus)
742
743ENTRY(sun4v_mmustat_conf)
744	mov	%o1, %o4
745	mov	HV_FAST_MMUSTAT_CONF, %o5
746	ta	HV_FAST_TRAP
747	stx	%o1, [%o4]
748	retl
749	 nop
750ENDPROC(sun4v_mmustat_conf)
751
752ENTRY(sun4v_mmustat_info)
753	mov	%o0, %o4
754	mov	HV_FAST_MMUSTAT_INFO, %o5
755	ta	HV_FAST_TRAP
756	stx	%o1, [%o4]
757	retl
758	 nop
759ENDPROC(sun4v_mmustat_info)
760
761ENTRY(sun4v_mmu_demap_all)
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
769ENDPROC(sun4v_mmu_demap_all)
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)
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)
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)
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)
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)
857