From 1767d390fbf3d0c65389de46caf0b6d43ef3b6ad Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Fri, 10 Jul 2026 11:24:56 +0800 Subject: feat: establish bootable new architecture checkpoint Replace the compressed boot path with a relocatable higher-half RISC-V entry, expand memory and SMP support, and add the driver, TTY, VFS, exec, signal, syscall, initramfs, and self-test infrastructure needed for a bootable kernel checkpoint. --- na/test/test_uaccess.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'na/test/test_uaccess.cc') diff --git a/na/test/test_uaccess.cc b/na/test/test_uaccess.cc index d5795fc..c5a8c6c 100644 --- a/na/test/test_uaccess.cc +++ b/na/test/test_uaccess.cc @@ -7,13 +7,13 @@ #include #include +#include +#include #include -constexpr uint64 kKernelVABase = 0xFFFFFFC000000000ULL; - void selftest_uaccess() { - /* To test valid user addresses (< kKernelVABase), we need a writable page mapped there. + /* To test valid user addresses (< kKernelVaBase), we need a writable page mapped there. * We cannot use VmSpace::create() because it does not yet inherit kernel mappings, * so switching to it hangs. We also cannot map it with the U bit because S-mode * would need the SUM bit enabled. @@ -33,7 +33,7 @@ void selftest_uaccess() pmap::map(root_pa, mock_user_addr, paddr, pmap::PTE_R | pmap::PTE_W | pmap::PTE_V | pmap::PTE_A | pmap::PTE_D); /* Flush TLB to see the new mapping */ - asm volatile("sfence.vma" : : : "memory"); + tlb_shootdown_all(); st_begin("uaccess: copy_to_user valid range"); char kernel_buf[32] = "Hello User Space!"; @@ -67,12 +67,12 @@ void selftest_uaccess() st_pass(); st_begin("uaccess: copy_to_user invalid range (crosses boundary)"); - ret = copy_to_user(kKernelVABase - 10, kernel_buf, 20); + ret = copy_to_user(kKernelVaBase - 10, kernel_buf, 20); ST_ASSERT_EQ(ret, -EFAULT); st_pass(); st_begin("uaccess: copy_to_user invalid range (entirely in kernel)"); - ret = copy_to_user(kKernelVABase + 0x1000, kernel_buf, 20); + ret = copy_to_user(kKernelVaBase + 0x1000, kernel_buf, 20); ST_ASSERT_EQ(ret, -EFAULT); st_pass(); @@ -82,15 +82,15 @@ void selftest_uaccess() st_pass(); st_begin("uaccess: copy_from_user invalid ranges"); - ret = copy_from_user(read_buf, kKernelVABase - 5, 10); + ret = copy_from_user(read_buf, kKernelVaBase - 5, 10); ST_ASSERT_EQ(ret, -EFAULT); - ret = copy_from_user(read_buf, kKernelVABase, 10); + ret = copy_from_user(read_buf, kKernelVaBase, 10); ST_ASSERT_EQ(ret, -EFAULT); st_pass(); st_begin("uaccess: strncpy_from_user invalid range"); - uint64 invalid_addr = kKernelVABase + 0x1000; + uint64 invalid_addr = kKernelVaBase + 0x1000; len = strncpy_from_user(str_buf, invalid_addr, 10); ST_ASSERT_EQ(len, -EFAULT); st_pass(); -- cgit v1.2.3