aboutsummaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2025-04-22simplify generator scriptsKimplul
2024-07-17make tests a bit more sensibleKimplul
+ At least by my standards. Some amount of scripting going on, but should still be fine. Effectively, source.mk contains information to build the test, check.mk checks the generated log from running the test. As a results, check.mk should output OK into reports/$TEST/OK if everything went well, and anything else otherwise. The user can then look at reports/$TEST/log to see what went wrong. I expect to add some more features, such as starting QEMU with gdb and running a single test a bit easier than right now (same limitation as in the top level makefile, i.e. you have to specify make -f scripts/makefile $TEST from within `tests` and you must have ran `make check` at that point so that `tests.mk` is fully generated. Not huge issues, but slightly annoying, somewhat unsure how to work around them properly but we'll see.
2024-07-17make compilation more robust on *BSDKimplul
2024-07-08fix LLVMKimplul
+ Anything extern is right out as LLVM doesn't produce correct code for them. Maybe if I added some extra attributes but I'm skeptical. Replaced with static variables and getters/setters. + Inline ASM is apparently a bit buggy, so use an assembly stub when jumping to init. + Minimize work done in main() to minimize chance of LLVM doing something silly. Still not 100% certain that I shouldn't just write the main() as an assembly stub in arch/riscv64 to be absolutely sure everything works as intended. + Make .kernel.start section SHF_ALLOC, otherwise lld complains about pc-relative addressing Probably some other stuff as well that I'm forgetting right now. But at least with LLVM14 LTO seems to work, which is pretty cool?
2024-07-05allow booting with Qemu's -kernel flag directlyKimplul
+ Took some fairly significant changes, for one the kernel is no longer relocated at the start of a boot, instead it sits wherever the user decides the kernel should sit. Similarly, the initial kernel stack and page table are stored within the binary, slightly bloating the size but making it much safer to boot since there's really no chance of us overwriting the fdt or initrd in memory.
2024-07-05fix some small build issuesKimplul
+ Compiling for size emits memcpy() calls after they've already been removed by LTO, so add __used attribute to counteract this. Newer versions of GCC seem to prefer `-flto=auto` to just `-flto`, so use that. printf format %d -> %ld
2023-07-24split makefile into two partsKimplul
+ First part generates deps.mk, second part reads it. Allows us to use both bmake and gmake with the same makefiles. Only drawback seems to be that the first makefile considers all individual files as 'finished' targets, meaning that it's more difficult to do something like make kernel.elf though I haven't found this to be an issue.
2023-05-11arbitrary load address and RAM base detectionKimplul
+ Both kind of go hand in hand, made sense to do both at the same time. Some parts feel slightly hacky, the loader works by placing everything on the stack and avoiding global values. Still, seems to work?
2023-05-08improve undocumented file warningKimplul
2023-05-01update license stuffKimplul
2022-09-02fix documentation warningsKimplul
2022-05-22add @file info to all filesKimplul
+ Next step, start documenting contents of each file.
2022-05-05apos compiles on netbsd with LLVM=1Kimplul
+ Turns out I had a dumb debugging echo that was messing up my variables. Oh well. + I'd still like to get riscv64-unknown-elf-gcc to compile, currently I've only managed with riscv64--netbsd-gcc, weird. Also, I have learned that BSD make doesn't use $< for some reason, so all rules should reference the full file name henceforth. BSD make does use $@, but for consistency I did away with it as well.
2022-05-05fix makefiles on netbsdKimplul
+ Doesn't quite compile all the way unfortunately, building the GNU toolchain on NetBSD is a bit more difficult than I was expecting. LLVM does compile, but fails to link for some reason.
2022-04-10add basic ubsan and fix issues reported by itKimplul
2022-03-03faster deps.mk generationKimplul
2022-01-07Use #if defined(...) when not guard clauseKimplul
2022-01-06Added lint rule to MakefileKimplul
+ Runs a syntax check on all files of the selected arch
2021-12-20Revert "still some issues with vmem"Kimplul
This reverts commit 69d13626a37e33f31627a1144605a8fb93684d25.
2021-12-20still some issues with vmemKimplul
+ Not sure if I should go with noinit or init, fuck
2021-12-19Massive changes to jump to userspaceKimplul
2021-09-19Added basic awareness of kernel size/boundsKimplul
2021-09-12Initial physical page managerKimplul
+ Will probably still need a fair bit of tweakind and documentation improvements, but seems to work outside of the kernel. Also no valgrind errors, which is quite promising I guess.
2021-08-31Improved linkind process, added padding generatorKimplul
2021-08-20New build systemKimplul
2021-08-19New build system (WIP)Kimplul