mirror of
https://github.com/Fishwaldo/opensbi.git
synced 2025-07-05 04:29:07 +00:00
include: sbi: add emulate_load/store handler to platform ops
This patch allows the platform to define load/store emulators. This enables a platform to trap-and-emulate special devices or filter access to existing physical devices. Signed-off-by: Bo Gan <ganboing@gmail.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
4c112650bb
commit
ddf3b649f1
1 changed files with 8 additions and 0 deletions
|
@ -53,6 +53,7 @@ struct sbi_domain_memregion;
|
||||||
struct sbi_ecall_return;
|
struct sbi_ecall_return;
|
||||||
struct sbi_trap_regs;
|
struct sbi_trap_regs;
|
||||||
struct sbi_hart_features;
|
struct sbi_hart_features;
|
||||||
|
union sbi_ldst_data;
|
||||||
|
|
||||||
/** Possible feature flags of a platform */
|
/** Possible feature flags of a platform */
|
||||||
enum sbi_platform_features {
|
enum sbi_platform_features {
|
||||||
|
@ -139,6 +140,13 @@ struct sbi_platform_operations {
|
||||||
int (*vendor_ext_provider)(long funcid,
|
int (*vendor_ext_provider)(long funcid,
|
||||||
struct sbi_trap_regs *regs,
|
struct sbi_trap_regs *regs,
|
||||||
struct sbi_ecall_return *out);
|
struct sbi_ecall_return *out);
|
||||||
|
|
||||||
|
/** platform specific handler to fixup load fault */
|
||||||
|
int (*emulate_load)(int rlen, unsigned long addr,
|
||||||
|
union sbi_ldst_data *out_val);
|
||||||
|
/** platform specific handler to fixup store fault */
|
||||||
|
int (*emulate_store)(int wlen, unsigned long addr,
|
||||||
|
union sbi_ldst_data in_val);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Platform default per-HART stack size for exception/interrupt handling */
|
/** Platform default per-HART stack size for exception/interrupt handling */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue