1. 04 Nov, 2019 1 commit
    • Waylon Cude's avatar
      Updated bootless to latest version · 1b0f3cfe
      Waylon Cude authored
      bootless is now licensed under the MPLv2 so we maintain license
      compatibility in the same way. This change is mainly to make the new
      README for bootless visible
      1b0f3cfe
  2. 26 Sep, 2019 1 commit
    • Waylon Cude's avatar
      Changed bootless URL · f01249d4
      Waylon Cude authored
      I moved bootless into the wayless group, so I had to update the
      submodule here
      f01249d4
  3. 19 Jul, 2019 2 commits
    • Waylon Cude's avatar
      Fix tests · f126292a
      Waylon Cude authored
      I accidentally removed a `use` that was needed for tests. This was
      previously a global use in src/kernel.rs, but is now a use local to that
      specific test. I actually ran tests this time too lol
      f126292a
    • Waylon Cude's avatar
      Refactored to use wayless_api · 185ae186
      Waylon Cude authored
      I moved generic parts of the api into another crate. This lets both the
      kernel and userspace easily use the same api.
      185ae186
  4. 18 Jul, 2019 3 commits
    • Waylon Cude's avatar
      Userspace now gets a starting stack · dbcfc8fc
      Waylon Cude authored
      This should let Rust code run successfully. I though I already did this?
      But maybe I never committed these changes before.
      
      The starting userspace program should be smart enough to bootstrap
      itself on this stack and to increase the size of the stack if necessary
      dbcfc8fc
    • Waylon Cude's avatar
      Fixed release build · e790ea53
      Waylon Cude authored
      I wasn't actually including the bootloader in release builds, this has
      been fixed and release builds are now running again
      e790ea53
    • Waylon Cude's avatar
      Added Reply syscall · 87356b0d
      Waylon Cude authored
      This is one of the last system calls that I need, the only one left is
      Recv. I still need to rewrite Call to make it so Reply capabilities are
      actually generated so users can actually use Reply
      87356b0d
  5. 16 Jul, 2019 1 commit
    • Waylon Cude's avatar
      Added `.cargo/bin` to $PATH in test script · fb0c6ab2
      Waylon Cude authored
      This lets us use xargo in the test script. Previously there was no
      requirement for this, but the userspace always gets built for the target
      operating system so we need to be able to use xargo.
      fb0c6ab2
  6. 18 Jun, 2019 4 commits
    • Waylon Cude's avatar
      Fixed .gitignore · 9ee20532
      Waylon Cude authored
      Apparently the .gitignore was ignoring all Cargo.toml files instead of
      just the root Cargo.toml. This ignored the userspace Cargo.toml, and has
      been fixed.
      9ee20532
    • Waylon Cude's avatar
      Removed Cargo.lock · f5cc0ab4
      Waylon Cude authored
      Keeping a Cargo.lock file around is kind of weird because I have 3
      different Cargo.toml files all using the same lock file. This has been
      removed as it's not super necessary.
      f5cc0ab4
    • Waylon Cude's avatar
      Rewrote userspace program to use Rust · 51c7f8c5
      Waylon Cude authored
      This will make it so I don't have to use assembly to write userspace
      programs, I can use a real programming language like Rust. Note that the
      rust environment isn't fully set up as I haven't actually created a
      stack yet. As such writing any actual code will probably cause a
      segfault, this will be fixed shortly.
      51c7f8c5
    • Waylon Cude's avatar
      Cleaned up bootloader files · 5e91ded5
      Waylon Cude authored
      These source files are no longer used and have been purged from the
      repository. They now exist solely in bootless.
      5e91ded5
  7. 13 Jun, 2019 1 commit
    • Waylon Cude's avatar
      Added bootless as a submodule · 2977e36c
      Waylon Cude authored
      Reworked the Makefile to take advantage of this. I no longer have to
      worry about doing the terrible recursive Make system I was doing before.
      I also don't have to compile any of the relevant bootloader assembly files
      now as they've been moved into the bootless project.
      2977e36c
  8. 30 May, 2019 1 commit
    • Waylon Cude's avatar
      Reduced size of page tables · c79f9a48
      Waylon Cude authored
      The page tables in the bootloader now use larger page sizes. This means
      that significantly less pages have to be allocated, reducing the size of
      the bootloader by ~2MiB. It may improve the performance of wayless as
      well, as different caches are used for different page sizes, and less
      traversal is required when looking at any identity-mapped memory.
      c79f9a48
  9. 29 May, 2019 2 commits
    • Waylon Cude's avatar
      Reworked integration test · c267dbec
      Waylon Cude authored
      The gitlab ci test will now look at the last 20 lines of kernel output
      instead of the last 10, as there were too many lines and the test was
      not seeing the kernel exit
      c267dbec
    • Waylon Cude's avatar
      Fixed release builds in Makefile · 01246f06
      Waylon Cude authored
      I wasn't actually building the release builds correctly, the release
      kernel never made it into the final iso. This has been fixed.
      01246f06
  10. 24 May, 2019 2 commits
    • Waylon Cude's avatar
      Cleanup + changed message in prompt · a6d27b32
      Waylon Cude authored
      A few comments were removed, and the userspace program now displays a
      header that says Wayless instead of Hello World.
      a6d27b32
    • Waylon Cude's avatar
      Added release targets to Makefile · afb5224b
      Waylon Cude authored
      This lets the user build an optimized version of Wayless, and provides
      for the ability to strip out binary information which makes the
      resulting kernel much smaller.
      afb5224b
  11. 12 May, 2019 1 commit
  12. 11 May, 2019 1 commit
    • Waylon Cude's avatar
      Added IO port input + capability refactor · 1c476465
      Waylon Cude authored
      There is now a method on IOPorts to read in data. This lets us read from
      the serial port, and the userspace program has been modified to take
      advantage of this.
      
      In addition capabilities have been refactored a bit, instead of being
      one giant file the main logic has been moved into
      `src/capabilities/mod.rs` while the logic for specific capabilities has
      been broken out into additional files.
      
      Call is actually working now, we can successfully return values from
      system calls.
      1c476465
  13. 09 May, 2019 4 commits
    • Waylon Cude's avatar
      Added Out16 and Out32 · 76ccbb12
      Waylon Cude authored
      The methods for outputting 32-bit and 16-bit numbers to CPU ports have
      been added. They are currently untested, but simple enough where they
      should be working
      76ccbb12
    • Waylon Cude's avatar
      Cleaned up Makefile · 24679a4b
      Waylon Cude authored
      The output from the Makefile is a bit clearer, to make it easier to tell
      when you've successfully built Wayless. In addition a trailing / has
      been removed, it was unneccessary and cluttering up the output
      24679a4b
    • Waylon Cude's avatar
      Updated dependencies · 74389f9f
      Waylon Cude authored
      All of the dependencies of wayless have been updated to their latest
      version. This involved some slight reworking of interrupts, as
      ExceptionStackFrame got renamed to InterruptStackFrame.
      
      Some bugs in the Makefile have been fixed as well, I hadn't specified
      build/ as a dependency of build/size so you couldn't build the project
      unless build had already been created. This has been fixed.
      
      In addition the whole project will now be rebuilt if any of the cargo
      files are modified, as before I had to `make clean` if I wanted to
      rebuild the project after updating Cargo.toml
      74389f9f
    • Waylon Cude's avatar
      Reworked makefile to determine size of kernel · df434194
      Waylon Cude authored
      The makefile will now recursively build the kernel until it has the
      right size. This means that the user no longer has to change a constant
      in an assembly file if the kernel grows too large, and will make it so
      userspace programs of any size are supported.
      
      There is a default size of 3*2MiB, which is how big the kernel is right
      now. This should be updated as the kernel grows in size.
      df434194
  14. 03 May, 2019 1 commit
    • Waylon Cude's avatar
      The Great Relicensing · 1276aee1
      Waylon Cude authored
      It turns out the seL4 is licensed under the GPLv2, without the clause
      letting you use any later version. Wayless was previously licensed under
      the GPLv3 (or later). As of this commit all of my source files have
      been relicensed to use the GPLv2, to ensure license compatibility.
      1276aee1
  15. 15 Mar, 2019 1 commit
  16. 09 Mar, 2019 1 commit
    • Waylon Cude's avatar
      Improved makefile + various fixes · 83e86817
      Waylon Cude authored
      The Makefile now is a bit more robust, if sel4 fails to build then you
      should no longer have to `make distclean`.
      
      Removed a duplicate line from the readme. Removed an unecessary
      definition from src/unwind.rs.
      83e86817
  17. 08 Mar, 2019 6 commits
    • Waylon Cude's avatar
      Merge branch 'bart' into 'master' · 081c9356
      Waylon Cude authored
      "tune up" io.rs inline asm
      
      See merge request !2
      081c9356
    • Bart Massey's avatar
      "tuned up" io.rs inline asm · 9e5ce0ba
      Bart Massey authored
      9e5ce0ba
    • Bart Massey's avatar
      Merge branch 'master' into bart · fda14aee
      Bart Massey authored
      fda14aee
    • Waylon Cude's avatar
      Added some tests · 612cd3f9
      Waylon Cude authored
      Tests have been added for capabilities and the thread queue. They all
      appear to be working and testing important parts of the code. A few
      extra derives were added to make tests work.
      
      alloc_page no longer silently fails and returns a 0, it'll now actually
      cause the system to stop once it runs out of memory.
      612cd3f9
    • Waylon Cude's avatar
      Updated CI script · 4b31db0d
      Waylon Cude authored
      The run script was previously broken, it's hopefully fixed now
      4b31db0d
    • Waylon Cude's avatar
      Various fixes + cleanup · 759766c6
      Waylon Cude authored
      Cargo packages were updated to their latest versions. The integration
      test in .gitlab-ci.yml was rewritten to handle the latest iteration of
      the kernel, where it'll just loop forever if it's not killed.
      
      Comments were added everywhere. This should make the code a bit easier
      to read. Some old, commented-out code was removed as well. The use
      statements were cleaned up a little bit, I had to duplicate all uses of
      Vec and VecDeque to make both the kernel and tests happy but that has
      been cleaned up.
      
      Labels from seL4 were added. This means that our invocation labels will
      be compatible with seL4. Some of the error types were also grouped up
      into a unifying error type, now located in src/error.rs.
      
      The userspace program now prints a friendly message, created with
      figlet :)
      759766c6
  18. 28 Feb, 2019 1 commit
    • Waylon Cude's avatar
      Added capabilities and send syscall · a4c1e1de
      Waylon Cude authored
      You can now send to capabilities. There is only one useful capability,
      the IOPort capability, but this is useful enough to print out messages
      to the terminal. Capability addressing has been added, but is currently
      untested. Some tests should be added to this. Errors have been added but
      they're never returned, which needs to be fixed. Most of the syscalls
      still need to be implemented, but I can actually start work on
      implementing capabilities/kernel objects now.
      
      Hello World!
      a4c1e1de
  19. 25 Feb, 2019 1 commit
    • Waylon Cude's avatar
      Reworked some use statements for `make test` · a17f8ac6
      Waylon Cude authored
      I reworked a few more use statements to use std instead of alloc.
      Unfortunately I havn't found any better way to do this than by
      duplicating each line + putting each variant behind a conditional
      compilation.
      
      This fixes `make test` for me, this commit should stop CI from failing
      a17f8ac6
  20. 23 Feb, 2019 1 commit
    • Waylon Cude's avatar
      Reqrite of yield · f4f41997
      Waylon Cude authored
      I'm pretty sure the old code wouldn't work with yielding to userspace
      threads, so it has now been rewritten to work with both. The assembly
      has been cleaned up a bit as well, there's now lock and unlock macros so
      I don't have to do it manually every time
      f4f41997
  21. 22 Feb, 2019 1 commit
    • Waylon Cude's avatar
      Implemented yield + some cap stuff · 73b52f2e
      Waylon Cude authored
      Yield has been implemented and appears to be working. It should handle
      both switching to user and kernel threads, but via different mechanisms.
      Only the kernel switch mechanism has been tested.
      
      Some basic capability stuff has been implemented, but is nonworking as
      of right now. There is no addressing, which is essential for
      capabilities to work. There are some enum variants to represent the
      different types of capability I expect to use for basic functionality,
      but they haven't actually been implemented yet. A ton of work needs to
      be done on this front.
      73b52f2e
  22. 21 Feb, 2019 2 commits
    • Waylon Cude's avatar
      Added some more copyright headers + new Cargo.lock · 58f72e0c
      Waylon Cude authored
      I added some new source files in a previous commit but forgot the
      copyright header. This has now been added.
      
      Cargo.lock has been updated to use the latest version of heapless. This
      dependency might be removed in the near future, but it's 0 effort to
      update versions so I'm just including it for now.
      58f72e0c
    • Waylon Cude's avatar
      Readded important line · 22d69f86
      Waylon Cude authored
      I accidentally commented out the line that maps the kernel into the
      higher half of a new threads address space. This has now been
      uncommented.
      22d69f86
  23. 20 Feb, 2019 1 commit
    • Waylon Cude's avatar
      Cleanup · 711de15f
      Waylon Cude authored
      I cleaned up some of the warnings I was getting. This involved
      commenting out or removing some unused sections of code. I also changed
      how the segment switch logic works because I'm 90% sure it wasn't
      actually working before.
      711de15f