diff --git a/README.md b/README.md index 85545751..32b0b6d2 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ Main features ------------- * Architecture support: - * [aarch64](kernel/src/arch/aarch64) - * [x86_64](kernel/src/arch/x86_64) - * [i686](kernel/src/arch/i686) (Pentium Pro and later) + * [aarch64](kernel/arch/aarch64) + * [x86_64](kernel/arch/x86_64) + * [riscv64](kernel/arch/riscv64) * Core features: * Kernel/userspace preemptive multithreading * Kernel-space multitasking with `async`/`await` runtime @@ -24,6 +24,7 @@ Main features * sysfs * devfs * ext2 + * fat32 (read-only) * Userspace features: * [Kernel-user ABI](lib/abi-def/yggdrasil.abi) generated from a rust-like description language * Sanitized system calls better suited for use in Rust @@ -33,33 +34,37 @@ Main features * Synchronization primitives through futex-like interface * Unix-like signals and exceptions * [Dynamic loader](userspace/dyn-loader) for linking with shared libraries + * Runs DOOM * Hardware features: * PCI Express devices - * NVMe drive support (read/write, currently x86_64 only, due to lack of MSI-X support on aarch64/i686). - * AHCI SATA drive support (read/write) + * NVMe drive support + * AHCI SATA drive support * xHCI USB host controller * VirtIO Network + GPU framebuffer support - * USB HID keyboards + * USB device support + * Hub driver + * HID keyboards and mice + * Mass storage (BBB) + * Partial hardware support for aarch64/riscv64 SBCs like StarFive VisionFive 2 and Raspberry Pi 4 aarch64-specific: * PSCI for SMP start-up and power control * PL011 serial port +* PL061 GPIO controller +* PL031 RTC * ARM generic timer as system/monotonic timer -* GICv2 IRQ controller +* GICv2 IRQ controller + GICv2m MSI interrupts x86-specific: -* Boot options: - * x86_64: UEFI [yboot](https://git.alnyan.me/yggdrasil/yboot) - * i686: multiboot/grub +* Boot via UEFI [yboot](https://git.alnyan.me/yggdrasil/yboot) * I/O and Local APIC IRQ controllers * PS/2 keyboard * HPET for x86_64 -* i8253-based timer for i686 or as a fallback timer +* i8253 as a fallback timer * COM ports -* ACPI, [work in progress](https://github.com/rust-osdev/acpi), mostly broken - on real hardware, so currently disabled +* ACPI, [work in progress](https://github.com/rust-osdev/acpi) * ACPI shutdown * PCI IRQ pin routing * Events like power button, etc. @@ -122,7 +127,6 @@ General plans (in no particular order) 2. Get a full LLVM build to work 3. Get rustc to work 4. Get self-hosted -5. Run doom (?) In addition to eternal code cleanup, I've been doing quite a lazy job at that lately...