PageRenderTime 28ms CodeModel.GetById 16ms app.highlight 9ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/sparc/kernel/hvcalls.S

https://bitbucket.org/ndreys/linux-sunxi
Assembly | 807 lines | 744 code | 63 blank | 0 comment | 1 complexity | 9f034cc203e42e368228315724a1dd76 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  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)
801
802ENTRY(sun4v_reboot_data_set)
803	mov	HV_FAST_REBOOT_DATA_SET, %o5
804	ta	HV_FAST_TRAP
805	retl
806	 nop
807ENDPROC(sun4v_reboot_data_set)