aboutsummaryrefslogtreecommitdiff
path: root/include/sbi/sbi_ipi.h
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@wdc.com>2019-05-23 13:30:58 +0530
committerAnup Patel <anup@brainfault.org>2019-05-24 08:22:47 +0530
commita6395acd6cb2c35871481d3e4f0beaf449f8c0fd (patch)
tree4361c3454a814e49cea8f53d0a6cf3885e7f280b /include/sbi/sbi_ipi.h
parentbb915780ac76b146f3de47f105a95359e02f158c (diff)
lib: Handle page/access fault caused by unpriv load/store
The unpriv load/store instruction from M-mode can cause page/access fault to M-mode if S-mode page table did not have mappings OR it did not have PMP access permission. To tackle this, we redirect trap back to S-mode if unpriv load/store instruction traps in M-mode. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
Diffstat (limited to 'include/sbi/sbi_ipi.h')
-rw-r--r--include/sbi/sbi_ipi.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/sbi/sbi_ipi.h b/include/sbi/sbi_ipi.h
index b8afb5b..53468b2 100644
--- a/include/sbi/sbi_ipi.h
+++ b/include/sbi/sbi_ipi.h
@@ -10,6 +10,7 @@
#ifndef __SBI_IPI_H__
#define __SBI_IPI_H__
+#include <sbi/riscv_unpriv.h>
#include <sbi/sbi_types.h>
/* clang-format off */
@@ -28,8 +29,8 @@ struct sbi_ipi_data {
unsigned long ipi_type;
};
-int sbi_ipi_send_many(struct sbi_scratch *scratch, ulong *pmask, u32 event,
- void *data);
+int sbi_ipi_send_many(struct sbi_scratch *scratch, struct unpriv_trap *uptrap,
+ ulong *pmask, u32 event, void *data);
void sbi_ipi_clear_smode(struct sbi_scratch *scratch);