Works in QEMU but not in Bochs
Posted: Sat Jun 28, 2025 2:26 pm
repo: https://github.com/mikhail10101/os-test
I recently tried further implementing a simple page table setup in kernel/arch/i386/mem.c and I have some questions.
In kernel/arch/i386/tty.c, I read that I had to change VGA_MEMORY = 0xB8000 to 0xC00B8000 to keep printing.
I have 2 printf statements in kernel/kernel/kernel.c, one before initMem (defined in mem.c) and one after. The one before initMem would work whether VGA_MEMORY is equal to 0xB8000 or 0xC00B8000. Is this because in kernel/arch/i386/boot.S, I'm mapping both logical addresses to the same physical address? Just to ensure my understanding is correct.
Secondly, my printf statement works in QEMU but not in Bochs and I have no idea why. I've been playing around with it but I can't figure it out.
Any help would be appreciated, thank you!
I recently tried further implementing a simple page table setup in kernel/arch/i386/mem.c and I have some questions.
In kernel/arch/i386/tty.c, I read that I had to change VGA_MEMORY = 0xB8000 to 0xC00B8000 to keep printing.
I have 2 printf statements in kernel/kernel/kernel.c, one before initMem (defined in mem.c) and one after. The one before initMem would work whether VGA_MEMORY is equal to 0xB8000 or 0xC00B8000. Is this because in kernel/arch/i386/boot.S, I'm mapping both logical addresses to the same physical address? Just to ensure my understanding is correct.
Secondly, my printf statement works in QEMU but not in Bochs and I have no idea why. I've been playing around with it but I can't figure it out.
Any help would be appreciated, thank you!