From 132d3236bb884433bf94e961f6d32264e0334aec Mon Sep 17 00:00:00 2001 From: ornitorrincos Date: Tue, 18 Aug 2026 12:15:05 +0200 Subject: --- misc-host/test-vaddr/vaddr.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 misc-host/test-vaddr/vaddr.cpp (limited to 'misc-host/test-vaddr') diff --git a/misc-host/test-vaddr/vaddr.cpp b/misc-host/test-vaddr/vaddr.cpp new file mode 100644 index 0000000..c5af491 --- /dev/null +++ b/misc-host/test-vaddr/vaddr.cpp @@ -0,0 +1,50 @@ +#include +#include +#include + +typedef struct __attribute__((packed)) +{ + unsigned long page:21; + unsigned long PD:9; + unsigned long PDP:9; + unsigned long PML4:9; + unsigned long sign:16; +} s_vptr; + +union v +{ +s_vptr vptr; +unsigned long ptr; +}; + +int main() +{ + // 0x0FFFFFFFF; below 4GB + //unsigned long vaddr = 0x40000000; // 1GB // 0x100000000; // 4GB + + unsigned long vaddr = 0x280000000; // 10GB + + uint64_t kr = 0xffffffff7fffffff; // -2GB mark + + //v * p = (v*)&vaddr; + v * p = (v*)&kr; + + std::cout << "sign " << p->vptr.sign << std::endl; + std::cout << "PML4 " << p->vptr.PML4 << std::endl; + std::cout << "PDP " << p->vptr.PDP << std::endl; + std::cout << "PD " << p->vptr.PD << std::endl; + std::cout << "Page " << p->vptr.page << std::endl; + + + printf("%p\n", p->ptr); + //std::cout << "Pointer " << p->ptr << std::endl; + + v p2; + p2.ptr = 0; + p2.vptr.PML4 = 1; + + printf("p2: %p\n", p2.ptr); + + return 0; +} + -- cgit v1.2.3-70-g09d2