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