97 lines · plain
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 type12 * o1: RA of queue13 * o2: num entries in queue14 * o3: address of queue handle return15 */16ENTRY(sun4v_ncs_qconf)17 mov HV_FAST_NCS_QCONF, %o518 ta HV_FAST_TRAP19 stx %o1, [%o3]20 retl21 nop22ENDPROC(sun4v_ncs_qconf)23 24 /* %o0: queue handle25 * %o1: address of queue type return26 * %o2: address of queue base address return27 * %o3: address of queue num entries return28 */29ENTRY(sun4v_ncs_qinfo)30 mov %o1, %g131 mov %o2, %g232 mov %o3, %g333 mov HV_FAST_NCS_QINFO, %o534 ta HV_FAST_TRAP35 stx %o1, [%g1]36 stx %o2, [%g2]37 stx %o3, [%g3]38 retl39 nop40ENDPROC(sun4v_ncs_qinfo)41 42 /* %o0: queue handle43 * %o1: address of head offset return44 */45ENTRY(sun4v_ncs_gethead)46 mov %o1, %o247 mov HV_FAST_NCS_GETHEAD, %o548 ta HV_FAST_TRAP49 stx %o1, [%o2]50 retl51 nop52ENDPROC(sun4v_ncs_gethead)53 54 /* %o0: queue handle55 * %o1: address of tail offset return56 */57ENTRY(sun4v_ncs_gettail)58 mov %o1, %o259 mov HV_FAST_NCS_GETTAIL, %o560 ta HV_FAST_TRAP61 stx %o1, [%o2]62 retl63 nop64ENDPROC(sun4v_ncs_gettail)65 66 /* %o0: queue handle67 * %o1: new tail offset68 */69ENTRY(sun4v_ncs_settail)70 mov HV_FAST_NCS_SETTAIL, %o571 ta HV_FAST_TRAP72 retl73 nop74ENDPROC(sun4v_ncs_settail)75 76 /* %o0: queue handle77 * %o1: address of devino return78 */79ENTRY(sun4v_ncs_qhandle_to_devino)80 mov %o1, %o281 mov HV_FAST_NCS_QHANDLE_TO_DEVINO, %o582 ta HV_FAST_TRAP83 stx %o1, [%o2]84 retl85 nop86ENDPROC(sun4v_ncs_qhandle_to_devino)87 88 /* %o0: queue handle89 * %o1: new head offset90 */91ENTRY(sun4v_ncs_sethead_marker)92 mov HV_FAST_NCS_SETHEAD_MARKER, %o593 ta HV_FAST_TRAP94 retl95 nop96ENDPROC(sun4v_ncs_sethead_marker)97