From a302ef42887a1a349d9918d5d1471bbea8f59c2b Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 10 Mar 2021 19:39:30 +0200 Subject: vmm: display segment map info --- src/vmm.cc | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/vmm.cc (limited to 'src/vmm.cc') diff --git a/src/vmm.cc b/src/vmm.cc new file mode 100644 index 0000000..346e6ab --- /dev/null +++ b/src/vmm.cc @@ -0,0 +1,49 @@ +#include + +typedef void (*constructor)(); + +extern "C" { +/* .text */ +uint32_t begin_text; +uint32_t end_text; + +/* .rodata */ +uint32_t begin_rodata; +uint32_t end_rodata; + +/* .data */ +uint32_t begin_constinit; +uint32_t end_constinit; +constructor begin_ctors; +constructor end_ctors; +uint32_t begin_data; +uint32_t end_data; + +/* .bss */ +uint32_t begin_bss; +uint32_t end_bss; + +void kernel_constructors() { + for (constructor* i = &begin_ctors; i != &end_ctors; ++i) (*i)(); +} + +void dump_address() { + printk("text begin: ", uhex{reinterpret_cast(&begin_text)}, + " end: ", uhex{reinterpret_cast(&end_text)}, '\n'); + + printk("rodata begin: ", uhex{reinterpret_cast(&begin_rodata)}, + " end: ", uhex{reinterpret_cast(&end_rodata)}, '\n'); + + printk("constinit begin: ", uhex{reinterpret_cast(&begin_constinit)}, + " end: ", uhex{reinterpret_cast(&end_constinit)}, '\n'); + + printk("ctors begin: ", uhex{reinterpret_cast(&begin_ctors)}, + " end: ", uhex{reinterpret_cast(&end_ctors)}, '\n'); + + printk("data begin: ", uhex{reinterpret_cast(&begin_data)}, + " end: ", uhex{reinterpret_cast(&end_data)}, '\n'); + + printk("bss begin: ", uhex{reinterpret_cast(&begin_bss)}, + " end: ", uhex{reinterpret_cast(&end_bss)}, '\n'); +} +} // extern "C" -- cgit v1.2.1