aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv/include/csr.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv/include/csr.h')
-rw-r--r--arch/riscv/include/csr.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/riscv/include/csr.h b/arch/riscv/include/csr.h
index 70e60bb..bd02b04 100644
--- a/arch/riscv/include/csr.h
+++ b/arch/riscv/include/csr.h
@@ -37,6 +37,9 @@
#define EXC_LOAD_PAGE_FAULT 13
#define EXC_STORE_PAGE_FAULT 15
+/* status CSR bits */
+#define SSTATUS_SUM (1 << 18)
+
/* directly lifted from Linux:/arch/riscv/include/asm/asm.h:9-13 */
#ifdef __ASSEMBLY__
#define __ASM_STR(x) x
@@ -50,4 +53,10 @@
#define csr_write(csr, val)\
__asm__ ("csrw " __ASM_STR(csr) ", %0" : : "rK" (val) : "memory")
+#define csr_set(csr, val)\
+ __asm__ ("csrs " __ASM_STR(csr) ", %0" : : "rK" (val) : "memory")
+
+#define csr_clear(csr, val)\
+ __asm__ ("csrc " __ASM_STR(csr) ", %0" : : "rK" (val) : "memory")
+
#endif /* APOS_CSR_H */