]>
Commit | Line | Data |
---|---|---|
6eda3a75 DM |
1 | /* %o0: devhandle |
2 | * %o1: devino | |
3 | * | |
4 | * returns %o0: sysino | |
5 | */ | |
687124dd | 6 | ENTRY(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 | 11 | ENDPROC(sun4v_devino_to_sysino) |
6eda3a75 DM |
12 | |
13 | /* %o0: sysino | |
14 | * | |
15 | * returns %o0: intr_enabled (HV_INTR_{DISABLED,ENABLED}) | |
16 | */ | |
687124dd | 17 | ENTRY(sun4v_intr_getenabled) |
6eda3a75 DM |
18 | mov HV_FAST_INTR_GETENABLED, %o5 |
19 | ta HV_FAST_TRAP | |
20 | retl | |
21 | mov %o1, %o0 | |
687124dd | 22 | ENDPROC(sun4v_intr_getenabled) |
6eda3a75 DM |
23 | |
24 | /* %o0: sysino | |
25 | * %o1: intr_enabled (HV_INTR_{DISABLED,ENABLED}) | |
26 | */ | |
687124dd | 27 | ENTRY(sun4v_intr_setenabled) |
6eda3a75 DM |
28 | mov HV_FAST_INTR_SETENABLED, %o5 |
29 | ta HV_FAST_TRAP | |
30 | retl | |
31 | nop | |
687124dd | 32 | ENDPROC(sun4v_intr_setenabled) |
6eda3a75 DM |
33 | |
34 | /* %o0: sysino | |
35 | * | |
36 | * returns %o0: intr_state (HV_INTR_STATE_*) | |
37 | */ | |
687124dd | 38 | ENTRY(sun4v_intr_getstate) |
6eda3a75 DM |
39 | mov HV_FAST_INTR_GETSTATE, %o5 |
40 | ta HV_FAST_TRAP | |
41 | retl | |
42 | mov %o1, %o0 | |
687124dd | 43 | ENDPROC(sun4v_intr_getstate) |
6eda3a75 DM |
44 | |
45 | /* %o0: sysino | |
46 | * %o1: intr_state (HV_INTR_STATE_*) | |
47 | */ | |
687124dd | 48 | ENTRY(sun4v_intr_setstate) |
6eda3a75 DM |
49 | mov HV_FAST_INTR_SETSTATE, %o5 |
50 | ta HV_FAST_TRAP | |
51 | retl | |
52 | nop | |
687124dd | 53 | ENDPROC(sun4v_intr_setstate) |
6eda3a75 DM |
54 | |
55 | /* %o0: sysino | |
56 | * | |
57 | * returns %o0: cpuid | |
58 | */ | |
687124dd | 59 | ENTRY(sun4v_intr_gettarget) |
6eda3a75 DM |
60 | mov HV_FAST_INTR_GETTARGET, %o5 |
61 | ta HV_FAST_TRAP | |
62 | retl | |
63 | mov %o1, %o0 | |
687124dd | 64 | ENDPROC(sun4v_intr_gettarget) |
6eda3a75 DM |
65 | |
66 | /* %o0: sysino | |
67 | * %o1: cpuid | |
68 | */ | |
687124dd | 69 | ENTRY(sun4v_intr_settarget) |
6eda3a75 DM |
70 | mov HV_FAST_INTR_SETTARGET, %o5 |
71 | ta HV_FAST_TRAP | |
72 | retl | |
73 | nop | |
687124dd | 74 | ENDPROC(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 | 83 | ENTRY(sun4v_cpu_start) |
6eda3a75 DM |
84 | mov HV_FAST_CPU_START, %o5 |
85 | ta HV_FAST_TRAP | |
86 | retl | |
87 | nop | |
687124dd | 88 | ENDPROC(sun4v_cpu_start) |
6eda3a75 DM |
89 | |
90 | /* %o0: cpuid | |
91 | * | |
92 | * returns %o0: status | |
93 | */ | |
687124dd | 94 | ENTRY(sun4v_cpu_stop) |
6eda3a75 DM |
95 | mov HV_FAST_CPU_STOP, %o5 |
96 | ta HV_FAST_TRAP | |
97 | retl | |
98 | nop | |
687124dd | 99 | ENDPROC(sun4v_cpu_stop) |
6eda3a75 DM |
100 | |
101 | /* returns %o0: status */ | |
687124dd | 102 | ENTRY(sun4v_cpu_yield) |
6eda3a75 DM |
103 | mov HV_FAST_CPU_YIELD, %o5 |
104 | ta HV_FAST_TRAP | |
105 | retl | |
106 | nop | |
687124dd | 107 | ENDPROC(sun4v_cpu_yield) |
6eda3a75 | 108 | |
28d43de7 VK |
109 | /* %o0: cpuid |
110 | * | |
111 | * returns %o0: status | |
112 | */ | |
113 | ENTRY(sun4v_cpu_poke) | |
114 | mov HV_FAST_CPU_POKE, %o5 | |
115 | ta HV_FAST_TRAP | |
116 | retl | |
117 | nop | |
118 | ENDPROC(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 | 126 | ENTRY(sun4v_cpu_qconf) |
6eda3a75 DM |
127 | mov HV_FAST_CPU_QCONF, %o5 |
128 | ta HV_FAST_TRAP | |
129 | retl | |
130 | nop | |
687124dd | 131 | ENDPROC(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 | 139 | ENTRY(sun4v_cpu_mondo_send) |
6eda3a75 DM |
140 | mov HV_FAST_CPU_MONDO_SEND, %o5 |
141 | ta HV_FAST_TRAP | |
142 | retl | |
143 | nop | |
687124dd | 144 | ENDPROC(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 | 151 | ENTRY(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 | |
157 | 1: retl | |
158 | nop | |
687124dd | 159 | ENDPROC(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 | 168 | ENTRY(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 | 173 | ENDPROC(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 | 180 | ENTRY(sun4v_mmu_tsb_ctx0) |
6eda3a75 DM |
181 | mov HV_FAST_MMU_TSB_CTX0, %o5 |
182 | ta HV_FAST_TRAP | |
183 | retl | |
184 | nop | |
687124dd | 185 | ENDPROC(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 | 193 | ENTRY(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 | 201 | ENDPROC(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 | 210 | ENTRY(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 | 216 | ENDPROC(sun4v_set_version) |
6eda3a75 DM |
217 | |
218 | /* %o0: pointer to unsigned long time | |
219 | * | |
220 | * returns %o0: status | |
221 | */ | |
687124dd | 222 | ENTRY(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 | 229 | ENDPROC(sun4v_tod_get) |
6eda3a75 DM |
230 | |
231 | /* %o0: time | |
232 | * | |
233 | * returns %o0: status | |
234 | */ | |
687124dd | 235 | ENTRY(sun4v_tod_set) |
6eda3a75 DM |
236 | mov HV_FAST_TOD_SET, %o5 |
237 | ta HV_FAST_TRAP | |
238 | retl | |
239 | nop | |
687124dd | 240 | ENDPROC(sun4v_tod_set) |
6eda3a75 DM |
241 | |
242 | /* %o0: pointer to unsigned long status | |
243 | * | |
244 | * returns %o0: signed character | |
245 | */ | |
687124dd | 246 | ENTRY(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 | 255 | ENDPROC(sun4v_con_getchar) |
6eda3a75 DM |
256 | |
257 | /* %o0: signed long character | |
258 | * | |
259 | * returns %o0: status | |
260 | */ | |
687124dd | 261 | ENTRY(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 | 266 | ENDPROC(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 | 274 | ENTRY(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] | |
286 | 1: retl | |
287 | nop | |
687124dd | 288 | ENDPROC(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 | 296 | ENTRY(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 | 303 | ENDPROC(sun4v_con_write) |
6eda3a75 DM |
304 | |
305 | /* %o0: soft state | |
306 | * %o1: address of description string | |
307 | * | |
308 | * returns %o0: status | |
309 | */ | |
687124dd | 310 | ENTRY(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 | 315 | ENDPROC(sun4v_mach_set_soft_state) |
6eda3a75 DM |
316 | |
317 | /* %o0: exit code | |
318 | * | |
319 | * Does not return. | |
320 | */ | |
687124dd | 321 | ENTRY(sun4v_mach_exit) |
6eda3a75 DM |
322 | mov HV_FAST_MACH_EXIT, %o5 |
323 | ta HV_FAST_TRAP | |
324 | retl | |
325 | nop | |
687124dd | 326 | ENDPROC(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 | 334 | ENTRY(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 | 341 | ENDPROC(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 | 348 | ENTRY(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 | 354 | 0: retl |
6eda3a75 | 355 | nop |
687124dd | 356 | ENDPROC(sun4v_mach_set_watchdog) |
d3867f04 | 357 | EXPORT_SYMBOL(sun4v_mach_set_watchdog) |
6eda3a75 DM |
358 | |
359 | /* No inputs and does not return. */ | |
687124dd | 360 | ENTRY(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 | 367 | ENDPROC(sun4v_mach_sir) |
6eda3a75 DM |
368 | |
369 | /* %o0: channel | |
370 | * %o1: ra | |
371 | * %o2: num_entries | |
372 | * | |
373 | * returns %o0: status | |
374 | */ | |
687124dd | 375 | ENTRY(sun4v_ldc_tx_qconf) |
6eda3a75 DM |
376 | mov HV_FAST_LDC_TX_QCONF, %o5 |
377 | ta HV_FAST_TRAP | |
378 | retl | |
379 | nop | |
687124dd | 380 | ENDPROC(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 | 388 | ENTRY(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 | 397 | ENDPROC(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 | 406 | ENTRY(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 | 417 | ENDPROC(sun4v_ldc_tx_get_state) |
6eda3a75 DM |
418 | |
419 | /* %o0: channel | |
420 | * %o1: tail_off | |
421 | * | |
422 | * returns %o0: status | |
423 | */ | |
687124dd | 424 | ENTRY(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 | 429 | ENDPROC(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 | 437 | ENTRY(sun4v_ldc_rx_qconf) |
6eda3a75 DM |
438 | mov HV_FAST_LDC_RX_QCONF, %o5 |
439 | ta HV_FAST_TRAP | |
440 | retl | |
441 | nop | |
687124dd | 442 | ENDPROC(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 | 450 | ENTRY(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 | 459 | ENDPROC(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 | 468 | ENTRY(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 | 479 | ENDPROC(sun4v_ldc_rx_get_state) |
6eda3a75 DM |
480 | |
481 | /* %o0: channel | |
482 | * %o1: head_off | |
483 | * | |
484 | * returns %o0: status | |
485 | */ | |
687124dd | 486 | ENTRY(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 | 491 | ENDPROC(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 | 499 | ENTRY(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 | 504 | ENDPROC(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 | 512 | ENTRY(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 | 521 | ENDPROC(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 | 532 | ENTRY(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 | 539 | ENDPROC(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 | 548 | ENTRY(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 | 557 | ENDPROC(sun4v_ldc_mapin) |
6eda3a75 DM |
558 | |
559 | /* %o0: ra | |
560 | * | |
561 | * returns %o0: status | |
562 | */ | |
687124dd | 563 | ENTRY(sun4v_ldc_unmap) |
6eda3a75 DM |
564 | mov HV_FAST_LDC_UNMAP, %o5 |
565 | ta HV_FAST_TRAP | |
566 | retl | |
567 | nop | |
687124dd | 568 | ENDPROC(sun4v_ldc_unmap) |
6eda3a75 DM |
569 | |
570 | /* %o0: channel | |
571 | * %o1: cookie | |
572 | * %o2: mte_cookie | |
573 | * | |
574 | * returns %o0: status | |
575 | */ | |
687124dd | 576 | ENTRY(sun4v_ldc_revoke) |
6eda3a75 DM |
577 | mov HV_FAST_LDC_REVOKE, %o5 |
578 | ta HV_FAST_TRAP | |
579 | retl | |
580 | nop | |
687124dd | 581 | ENDPROC(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 | 589 | ENTRY(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 | 596 | ENDPROC(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 | 604 | ENTRY(sun4v_vintr_set_cookie) |
6eda3a75 DM |
605 | mov HV_FAST_VINTR_SET_COOKIE, %o5 |
606 | ta HV_FAST_TRAP | |
607 | retl | |
608 | nop | |
687124dd | 609 | ENDPROC(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 | 617 | ENTRY(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 | 624 | ENDPROC(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 | 632 | ENTRY(sun4v_vintr_set_valid) |
6eda3a75 DM |
633 | mov HV_FAST_VINTR_SET_VALID, %o5 |
634 | ta HV_FAST_TRAP | |
635 | retl | |
636 | nop | |
687124dd | 637 | ENDPROC(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 | 645 | ENTRY(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 | 652 | ENDPROC(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 | 660 | ENTRY(sun4v_vintr_set_state) |
6eda3a75 DM |
661 | mov HV_FAST_VINTR_SET_STATE, %o5 |
662 | ta HV_FAST_TRAP | |
663 | retl | |
664 | nop | |
687124dd | 665 | ENDPROC(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 | 673 | ENTRY(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 | 680 | ENDPROC(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 | 688 | ENTRY(sun4v_vintr_set_target) |
6eda3a75 DM |
689 | mov HV_FAST_VINTR_SET_TARGET, %o5 |
690 | ta HV_FAST_TRAP | |
691 | retl | |
692 | nop | |
687124dd | 693 | ENDPROC(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 | 701 | ENTRY(sun4v_ncs_request) |
6eda3a75 DM |
702 | mov HV_FAST_NCS_REQUEST, %o5 |
703 | ta HV_FAST_TRAP | |
704 | retl | |
705 | nop | |
687124dd | 706 | ENDPROC(sun4v_ncs_request) |
6eda3a75 | 707 | |
687124dd | 708 | ENTRY(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 | 718 | ENDPROC(sun4v_svc_send) |
6eda3a75 | 719 | |
687124dd | 720 | ENTRY(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 | 730 | ENDPROC(sun4v_svc_recv) |
6eda3a75 | 731 | |
687124dd | 732 | ENTRY(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 | 739 | ENDPROC(sun4v_svc_getstatus) |
6eda3a75 | 740 | |
687124dd | 741 | ENTRY(sun4v_svc_setstatus) |
6eda3a75 DM |
742 | mov HV_FAST_SVC_SETSTATUS, %o5 |
743 | ta HV_FAST_TRAP | |
744 | retl | |
745 | nop | |
687124dd | 746 | ENDPROC(sun4v_svc_setstatus) |
6eda3a75 | 747 | |
687124dd | 748 | ENTRY(sun4v_svc_clrstatus) |
6eda3a75 DM |
749 | mov HV_FAST_SVC_CLRSTATUS, %o5 |
750 | ta HV_FAST_TRAP | |
751 | retl | |
752 | nop | |
687124dd | 753 | ENDPROC(sun4v_svc_clrstatus) |
6eda3a75 | 754 | |
687124dd | 755 | ENTRY(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 | 762 | ENDPROC(sun4v_mmustat_conf) |
6eda3a75 | 763 | |
687124dd | 764 | ENTRY(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 | 771 | ENDPROC(sun4v_mmustat_info) |
6eda3a75 | 772 | |
687124dd | 773 | ENTRY(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 | 781 | ENDPROC(sun4v_mmu_demap_all) |
3178a07c DM |
782 | |
783 | ENTRY(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 | |
790 | ENDPROC(sun4v_niagara_getperf) | |
d3867f04 | 791 | EXPORT_SYMBOL(sun4v_niagara_getperf) |
3178a07c DM |
792 | |
793 | ENTRY(sun4v_niagara_setperf) | |
794 | mov HV_FAST_SET_PERFREG, %o5 | |
795 | ta HV_FAST_TRAP | |
796 | retl | |
797 | nop | |
798 | ENDPROC(sun4v_niagara_setperf) | |
d3867f04 | 799 | EXPORT_SYMBOL(sun4v_niagara_setperf) |
3178a07c DM |
800 | |
801 | ENTRY(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 | |
808 | ENDPROC(sun4v_niagara2_getperf) | |
d3867f04 | 809 | EXPORT_SYMBOL(sun4v_niagara2_getperf) |
3178a07c DM |
810 | |
811 | ENTRY(sun4v_niagara2_setperf) | |
812 | mov HV_FAST_N2_SET_PERFREG, %o5 | |
813 | ta HV_FAST_TRAP | |
814 | retl | |
815 | nop | |
816 | ENDPROC(sun4v_niagara2_setperf) | |
d3867f04 | 817 | EXPORT_SYMBOL(sun4v_niagara2_setperf) |
ea5e7447 DM |
818 | |
819 | ENTRY(sun4v_reboot_data_set) | |
820 | mov HV_FAST_REBOOT_DATA_SET, %o5 | |
821 | ta HV_FAST_TRAP | |
822 | retl | |
823 | nop | |
824 | ENDPROC(sun4v_reboot_data_set) | |
8c79bfa5 DM |
825 | |
826 | ENTRY(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 | |
833 | ENDPROC(sun4v_vt_get_perfreg) | |
834 | ||
835 | ENTRY(sun4v_vt_set_perfreg) | |
836 | mov HV_FAST_VT_SET_PERFREG, %o5 | |
837 | ta HV_FAST_TRAP | |
838 | retl | |
839 | nop | |
840 | ENDPROC(sun4v_vt_set_perfreg) | |
05aa1651 | 841 | |
842 | ENTRY(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 | |
849 | ENDPROC(sun4v_t5_get_perfreg) | |
850 | ||
851 | ENTRY(sun4v_t5_set_perfreg) | |
852 | mov HV_FAST_T5_SET_PERFREG, %o5 | |
853 | ta HV_FAST_TRAP | |
854 | retl | |
855 | nop | |
856 | ENDPROC(sun4v_t5_set_perfreg) | |
b5aff55d DA |
857 | |
858 | ENTRY(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 | |
865 | ENDPROC(sun4v_m7_get_perfreg) | |
866 | ||
867 | ENTRY(sun4v_m7_set_perfreg) | |
868 | mov HV_FAST_M7_SET_PERFREG, %o5 | |
869 | ta HV_FAST_TRAP | |
870 | retl | |
871 | nop | |
872 | ENDPROC(sun4v_m7_set_perfreg) |