1. May 19, 2021
  2. May 18, 2021
  3. May 08, 2021
    • Andrew Waterman's avatar
      pk: make breakpoints fatal · 4f1e3355
      Andrew Waterman authored
      Resolves #216
      4f1e3355
    • Saleem Abdulrasool's avatar
      machine: correct some additional cases of UB (#246) · e8d15a48
      Saleem Abdulrasool authored
      Use of asm aliased register variables in local scope can only be used
      for extended assembly parameters.  This changes the few instances of
      this in the floating point emulation to use the GNU extended assembly
      syntax to access the `tp` register.  This ensures that we do not rely on
      undefined behaviour.  This was uncovered when building the Proxy kernel
      with clang and LLVM.
      e8d15a48
    • Saleem Abdulrasool's avatar
      machine: fix a case of undefined behaviour with SP handling (#245) · 5450c2f7
      Saleem Abdulrasool authored
      The use of `asm` for register aliasing is supported in two different
      contexts:
      - local variables (including GNU expression statements) where it may
        only be used for specifying registers for input and output operands to
        extended `asm` syntax.
      
        c.f. https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html#Local-Register-Variables
      
      - global variables where it may be used to observe the contents of a
        register.
      
        c.f. https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html#Global-Register-Variables
      
      The two options here is to either to hoist the variable out into a
      global variable, but then it should not be in a header due to fears of
      ODR in case the optimizer does not inline it away, and thus becomes a
      bit more tricky.  The alternative that this change actually adopts is to
      explicitly use a move to copy the value out via the GNU extended
      assembly syntax.
      
      With this change, it is now possible to build the Proxy Kernel
      completely with clang/LLVM and link with LLD.  The generated kernel also
      runs under SPIKE and behaves as expected in a simple smoke test (without
      any executable prints the expected message, and runs a trivial RVV
      example).
      5450c2f7
  4. May 07, 2021
    • Saleem Abdulrasool's avatar
      machine: manually perform assembler relaxation (#244) · 23f1834f
      Saleem Abdulrasool authored
      This is an equivalent rewrite of the existing code.  When building with
      gas, the `bltu` would implicitly get relaxed to the `bgeu` + `j`.  This
      relaxation is required as the `init_other_hart` is not guaranteed to be
      addressable in 12-bits.  When building with the LLVM IAS instead of gas
      we fail to link as the branch is not relaxed.  This change enables LLVM
      to build and link this code with the LLVM IAS and lld.
      23f1834f
  5. May 06, 2021
  6. Apr 28, 2021
  7. Apr 06, 2021
  8. Mar 30, 2021
  9. Mar 27, 2021
  10. Mar 26, 2021
  11. Dec 16, 2020
  12. Nov 30, 2020
  13. Nov 24, 2020
  14. Nov 17, 2020
  15. Nov 13, 2020
  16. Nov 12, 2020
  17. Nov 01, 2020
  18. Oct 31, 2020
  19. Oct 30, 2020