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