diff options
| author | Himanshu Chauhan <[email protected]> | 2023-07-12 10:04:36 +0530 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2023-07-13 12:44:22 +0530 |
| commit | 0ad866067d7853683d88c10ea9269ae6001bcf6f (patch) | |
| tree | d1408bb6a721f2810d34f2880b87d68b92f46d2c | |
| parent | 6e44ef686a9b329d837c61d7f121541abfcfed90 (diff) | |
lib: sbi: Map/Unmap debug console shared memory buffers
With Smepmp enabled, it is necessary for shared memory from
S/U mode to be mapped/unmapped before and after read/write
of the memory region. This patch maps the debug console
shared memory before accessing it.
Signed-off-by: Himanshu Chauhan <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
| -rw-r--r-- | lib/sbi/sbi_ecall_dbcn.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/sbi/sbi_ecall_dbcn.c b/lib/sbi/sbi_ecall_dbcn.c index 8e687298..18cd6c8b 100644 --- a/lib/sbi/sbi_ecall_dbcn.c +++ b/lib/sbi/sbi_ecall_dbcn.c @@ -14,6 +14,7 @@ #include <sbi/sbi_ecall_interface.h> #include <sbi/sbi_trap.h> #include <sbi/riscv_asm.h> +#include <sbi/sbi_hart.h> static int sbi_ecall_dbcn_handler(unsigned long extid, unsigned long funcid, const struct sbi_trap_regs *regs, @@ -46,10 +47,12 @@ static int sbi_ecall_dbcn_handler(unsigned long extid, unsigned long funcid, regs->a1, regs->a0, smode, SBI_DOMAIN_READ|SBI_DOMAIN_WRITE)) return SBI_ERR_INVALID_PARAM; + sbi_hart_map_saddr(regs->a1, regs->a0); if (funcid == SBI_EXT_DBCN_CONSOLE_WRITE) *out_val = sbi_nputs((const char *)regs->a1, regs->a0); else *out_val = sbi_ngets((char *)regs->a1, regs->a0); + sbi_hart_unmap_saddr(); return 0; case SBI_EXT_DBCN_CONSOLE_WRITE_BYTE: sbi_putc(regs->a0); |
