162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* n2_asm.S: Hypervisor calls for NCS support. 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2009 David S. Miller <davem@davemloft.net> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/linkage.h> 862306a36Sopenharmony_ci#include <asm/hypervisor.h> 962306a36Sopenharmony_ci#include "n2_core.h" 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci /* o0: queue type 1262306a36Sopenharmony_ci * o1: RA of queue 1362306a36Sopenharmony_ci * o2: num entries in queue 1462306a36Sopenharmony_ci * o3: address of queue handle return 1562306a36Sopenharmony_ci */ 1662306a36Sopenharmony_ciENTRY(sun4v_ncs_qconf) 1762306a36Sopenharmony_ci mov HV_FAST_NCS_QCONF, %o5 1862306a36Sopenharmony_ci ta HV_FAST_TRAP 1962306a36Sopenharmony_ci stx %o1, [%o3] 2062306a36Sopenharmony_ci retl 2162306a36Sopenharmony_ci nop 2262306a36Sopenharmony_ciENDPROC(sun4v_ncs_qconf) 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci /* %o0: queue handle 2562306a36Sopenharmony_ci * %o1: address of queue type return 2662306a36Sopenharmony_ci * %o2: address of queue base address return 2762306a36Sopenharmony_ci * %o3: address of queue num entries return 2862306a36Sopenharmony_ci */ 2962306a36Sopenharmony_ciENTRY(sun4v_ncs_qinfo) 3062306a36Sopenharmony_ci mov %o1, %g1 3162306a36Sopenharmony_ci mov %o2, %g2 3262306a36Sopenharmony_ci mov %o3, %g3 3362306a36Sopenharmony_ci mov HV_FAST_NCS_QINFO, %o5 3462306a36Sopenharmony_ci ta HV_FAST_TRAP 3562306a36Sopenharmony_ci stx %o1, [%g1] 3662306a36Sopenharmony_ci stx %o2, [%g2] 3762306a36Sopenharmony_ci stx %o3, [%g3] 3862306a36Sopenharmony_ci retl 3962306a36Sopenharmony_ci nop 4062306a36Sopenharmony_ciENDPROC(sun4v_ncs_qinfo) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci /* %o0: queue handle 4362306a36Sopenharmony_ci * %o1: address of head offset return 4462306a36Sopenharmony_ci */ 4562306a36Sopenharmony_ciENTRY(sun4v_ncs_gethead) 4662306a36Sopenharmony_ci mov %o1, %o2 4762306a36Sopenharmony_ci mov HV_FAST_NCS_GETHEAD, %o5 4862306a36Sopenharmony_ci ta HV_FAST_TRAP 4962306a36Sopenharmony_ci stx %o1, [%o2] 5062306a36Sopenharmony_ci retl 5162306a36Sopenharmony_ci nop 5262306a36Sopenharmony_ciENDPROC(sun4v_ncs_gethead) 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci /* %o0: queue handle 5562306a36Sopenharmony_ci * %o1: address of tail offset return 5662306a36Sopenharmony_ci */ 5762306a36Sopenharmony_ciENTRY(sun4v_ncs_gettail) 5862306a36Sopenharmony_ci mov %o1, %o2 5962306a36Sopenharmony_ci mov HV_FAST_NCS_GETTAIL, %o5 6062306a36Sopenharmony_ci ta HV_FAST_TRAP 6162306a36Sopenharmony_ci stx %o1, [%o2] 6262306a36Sopenharmony_ci retl 6362306a36Sopenharmony_ci nop 6462306a36Sopenharmony_ciENDPROC(sun4v_ncs_gettail) 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci /* %o0: queue handle 6762306a36Sopenharmony_ci * %o1: new tail offset 6862306a36Sopenharmony_ci */ 6962306a36Sopenharmony_ciENTRY(sun4v_ncs_settail) 7062306a36Sopenharmony_ci mov HV_FAST_NCS_SETTAIL, %o5 7162306a36Sopenharmony_ci ta HV_FAST_TRAP 7262306a36Sopenharmony_ci retl 7362306a36Sopenharmony_ci nop 7462306a36Sopenharmony_ciENDPROC(sun4v_ncs_settail) 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci /* %o0: queue handle 7762306a36Sopenharmony_ci * %o1: address of devino return 7862306a36Sopenharmony_ci */ 7962306a36Sopenharmony_ciENTRY(sun4v_ncs_qhandle_to_devino) 8062306a36Sopenharmony_ci mov %o1, %o2 8162306a36Sopenharmony_ci mov HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5 8262306a36Sopenharmony_ci ta HV_FAST_TRAP 8362306a36Sopenharmony_ci stx %o1, [%o2] 8462306a36Sopenharmony_ci retl 8562306a36Sopenharmony_ci nop 8662306a36Sopenharmony_ciENDPROC(sun4v_ncs_qhandle_to_devino) 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci /* %o0: queue handle 8962306a36Sopenharmony_ci * %o1: new head offset 9062306a36Sopenharmony_ci */ 9162306a36Sopenharmony_ciENTRY(sun4v_ncs_sethead_marker) 9262306a36Sopenharmony_ci mov HV_FAST_NCS_SETHEAD_MARKER, %o5 9362306a36Sopenharmony_ci ta HV_FAST_TRAP 9462306a36Sopenharmony_ci retl 9562306a36Sopenharmony_ci nop 9662306a36Sopenharmony_ciENDPROC(sun4v_ncs_sethead_marker) 97