diff options
Diffstat (limited to 'na/test/test_uaccess.cc')
| -rw-r--r-- | na/test/test_uaccess.cc | 18 |
1 files changed, 9 insertions, 9 deletions
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 <lume/vmm.h> #include <lume/pmm.h> +#include <lume/tlb.h> +#include <lume/mm_layout.h> #include <arch/pmap.h> -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(); |
