1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 20a625fd2SDavid S. Miller/* n2_asm.S: Hypervisor calls for NCS support. 30a625fd2SDavid S. Miller * 40a625fd2SDavid S. Miller * Copyright (C) 2009 David S. Miller <davem@davemloft.net> 50a625fd2SDavid S. Miller */ 60a625fd2SDavid S. Miller 70a625fd2SDavid S. Miller#include <linux/linkage.h> 80a625fd2SDavid S. Miller#include <asm/hypervisor.h> 90a625fd2SDavid S. Miller#include "n2_core.h" 100a625fd2SDavid S. Miller 110a625fd2SDavid S. Miller /* o0: queue type 120a625fd2SDavid S. Miller * o1: RA of queue 130a625fd2SDavid S. Miller * o2: num entries in queue 140a625fd2SDavid S. Miller * o3: address of queue handle return 150a625fd2SDavid S. Miller */ 160a625fd2SDavid S. MillerENTRY(sun4v_ncs_qconf) 170a625fd2SDavid S. Miller mov HV_FAST_NCS_QCONF, %o5 180a625fd2SDavid S. Miller ta HV_FAST_TRAP 190a625fd2SDavid S. Miller stx %o1, [%o3] 200a625fd2SDavid S. Miller retl 210a625fd2SDavid S. Miller nop 220a625fd2SDavid S. MillerENDPROC(sun4v_ncs_qconf) 230a625fd2SDavid S. Miller 240a625fd2SDavid S. Miller /* %o0: queue handle 250a625fd2SDavid S. Miller * %o1: address of queue type return 260a625fd2SDavid S. Miller * %o2: address of queue base address return 270a625fd2SDavid S. Miller * %o3: address of queue num entries return 280a625fd2SDavid S. Miller */ 290a625fd2SDavid S. MillerENTRY(sun4v_ncs_qinfo) 300a625fd2SDavid S. Miller mov %o1, %g1 310a625fd2SDavid S. Miller mov %o2, %g2 320a625fd2SDavid S. Miller mov %o3, %g3 330a625fd2SDavid S. Miller mov HV_FAST_NCS_QINFO, %o5 340a625fd2SDavid S. Miller ta HV_FAST_TRAP 350a625fd2SDavid S. Miller stx %o1, [%g1] 360a625fd2SDavid S. Miller stx %o2, [%g2] 370a625fd2SDavid S. Miller stx %o3, [%g3] 380a625fd2SDavid S. Miller retl 390a625fd2SDavid S. Miller nop 400a625fd2SDavid S. MillerENDPROC(sun4v_ncs_qinfo) 410a625fd2SDavid S. Miller 420a625fd2SDavid S. Miller /* %o0: queue handle 430a625fd2SDavid S. Miller * %o1: address of head offset return 440a625fd2SDavid S. Miller */ 450a625fd2SDavid S. MillerENTRY(sun4v_ncs_gethead) 460a625fd2SDavid S. Miller mov %o1, %o2 470a625fd2SDavid S. Miller mov HV_FAST_NCS_GETHEAD, %o5 480a625fd2SDavid S. Miller ta HV_FAST_TRAP 490a625fd2SDavid S. Miller stx %o1, [%o2] 500a625fd2SDavid S. Miller retl 510a625fd2SDavid S. Miller nop 520a625fd2SDavid S. MillerENDPROC(sun4v_ncs_gethead) 530a625fd2SDavid S. Miller 540a625fd2SDavid S. Miller /* %o0: queue handle 550a625fd2SDavid S. Miller * %o1: address of tail offset return 560a625fd2SDavid S. Miller */ 570a625fd2SDavid S. MillerENTRY(sun4v_ncs_gettail) 580a625fd2SDavid S. Miller mov %o1, %o2 590a625fd2SDavid S. Miller mov HV_FAST_NCS_GETTAIL, %o5 600a625fd2SDavid S. Miller ta HV_FAST_TRAP 610a625fd2SDavid S. Miller stx %o1, [%o2] 620a625fd2SDavid S. Miller retl 630a625fd2SDavid S. Miller nop 640a625fd2SDavid S. MillerENDPROC(sun4v_ncs_gettail) 650a625fd2SDavid S. Miller 660a625fd2SDavid S. Miller /* %o0: queue handle 670a625fd2SDavid S. Miller * %o1: new tail offset 680a625fd2SDavid S. Miller */ 690a625fd2SDavid S. MillerENTRY(sun4v_ncs_settail) 700a625fd2SDavid S. Miller mov HV_FAST_NCS_SETTAIL, %o5 710a625fd2SDavid S. Miller ta HV_FAST_TRAP 720a625fd2SDavid S. Miller retl 730a625fd2SDavid S. Miller nop 740a625fd2SDavid S. MillerENDPROC(sun4v_ncs_settail) 750a625fd2SDavid S. Miller 760a625fd2SDavid S. Miller /* %o0: queue handle 770a625fd2SDavid S. Miller * %o1: address of devino return 780a625fd2SDavid S. Miller */ 790a625fd2SDavid S. MillerENTRY(sun4v_ncs_qhandle_to_devino) 800a625fd2SDavid S. Miller mov %o1, %o2 810a625fd2SDavid S. Miller mov HV_FAST_NCS_QHANDLE_TO_DEVINO, %o5 820a625fd2SDavid S. Miller ta HV_FAST_TRAP 830a625fd2SDavid S. Miller stx %o1, [%o2] 840a625fd2SDavid S. Miller retl 850a625fd2SDavid S. Miller nop 860a625fd2SDavid S. MillerENDPROC(sun4v_ncs_qhandle_to_devino) 870a625fd2SDavid S. Miller 880a625fd2SDavid S. Miller /* %o0: queue handle 890a625fd2SDavid S. Miller * %o1: new head offset 900a625fd2SDavid S. Miller */ 910a625fd2SDavid S. MillerENTRY(sun4v_ncs_sethead_marker) 920a625fd2SDavid S. Miller mov HV_FAST_NCS_SETHEAD_MARKER, %o5 930a625fd2SDavid S. Miller ta HV_FAST_TRAP 940a625fd2SDavid S. Miller retl 950a625fd2SDavid S. Miller nop 960a625fd2SDavid S. MillerENDPROC(sun4v_ncs_sethead_marker) 97