diff options
| author | Bo Gan <ganboing@gmail.com> | 2024-03-05 18:35:39 -0800 |
|---|---|---|
| committer | Anup Patel <anup@brainfault.org> | 2024-03-11 10:54:14 +0530 |
| commit | ddf3b649f1edd9eb5ad171c7faadf34acfb942f0 (patch) | |
| tree | 14caafa4a0f166ba645e2f81aadd5e337ea470f6 /include | |
| parent | 4c112650bbb0611de4939c749e2a34c8168e09f7 (diff) | |
| download | opensbi-ddf3b649f1edd9eb5ad171c7faadf34acfb942f0.tar.gz opensbi-ddf3b649f1edd9eb5ad171c7faadf34acfb942f0.tar.bz2 opensbi-ddf3b649f1edd9eb5ad171c7faadf34acfb942f0.zip | |
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>
Diffstat (limited to 'include')
| -rw-r--r-- | include/sbi/sbi_platform.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index 2fb33e16..f962aa46 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -53,6 +53,7 @@ struct sbi_domain_memregion; struct sbi_ecall_return; struct sbi_trap_regs; struct sbi_hart_features; +union sbi_ldst_data; /** Possible feature flags of a platform */ enum sbi_platform_features { @@ -139,6 +140,13 @@ struct sbi_platform_operations { int (*vendor_ext_provider)(long funcid, struct sbi_trap_regs *regs, 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 */ |
