aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/dump_multiboot.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/dump_multiboot.cc')
-rw-r--r--src/kernel/dump_multiboot.cc23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/kernel/dump_multiboot.cc b/src/kernel/dump_multiboot.cc
index 60b4b91..219d64f 100644
--- a/src/kernel/dump_multiboot.cc
+++ b/src/kernel/dump_multiboot.cc
@@ -6,11 +6,11 @@ extern "C" void dump_multiboot(uint32_t mb_magic, uint32_t mb_addr) {
printk("multiboot addr: ", uhex{mb_addr}, !(mb_addr & 7) ? " is aligned" : " is not aligned", '\n');
struct multiboot_tag* tag;
- const uint32_t size = *(unsigned*)mb_addr;
+ const uint32_t size = *reinterpret_cast<uint32_t*>(mb_addr);
printk("Announced mbi size ", size, '\n');
- for (tag = (struct multiboot_tag*)(mb_addr + 8); tag->type != MULTIBOOT_TAG_TYPE_END;
- tag = (struct multiboot_tag*)((multiboot_uint8_t*)tag + ((tag->size + 7) & ~7))) {
+ for (tag = reinterpret_cast<multiboot_tag*>(mb_addr + 8); tag->type != MULTIBOOT_TAG_TYPE_END;
+ tag = reinterpret_cast<multiboot_tag*>(reinterpret_cast<uint8_t*>(tag) + ((tag->size + 7u) & ~7u))) {
switch (tag->type) {
case MULTIBOOT_TAG_TYPE_CMDLINE: {
auto* t = reinterpret_cast<multiboot_tag_string*>(tag);
@@ -37,11 +37,14 @@ extern "C" void dump_multiboot(uint32_t mb_magic, uint32_t mb_addr) {
multiboot_memory_map_t* mmap;
printk("memory map\n");
- for (mmap = t->entries; (multiboot_uint8_t*)mmap < (multiboot_uint8_t*)tag + tag->size;
- mmap = (multiboot_memory_map_t*)((unsigned long)mmap + ((struct multiboot_tag_mmap*)tag)->entry_size)) {
- printk(" base_addr = ", uhex{(unsigned)(mmap->addr >> 32)}, ' ', uhex{(unsigned)(mmap->addr & 0xffffffff)});
- printk(" length = ", (unsigned)(mmap->len >> 32), ' ', (unsigned)(mmap->len & 0xffffffff));
- printk(" type = ", (unsigned)mmap->type, '\n');
+ for (mmap = t->entries; reinterpret_cast<uint8_t*>(mmap) < reinterpret_cast<uint8_t*>(tag) + tag->size;
+ mmap = reinterpret_cast<multiboot_memory_map_t*>(reinterpret_cast<uint32_t>(mmap) +
+ reinterpret_cast<multiboot_tag_mmap*>(tag)->entry_size)) {
+ printk(" base_addr = ", uhex{static_cast<uint32_t>(mmap->addr >> 32)}, ' ',
+ uhex{static_cast<uint32_t>(mmap->addr & 0xffffffff)});
+ printk(" length = ", static_cast<uint32_t>(mmap->len >> 32), ' ',
+ static_cast<uint32_t>(mmap->len & 0xffffffff));
+ printk(" type = ", mmap->type, '\n');
}
} break;
@@ -51,6 +54,6 @@ extern "C" void dump_multiboot(uint32_t mb_magic, uint32_t mb_addr) {
} // switch(tag->type)
} // for(each tag)
- tag = (struct multiboot_tag*)((multiboot_uint8_t*)tag + ((tag->size + 7) & ~7));
- printk("Total mbi size ", (unsigned)tag - mb_addr, '\n');
+ tag = reinterpret_cast<multiboot_tag*>(reinterpret_cast<uint8_t*>(tag) + ((tag->size + 7u) & ~7u));
+ printk("Total mbi size ", reinterpret_cast<uint32_t>(tag) - mb_addr, '\n');
}