summaryrefslogtreecommitdiff
path: root/kernel/riscv.h
diff options
context:
space:
mode:
authorMole Shang <[email protected]>2024-02-11 14:41:35 +0800
committerMole Shang <[email protected]>2024-02-11 14:41:35 +0800
commit48a5e34fcd07852b4a68825ce8e37feb6f6d04d7 (patch)
treeb6ec41ca1889db0122d754b0083c7d1d87cb0818 /kernel/riscv.h
parent3673a2cdfb30e1e3936e695a3fb8adee74488d6b (diff)
downloadxv6-labs-48a5e34fcd07852b4a68825ce8e37feb6f6d04d7.tar.gz
xv6-labs-48a5e34fcd07852b4a68825ce8e37feb6f6d04d7.tar.bz2
xv6-labs-48a5e34fcd07852b4a68825ce8e37feb6f6d04d7.zip
lab traps: finishtraps
Diffstat (limited to 'kernel/riscv.h')
-rw-r--r--kernel/riscv.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/riscv.h b/kernel/riscv.h
index 33fa9ee..5ede50a 100644
--- a/kernel/riscv.h
+++ b/kernel/riscv.h
@@ -327,6 +327,15 @@ sfence_vma()
asm volatile("sfence.vma zero, zero");
}
+// read the frame pointer of currently executing func
+static inline uint64
+r_fp()
+{
+ uint64 x;
+ asm volatile("mv %0, s0" : "=r" (x) );
+ return x;
+}
+
typedef uint64 pte_t;
typedef uint64 *pagetable_t; // 512 PTEs