Skip to content
Snippets Groups Projects
  1. Dec 04, 2018
  2. Nov 20, 2018
  3. Nov 15, 2018
  4. Nov 13, 2018
  5. Oct 26, 2018
    • Lioncash's avatar
      svc: Implement svcGetInfo command 0xF0000002 · 6594853e
      Lioncash authored
      This retrieves:
      
      if (curr_thread == handle_thread) {
         result = total_thread_ticks + (hardware_tick_count - last_context_switch_ticks);
      } else if (curr_thread == handle_thread && sub_id == current_core_index) {
         result = hardware_tick_count - last_context_switch_ticks;
      }
      6594853e
  6. Oct 20, 2018
    • Lioncash's avatar
      kernel/process: Make the handle table per-process · 90a981a0
      Lioncash authored
      In the kernel, there isn't a singular handle table that everything gets
      tossed into or used, rather, each process gets its own handle table that
      it uses. This currently isn't an issue for us, since we only execute one
      process at the moment, but we may as well get this out of the way so
      it's not a headache later on.
      90a981a0
  7. Oct 13, 2018
    • Lioncash's avatar
      svc: Implement svcGetProcessInfo · 1c7a7ed7
      Lioncash authored
      A fairly basic service function, which only appears to currently support
      retrieving the process state. This also alters the ProcessStatus enum to
      contain all of the values that a kernel process seems to be able of
      reporting with regards to state.
      1c7a7ed7
  8. Oct 12, 2018
    • Lioncash's avatar
      kernel/process: Make CodeSet a regular non-inherited object · 1abed2f4
      Lioncash authored
      These only exist to ferry data into a Process instance and end up going
      out of scope quite early. Because of this, we can just make it a plain
      struct for holding things and just std::move it into the relevant
      function. There's no need to make this inherit from the kernel's Object
      type.
      1abed2f4
  9. Sep 30, 2018
    • Lioncash's avatar
      kernel/process: Add a data member to determine if a process is 64-bit or not. · dccfe193
      Lioncash authored
      This will be necessary for the implementation of svcGetThreadContext(),
      as the kernel checks whether or not the process that owns the thread
      that has it context being retrieved is a 64-bit or 32-bit process.
      
      If the process is 32-bit, then the upper 15 general-purpose registers
      and upper 16 vector registers are cleared to zero (as AArch32 only has
      15 GPRs and 16 128-bit vector registers. not 31 general-purpose
      registers and 32 128-bit vector registers like AArch64).
      dccfe193
    • Lioncash's avatar
      kernel/process: Make data member variables private · cf9d6c6f
      Lioncash authored
      Makes the public interface consistent in terms of how accesses are done
      on a process object. It also makes it slightly nicer to reason about the
      logic of the process class, as we don't want to expose everything to
      external code.
      cf9d6c6f
  10. Sep 24, 2018
  11. Sep 21, 2018
  12. Sep 15, 2018
  13. Aug 29, 2018
    • Lioncash's avatar
      kernel: Eliminate kernel global state · 0cbcd6ec
      Lioncash authored
      As means to pave the way for getting rid of global state within core,
      This eliminates kernel global state by removing all globals. Instead
      this introduces a KernelCore class which acts as a kernel instance. This
      instance lives in the System class, which keeps its lifetime contained
      to the lifetime of the System class.
      
      This also forces the kernel types to actually interact with the main
      kernel instance itself instead of having transient kernel state placed
      all over several translation units, keeping everything together. It also
      has a nice consequence of making dependencies much more explicit.
      
      This also makes our initialization a tad bit more correct. Previously we
      were creating a kernel process before the actual kernel was initialized,
      which doesn't really make much sense.
      
      The KernelCore class itself follows the PImpl idiom, which allows
      keeping all the implementation details sealed away from everything else,
      which forces the use of the exposed API and allows us to avoid any
      unnecessary inclusions within the main kernel header.
      0cbcd6ec
  14. Aug 03, 2018
  15. Aug 02, 2018
  16. Mar 14, 2018
  17. Mar 02, 2018
  18. Jan 16, 2018
  19. Jan 10, 2018
  20. Jan 01, 2018
  21. Dec 31, 2017
  22. Dec 29, 2017
  23. Sep 30, 2017
  24. May 10, 2017
    • Yuri Kunde Schlesner's avatar
      Kernel: Map special regions according to ExHeader · f18d454e
      Yuri Kunde Schlesner authored
      This replaces the hardcoded VRAM/DSP mappings with ones made based on
      the ExHeader ARM11 Kernel caps list. While this has no visible effect
      for most applications (since they use a standard set of mappings) it
      does improve support for system modules and n3DS exclusives.
      f18d454e
  25. Sep 21, 2016
  26. Sep 18, 2016
  27. May 07, 2016
  28. Mar 06, 2016
  29. Aug 16, 2015
Loading