The kernel is still fairly stable in QEMU but seems to be pretty broken when running under RVVM (which is more convenient for testing graphics features). The problem is probably in my code – not in the emulator – but since switching back to QEMU seems to resolve the issue and since I’m sick of debugging it I think that will be the solution for the short term.
The bug itself is probably in my code interfacing to SBI, which isn’t necessary in the QEMU build because I use some old xv6 bootstrap code instead on those builds. This code should be simple but there must be some quirks I’m unaware of with SBI’s timer setup, which may arise on real hardware but for now are only holding up testing when using RVVM.
The good news is I can probably get the desktop system working with QEMU now that I’ve got the foundations working, since the display part of the system can just be run on the host machine anyway – at least if I can get networking to function well enough in that configuration.
So I should be back to work again now (not just debugging my existing code…) and my scheduler itself should be stable as long as I can resolve any timer/interrupt problems later on.
RVVM seems to be a really good emulator though aside from my present issues so it’d be nice to get the system running properly on there eventually but isn’t really necessary to continue development (fixing structural things and testing on real hardware are both more important!).