This project is mirrored from Pull mirroring updated .
  1. 05 Jan, 2019 2 commits
  2. 04 Jan, 2019 4 commits
  3. 02 Jan, 2019 6 commits
  4. 21 Dec, 2018 2 commits
  5. 15 Nov, 2018 2 commits
  6. 27 Oct, 2018 9 commits
  7. 26 Oct, 2018 3 commits
  8. 25 Oct, 2018 1 commit
  9. 24 Oct, 2018 1 commit
  10. 14 Aug, 2018 4 commits
  11. 03 Aug, 2018 3 commits
    • Colin Finck's avatar
      Add my PMCCNTR_EL0 test code to the AArch64 boot process. Doesn't work on uhyve though. · 6d9a87b2
      Colin Finck authored
      This led me to write the AArch64 loader code to eventually check PMCCNTR_EL0 support under QEMU.
      KVM claims to support PMCCNTR_EL0, so I highly suspect a uhyve bug here.
    • Colin Finck's avatar
      Add multiarchitecture support to the HermitCore loader and port it to AArch64. · de67505f
      Colin Finck authored
      * Load the loader to base address 0x40002000 on AArch64.
        When using "qemu-system-aarch64 -machine virt", RAM starts at 0x40000000, but QEMU already puts a short boot loader there.
        So 0x40002000 is a good choice. RAM also starts at 0x40000000 on some other ARM platforms (Exynos, first Raspberry Pis).
      * Convert the boot loader ELF file into a U-Boot image that pretends to be a Linux kernel.
        It can still be loaded with QEMU's -kernel option, however such a U-Boot image triggers QEMU's boot loader to put the address
        of the DTB into x0. We rely on that!
      * Make use of the new hermit-dtb crate to parse the DTB and find out about the passed initrd.
      This is still unfinished, but I've added detailed TODO comments regarding the next steps.
    • Colin Finck's avatar
      Introducing hermit-dtb, a crate to parse Flattened Device Trees (FDT)/Device... · ee168e92
      Colin Finck authored
      Introducing hermit-dtb, a crate to parse Flattened Device Trees (FDT)/Device Tree Blobs (DTB) in a `no_std` environment.
      Features currently include:
      * Enumerating subnodes of a given path.
      * Enumerating properties of a given path.
      * Getting the data of a specific property.
      * Finding incomplete paths (e.g. looking for `/uart@` reliably yields `/uart@fe001000` if that is the only UART device).
      * Written in mostly safe Rust.
        `unsafe` is only used when accessing the in-memory DTB in the first place (unavoidable) and for performance reasons (e.g. `str::from_utf8_unchecked`).
      * `parse_dtb` example tool to demonstrate the features.
  12. 26 Jul, 2018 1 commit
    • Colin Finck's avatar
      Port the Memory Manager to AArch64, with full support for 4-level Paging, 4... · 5e3fc7a0
      Colin Finck authored
      Port the Memory Manager to AArch64, with full support for 4-level Paging, 4 KiB, 2 MiB, and 1 GiB Pages, and Execute-Disable!
      * Make PageTableEntryFlags architecture-independent by adding builder pattern methods.
        Instead of providing PageTableEntryFlags::EXECUTE_DISABLE, one simply uses the execute_disable() method now.
        The different implementations of each method for AArch64 and x86_64 map to the respective architecture flags.
      * Make a boolean execute_disable the only additional parameter for mm::allocate() to make it architecture-independent.
      * Remove the do_ipi parameter from paging functions.
        It was x86_64-specific and there is nothing wrong with always doing an IPI when necessary and application processors have been booted.
      * Make the LEVEL/MAP_LEVEL constant ascending instead of descending for the AArch64 implementation to match with the Page Table names (L0, L1, etc.).
  13. 25 Jul, 2018 2 commits