aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliangzhen <zhen.liang@spacemit.com>2024-02-02 09:56:01 +0800
committerliangzhen <zhen.liang@spacemit.com>2024-02-02 09:56:01 +0800
commit9e18388b744c7cea04483ef1ef21bcd81e5835fb (patch)
treeefa4746ccce86ddeff461122a38cd57be7e2b2b7
parent67e775962321ef48f77e7ab5aa4f40ce3cf82b08 (diff)
downloadriscv-tests-9e18388b744c7cea04483ef1ef21bcd81e5835fb.zip
riscv-tests-9e18388b744c7cea04483ef1ef21bcd81e5835fb.tar.gz
riscv-tests-9e18388b744c7cea04483ef1ef21bcd81e5835fb.tar.bz2
Add virtual memory synchronization after completing the page tables
Signed-off-by: liangzhen <zhen.liang@spacemit.com> Change-Id: Ida1490338d204541c5c7f143aec3b8d79d83d7f4
-rw-r--r--debug/programs/translate.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/debug/programs/translate.c b/debug/programs/translate.c
index 59dffd6..e246baf 100644
--- a/debug/programs/translate.c
+++ b/debug/programs/translate.c
@@ -163,6 +163,7 @@ int main()
virtual = (uint32_t *) (
(reg_t) virtual | ~(((reg_t) 1 << vms->vaddr_bits) - 1));
add_entry(master_table, 0, (reg_t) virtual, (reg_t) physical);
+ __asm__ __volatile__ ("sfence.vma" ::: "memory"); // Virtual memory synchronization
unsigned long satp = set_field(0, SATP_MODE, vms->mode);
satp = set_field(satp, SATP_PPN, ((unsigned long) master_table) >> 12);