aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/kernel/asm.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv64/kernel/asm.h')
-rw-r--r--arch/riscv64/kernel/asm.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/riscv64/kernel/asm.h b/arch/riscv64/kernel/asm.h
new file mode 100644
index 0000000..f8ad202
--- /dev/null
+++ b/arch/riscv64/kernel/asm.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: copyleft-next-0.3.1 */
+/* Copyright 2023, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */
+
+/**
+ * @file asm.h
+ * Stuff to make assembly easier to write on both riscv64 and riscv32.
+ */
+
+#if __riscv_xlen == 64
+
+/** Store register. */
+#define sr sd
+
+/** Load register. */
+#define lr ld
+
+/** Shift count to get a register sized value. */
+#define RW_SHIFT 3
+
+#else
+
+/** Store register. */
+#define sr sw
+
+/** Load register. */
+#define lr lw
+
+/** Shift count to get register sized value. */
+#define RW_SHIFT 2
+#endif