[PATCH v4 6/7] include: sbi: add emulate_load/store handler to platform ops

Anup Patel anup at brainfault.org
Sun Mar 10 21:18:31 PDT 2024


On Wed, Mar 6, 2024 at 8:06 AM Bo Gan <ganboing at gmail.com> wrote:
>
> 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 at gmail.com>

LGTM.

Reviewed-by: Anup Patel <anup at brainfault.org>

Regards,
Anup

> ---
>  include/sbi/sbi_platform.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h
> index 2fb33e1..f962aa4 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 */
> --
> 2.7.4
>



More information about the opensbi mailing list