Permalink
Switch branches/tags
Commits on Dec 17, 2018
  1. Tidied up code and added comments explaning kallocator / Heap arrange…

    diodesign committed Dec 17, 2018
    …ment. Basically, kallocator is the global kernel heap allocator API. Heap is the underlying engine, which manages pools of physical memory for each CPU core.
  2. Update documentation and CI to use nightly for allocation API

    diodesign committed Dec 17, 2018
  3. Plug kernel heap allocator into Rust's allocator API. We want to take…

    diodesign committed Dec 17, 2018
    … advantage of Rust's borrow checking and memory maagement, with our code just providing the underlying allocations.
  4. Kernel heap consolidation and testing and debug, plus safety net for …

    diodesign committed Dec 17, 2018
    …kmain to catch fatal errors
Commits on Dec 14, 2018
  1. Added machine/hypervisor kernel heap memory management and build opti…

    diodesign committed Dec 14, 2018
    …on to enable debugging
  2. Fix capitalization of Qemu keypress

    diodesign committed Dec 14, 2018
  3. Fix capitalization of Qemu keypress

    diodesign committed Dec 14, 2018
  4. Add instructions for escaping to the Qemu monitor

    diodesign committed Dec 14, 2018
  5. Add instructions for escaping the Qemu monitor

    diodesign committed Dec 14, 2018
  6. Fresh screenshot and updated credits

    diodesign committed Dec 14, 2018
  7. Dump fixed global variables page, use data/bss area as normal, and im…

    diodesign committed Dec 14, 2018
    …plement spinlock as a high-level primitive
  8. Switch to stable rust now that RV32IMAC is in stable. Nightly breaks …

    diodesign committed Dec 14, 2018
    …right now, so let's avoid that until it's really needed.
  9. Tidy up pre-SMP initialization so CPU cores start when the boot CPU g…

    diodesign committed Dec 14, 2018
    …ives the green light
  10. Simplify startup with CPU cores claiming memory on a first come, firs…

    diodesign committed Dec 14, 2018
    …t served basis. This should scale better and fewer istructions means fewer bugs. Each CPU core gets its own private slab of memory in which it can build its own heap and hold private variables. this reduces contention and pushes detailed physical memory management into the supervisoer kernel(s). all the machine/hypervisor kernel needs to do is track regions of physical memory for each supervisor environment. this can be done using a tree structure in future. the aim is to make the hypervisor/machine kernel as lean as possible, farming out resources to supervisors to manage separately and securely
  11. Simplify startup with CPU cores claiming memory on a first come, firs…

    diodesign committed Dec 14, 2018
    …t served basis. This should scale better and fewer istructions means fewer bugs. Each CPU core gets its own private slab of memory in which it can build its own heap and hold private variables. this reduces contention and pushes detailed physical memory management into the supervisoer kernel(s). all the machine/hypervisor kernel needs to do is track regions of physical memory for each supervisor environment. this can be done using a tree structure in future. the aim is to make the hypervisor/machine kernel as lean as possible, farming out resources to supervisors to manage separately and securely
Commits on Nov 14, 2018
  1. Update README.md

    diodesign committed Nov 14, 2018
    Fix typo
Commits on Nov 12, 2018
  1. Switch around stacks so of the 16KB assigned per-CPU, IRQ has the top…

    diodesign committed Nov 12, 2018
    … 8KB, boot has the lower 8KB. when startup is over, the IRQ handlers can consume all 16KB. also drop down the IRQ stack a few bytes to squeeze some per-CPU variables.
  2. Avoid FFI concerns by returning start and end of kernel area separate…

    diodesign committed Nov 12, 2018
    …ly rather than as a tuple
  3. Enforce style guide: it's the same as Rust's except force braces on n…

    diodesign committed Nov 12, 2018
    …ewlines. Also, do not apply to contrib code
  4. Tidy up references to u64 and u32 to just usize. Rather than make ass…

    diodesign committed Nov 12, 2018
    …umptions, let the toolchain for the underlying platform make the final decision on max pointer length for us. This is because for the architectures we care about, max pointer width is either 32 or 64 bit, and max addressable memory, physically and virtually, is 2^32 or 2^64. RV32 uses SV32, which is 32-bit max for virtual and physical. RV64 provides SV39 and SV48, which are covered by 64-bit pointers.
Commits on Nov 11, 2018
  1. Update README.md

    diodesign committed Nov 11, 2018
  2. Fix up typos and markup, and add extra info

    diodesign committed Nov 11, 2018
  3. Split building instructions from welcome Readme

    diodesign committed Nov 11, 2018
  4. Manage physical memory into stack(s) of physical 4KB page frames. Cen…

    diodesign committed Nov 11, 2018
    …tralize more common code between RV32 ports. And other improvements.
Commits on Oct 22, 2018
  1. Report fault PC in kernel exceptions, aids debugging

    diodesign committed Oct 22, 2018
  2. More intelligent exception and interrupt handling. Catch and describe…

    diodesign committed Oct 22, 2018
    … fatal kernel errors
  3. Implement skeleton interrupt/exception handler. Tidied up arrangement…

    diodesign committed Oct 22, 2018
    … of code.
Commits on Oct 21, 2018
  1. Move common assembly code into shared directory between RV32G targets…

    diodesign committed Oct 21, 2018
    …. Update build system to support this. Move the locks page to the top of boot memory, shifting the boot stacks down 4K to accomodate SiFive U34 fixed load address
Commits on Oct 20, 2018
  1. Detect and fail on assembler and archiver errors. So far, the build s…

    diodesign committed Oct 20, 2018
    …cript catches situations when the assembler or archiver fails to run, such as if the executable is missing. Now we catch failures during runtime of the assembler and archiver, such as fatal syntax errors in source code.
  2. Improve debug and atomics, read CPU ID from CSR

    diodesign committed Oct 20, 2018
Commits on Oct 16, 2018
  1. Fix missing return

    diodesign committed Oct 16, 2018
Commits on Oct 12, 2018
  1. Script applies to Qemu Virt as well as Sifive

    diodesign committed Oct 12, 2018
  2. Document qemu32_virt

    diodesign committed Oct 12, 2018
  3. Update README.md

    diodesign committed Oct 12, 2018
    Correct wording.