I added the option to run on the raspberry pi zero QEMU board quite easily, by adding a BOARD make option. I also removed the CPU and MEMORY options from the documentation, as they both must be set to a specific value for each board anyways, making them redundant.
As I have been discussing in #76 I've been looking for ways to detect the hardware information in the best way possible. Since QEMU doesn't provide the dtb file in r2 when starting from a .elf file, I decided to link it in the linker file, depending on the board that is passed to make. This doesn't mean that the kernel is compiled for a specific board, as we can still use the dtb that the bootloader passes to us in real hardware. This is just to circumvent that limitation in QEMU.
The OS now runs on the Raspberry Pi Zero and is passing all tests. This is what has been added.
A parser which performs a search for a specified property in a DTB. It does this without allocating any data structures, making it well suited for running when OS initialization is in its early stages. This is now used for board and memory detection.
The UART driver was refactored, so it may be used for both the BCM2835 and BCM2836, as it is identical in both.
New timer driver for use with the BCM2835, which uses the BCM's system timer. The timer which was previously used, which was interfaced with via the coprocessor, is not available in the ARM1176, which made this necessary.