1*9ccb00e4SAndrew Jones /* SPDX-License-Identifier: GPL-2.0-only */ 2*9ccb00e4SAndrew Jones #ifndef _ASMRISCV_SBI_H_ 3*9ccb00e4SAndrew Jones #define _ASMRISCV_SBI_H_ 4*9ccb00e4SAndrew Jones 5*9ccb00e4SAndrew Jones enum sbi_ext_id { 6*9ccb00e4SAndrew Jones SBI_EXT_BASE = 0x10, 7*9ccb00e4SAndrew Jones SBI_EXT_SRST = 0x53525354, 8*9ccb00e4SAndrew Jones }; 9*9ccb00e4SAndrew Jones 10*9ccb00e4SAndrew Jones enum sbi_ext_base_fid { 11*9ccb00e4SAndrew Jones SBI_EXT_BASE_GET_SPEC_VERSION = 0, 12*9ccb00e4SAndrew Jones SBI_EXT_BASE_GET_IMP_ID, 13*9ccb00e4SAndrew Jones SBI_EXT_BASE_GET_IMP_VERSION, 14*9ccb00e4SAndrew Jones SBI_EXT_BASE_PROBE_EXT, 15*9ccb00e4SAndrew Jones SBI_EXT_BASE_GET_MVENDORID, 16*9ccb00e4SAndrew Jones SBI_EXT_BASE_GET_MARCHID, 17*9ccb00e4SAndrew Jones SBI_EXT_BASE_GET_MIMPID, 18*9ccb00e4SAndrew Jones }; 19*9ccb00e4SAndrew Jones 20*9ccb00e4SAndrew Jones struct sbiret { 21*9ccb00e4SAndrew Jones long error; 22*9ccb00e4SAndrew Jones long value; 23*9ccb00e4SAndrew Jones }; 24*9ccb00e4SAndrew Jones 25*9ccb00e4SAndrew Jones struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, 26*9ccb00e4SAndrew Jones unsigned long arg1, unsigned long arg2, 27*9ccb00e4SAndrew Jones unsigned long arg3, unsigned long arg4, 28*9ccb00e4SAndrew Jones unsigned long arg5); 29*9ccb00e4SAndrew Jones 30*9ccb00e4SAndrew Jones void sbi_shutdown(void); 31*9ccb00e4SAndrew Jones 32*9ccb00e4SAndrew Jones #endif /* _ASMRISCV_SBI_H_ */ 33