//------------------------------------------------------------------------------ // // Make ECALL to SBI // // Copyright (c) 2023, Ventana Micro Systems Inc. All rights reserved.
// // SPDX-License-Identifier: BSD-2-Clause-Patent // //------------------------------------------------------------------------------ #include .data .align 3 .section .text // // Make ECALL to SBI // ecall updates the same a0 and a1 registers with // return values. Hence, the C function which calls // this should pass the address of Arg0 and Arg1. // This routine saves the address and updates it // with a0 and a1 once ecall returns. // // @param a0 : Pointer to Arg0 // @param a1 : Pointer to Arg1 // @param a2 : Arg2 // @param a3 : Arg3 // @param a4 : Arg4 // @param a5 : Arg5 // @param a6 : FunctionID // @param a7 : ExtensionId // ASM_FUNC (RiscVSbiEcall) mv t0, a0 mv t1, a1 ld a0, 0(a0) ld a1, 0(a1) ecall sd a0, 0(t0) sd a1, 0(t1) ret