1#include "mem/tests/test_internal.h"
2
3TEST_DECLARE_UNIT(mem, tlb_shootdown_single_cpu) {
4 ABORT_IF_RAM_LOW();
5
6 paddr_t p1 = pmm_alloc_page();
7 paddr_t p2 = pmm_alloc_page();
8 TEST_ASSERT(p1 && p2);
9
10 void *va = vmm_map_bump(p1, PAGE_SIZE, 0);
11 TEST_ASSERT_NONNULL(va);
12
13 *(volatile uint64_t *) va = 0x11111111;
14
15 vmm_unmap_virt(addr: va, PAGE_SIZE, vflags: VMM_FLAG_NONE);
16 va = vmm_map_bump(p2, PAGE_SIZE, 0);
17
18 tlb_shootdown(addr: (uintptr_t) va, true);
19
20 *(volatile uint64_t *) va = 0x22222222;
21 TEST_ASSERT_EQ(*(volatile uint64_t *) va, 0x22222222);
22
23 return TEST_SUCCESS;
24}
25