We almost always return sbiret from sbi wrapper functions so do that for sbi_get_imp_version() and sbi_get_imp_id(), but asserting no error and returning the value is also useful, so continue to provide those functions too, just with a slightly different name. Signed-off-by: Andrew Jones <andrew.jones@xxxxxxxxx> --- lib/riscv/asm/sbi.h | 6 ++++-- lib/riscv/sbi.c | 18 ++++++++++++++---- riscv/sbi-sse.c | 4 ++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/riscv/asm/sbi.h b/lib/riscv/asm/sbi.h index edaee462c3fa..a5738a5ce209 100644 --- a/lib/riscv/asm/sbi.h +++ b/lib/riscv/asm/sbi.h @@ -260,9 +260,11 @@ struct sbiret sbi_send_ipi_cpumask(const cpumask_t *mask); struct sbiret sbi_send_ipi_broadcast(void); struct sbiret sbi_set_timer(unsigned long stime_value); struct sbiret sbi_get_spec_version(void); -unsigned long sbi_get_imp_version(void); -unsigned long sbi_get_imp_id(void); +struct sbiret sbi_get_imp_version(void); +struct sbiret sbi_get_imp_id(void); long sbi_probe(int ext); +unsigned long __sbi_get_imp_version(void); +unsigned long __sbi_get_imp_id(void); typedef void (*sbi_sse_handler_fn)(void *data, struct pt_regs *regs, unsigned int hartid); diff --git a/lib/riscv/sbi.c b/lib/riscv/sbi.c index 53d25489f905..2959378f64bb 100644 --- a/lib/riscv/sbi.c +++ b/lib/riscv/sbi.c @@ -183,21 +183,31 @@ struct sbiret sbi_set_timer(unsigned long stime_value) return sbi_ecall(SBI_EXT_TIME, SBI_EXT_TIME_SET_TIMER, stime_value, 0, 0, 0, 0, 0); } -unsigned long sbi_get_imp_version(void) +struct sbiret sbi_get_imp_version(void) +{ + return sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_IMP_VERSION, 0, 0, 0, 0, 0, 0); +} + +struct sbiret sbi_get_imp_id(void) +{ + return sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_IMP_ID, 0, 0, 0, 0, 0, 0); +} + +unsigned long __sbi_get_imp_version(void) { struct sbiret ret; - ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_IMP_VERSION, 0, 0, 0, 0, 0, 0); + ret = sbi_get_imp_version(); assert(!ret.error); return ret.value; } -unsigned long sbi_get_imp_id(void) +unsigned long __sbi_get_imp_id(void) { struct sbiret ret; - ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_IMP_ID, 0, 0, 0, 0, 0, 0); + ret = sbi_get_imp_id(); assert(!ret.error); return ret.value; diff --git a/riscv/sbi-sse.c b/riscv/sbi-sse.c index 97e07725c359..bc6afaf5481e 100644 --- a/riscv/sbi-sse.c +++ b/riscv/sbi-sse.c @@ -1232,8 +1232,8 @@ void check_sse(void) return; } - if (sbi_get_imp_id() == SBI_IMPL_OPENSBI && - sbi_get_imp_version() < sbi_impl_opensbi_mk_version(1, 7)) { + if (__sbi_get_imp_id() == SBI_IMPL_OPENSBI && + __sbi_get_imp_version() < sbi_impl_opensbi_mk_version(1, 7)) { report_skip("OpenSBI < v1.7 detected, skipping tests"); report_prefix_pop(); return; -- 2.48.1