1/* n2_asm.S: Hypervisor calls for NCS support. 2 * 3 * Copyright (C) 2009 David S. Miller <davem@davemloft.net> 4 */ 5 6#include <linux/linkage.h> 7#include <asm/hypervisor.h> 8#include "n2_core.h" 9 10 /* o0: queue type 11 * o1: RA of queue 12 * o2: num entries in queue 13 * o3: address of queue handle return 14 */ 15ENTRY(sun4v_ncs_qconf) 16 mov HV_FAST_NCS_QCONF, %o5 17 ta HV_FAST_TRAP 18 stx %o1, [%o3] 19 retl 20 nop 21ENDPROC(sun4v_ncs_qconf) 22 23 /* %o0: queue handle 24 * %o1: address of queue type return 25 * %o2: address of queue base address return 26 * %o3: address of queue num entries return 27 */ 28ENTRY(sun4v_ncs_qinfo) 29 mov %o1, %g1 30 mov %o2, %g2 31 mov %o3, %g3 32 mov HV_FAST_NCS_QINFO, %o5 33 ta HV_FAST_TRAP 34 stx %o1, [%g1] 35 stx %o2, [%g2] 36 stx %o3, [%g3] 37 retl 38 nop 39ENDPROC(sun4v_ncs_qinfo) 40 41 /* %o0: queue handle 42 * %o1: address of head offset return 43 */ 44ENTRY(sun4v_ncs_gethead) 45 mov %o1, %o2 46 mov HV_FAST_NCS_GETHEAD, %o5 47 ta HV_FAST_TRAP 48 stx %o1, [%o2] 49 retl 50 nop 51ENDPROC(sun4v_ncs_gethead) 52 53 /* %o0: queue handle 54 * %o1: address of tail offset return 55 */ 56ENTRY(sun4v_ncs_gettail) 57 mov %o1, %o2 58 mov HV_FAST_NCS_GETTAIL, %o5 59 ta HV_FAST_TRAP 60 stx %o1, [%o2] 61 retl 62 nop 63ENDPROC(sun4v_ncs_gettail) 64 65 /* %o0: queue handle 66 * %o1: new tail offset 67 */ 68ENTRY(sun4v_ncs_settail) 69 mov HV_FAST_NCS_SETTAIL, %o5 70 ta HV_FAST_TRAP 71 retl 72 nop 73ENDPROC(sun4v_ncs_settail) 74 75 /* %o0: queue handle 76 * %o1: address of devino return 77 */ 78ENTRY(sun4v_ncs_qhandle_to_devino) 79 mov %o1, %o2 80 mov HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5 81 ta HV_FAST_TRAP 82 stx %o1, [%o2] 83 retl 84 nop 85ENDPROC(sun4v_ncs_qhandle_to_devino) 86 87 /* %o0: queue handle 88 * %o1: new head offset 89 */ 90ENTRY(sun4v_ncs_sethead_marker) 91 mov HV_FAST_NCS_SETHEAD_MARKER, %o5 92 ta HV_FAST_TRAP 93 retl 94 nop 95ENDPROC(sun4v_ncs_sethead_marker) 96