From 0e1322bacbaccb34f167ebe243ab04836b99105c Mon Sep 17 00:00:00 2001 From: Anup Patel Date: Sun, 17 Nov 2019 14:16:24 +0530 Subject: lib: Better naming of unpriv APIs for wider use The unpriv APIs can be useful to external firmware and out-of-tree platform support code. This patch adds "sbi_" prefix to unpriv load/store APIs and rename struct riscv_unpriv to struct sbi_trap_info everywhere. We also place struct sbi_trap_info in sbi/sbi_trap.h so that we can use it for sbi_trap_redirect() as well. Overall, this patch will make naming of unpriv APIs consistent with other OpenSBI APIs. Signed-off-by: Anup Patel Reviewed-by: Atish Patra --- include/sbi/riscv_unpriv.h | 48 ---------------------------------------------- include/sbi/sbi_ipi.h | 5 +++-- include/sbi/sbi_trap.h | 18 ++++++++++++++--- include/sbi/sbi_unpriv.h | 44 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 53 deletions(-) delete mode 100644 include/sbi/riscv_unpriv.h create mode 100644 include/sbi/sbi_unpriv.h (limited to 'include') diff --git a/include/sbi/riscv_unpriv.h b/include/sbi/riscv_unpriv.h deleted file mode 100644 index bdea3a31..00000000 --- a/include/sbi/riscv_unpriv.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2019 Western Digital Corporation or its affiliates. - * - * Authors: - * Anup Patel - */ - -#ifndef __RISCV_UNPRIV_H__ -#define __RISCV_UNPRIV_H__ - -#include - -struct sbi_scratch; - -struct unpriv_trap { - unsigned long cause; - unsigned long tval; -}; - -#define DECLARE_UNPRIVILEGED_LOAD_FUNCTION(type) \ - type load_##type(const type *addr, \ - struct sbi_scratch *scratch, \ - struct unpriv_trap *trap); - -#define DECLARE_UNPRIVILEGED_STORE_FUNCTION(type) \ - void store_##type(type *addr, type val, \ - struct sbi_scratch *scratch, \ - struct unpriv_trap *trap); - -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u8) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u16) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(s8) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(s16) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(s32) -DECLARE_UNPRIVILEGED_STORE_FUNCTION(u8) -DECLARE_UNPRIVILEGED_STORE_FUNCTION(u16) -DECLARE_UNPRIVILEGED_STORE_FUNCTION(u32) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u32) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u64) -DECLARE_UNPRIVILEGED_STORE_FUNCTION(u64) -DECLARE_UNPRIVILEGED_LOAD_FUNCTION(ulong) - -ulong get_insn(ulong mepc, struct sbi_scratch *scratch, - struct unpriv_trap *trap); - -#endif diff --git a/include/sbi/sbi_ipi.h b/include/sbi/sbi_ipi.h index 53468b28..378a3c83 100644 --- a/include/sbi/sbi_ipi.h +++ b/include/sbi/sbi_ipi.h @@ -10,7 +10,6 @@ #ifndef __SBI_IPI_H__ #define __SBI_IPI_H__ -#include #include /* clang-format off */ @@ -24,12 +23,14 @@ /* clang-format on */ struct sbi_scratch; +struct sbi_trap_info; struct sbi_ipi_data { unsigned long ipi_type; }; -int sbi_ipi_send_many(struct sbi_scratch *scratch, struct unpriv_trap *uptrap, +int sbi_ipi_send_many(struct sbi_scratch *scratch, + struct sbi_trap_info *uptrap, ulong *pmask, u32 event, void *data); void sbi_ipi_clear_smode(struct sbi_scratch *scratch); diff --git a/include/sbi/sbi_trap.h b/include/sbi/sbi_trap.h index bc26ad13..4baa3a57 100644 --- a/include/sbi/sbi_trap.h +++ b/include/sbi/sbi_trap.h @@ -170,12 +170,24 @@ struct sbi_trap_regs { unsigned long mstatusH; } __packed; +/** Representation of trap details */ +struct sbi_trap_info { + /** epc Trap program counter */ + unsigned long epc; + /** cause Trap exception cause */ + unsigned long cause; + /** tval Trap value */ + unsigned long tval; +}; + struct sbi_scratch; -int sbi_trap_redirect(struct sbi_trap_regs *regs, struct sbi_scratch *scratch, - ulong epc, ulong cause, ulong tval); +int sbi_trap_redirect(struct sbi_trap_regs *regs, + struct sbi_trap_info *trap, + struct sbi_scratch *scratch); -void sbi_trap_handler(struct sbi_trap_regs *regs, struct sbi_scratch *scratch); +void sbi_trap_handler(struct sbi_trap_regs *regs, + struct sbi_scratch *scratch); #endif diff --git a/include/sbi/sbi_unpriv.h b/include/sbi/sbi_unpriv.h new file mode 100644 index 00000000..747ba731 --- /dev/null +++ b/include/sbi/sbi_unpriv.h @@ -0,0 +1,44 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2019 Western Digital Corporation or its affiliates. + * + * Authors: + * Anup Patel + */ + +#ifndef __SBI_UNPRIV_H__ +#define __SBI_UNPRIV_H__ + +#include + +struct sbi_scratch; +struct sbi_trap_info; + +#define DECLARE_UNPRIVILEGED_LOAD_FUNCTION(type) \ + type sbi_load_##type(const type *addr, \ + struct sbi_scratch *scratch, \ + struct sbi_trap_info *trap); + +#define DECLARE_UNPRIVILEGED_STORE_FUNCTION(type) \ + void sbi_store_##type(type *addr, type val, \ + struct sbi_scratch *scratch, \ + struct sbi_trap_info *trap); + +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u8) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u16) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(s8) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(s16) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(s32) +DECLARE_UNPRIVILEGED_STORE_FUNCTION(u8) +DECLARE_UNPRIVILEGED_STORE_FUNCTION(u16) +DECLARE_UNPRIVILEGED_STORE_FUNCTION(u32) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u32) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(u64) +DECLARE_UNPRIVILEGED_STORE_FUNCTION(u64) +DECLARE_UNPRIVILEGED_LOAD_FUNCTION(ulong) + +ulong sbi_get_insn(ulong mepc, struct sbi_scratch *scratch, + struct sbi_trap_info *trap); + +#endif -- cgit v1.3.1