arch,cpu,sim: Route system calls through the workload.
authorGabe Black <gabeblack@google.com>
Sun, 23 Aug 2020 08:33:22 +0000 (01:33 -0700)
committerGabe Black <gabeblack@google.com>
Sun, 20 Sep 2020 07:26:42 +0000 (07:26 +0000)
commit0ad5d1edc5e16e6d47718c94d464bde8e6faaae9
tree49173e405cdd630dfccdfe7dc1c98b4358bf67af
parent3293926413f84c4db4747537bf05c42a4c523c55
arch,cpu,sim: Route system calls through the workload.

System calls should now be requested from the workload directly and not
routed through ExecContext or ThreadContext interfaces. That removes a
major special case for SE mode from those interfaces.

For now, when the SE workload gets a request for a system call, it
dispatches it to the appropriate Process object. In the future, the
ISA specific Workload subclasses will be responsible for handling system
calls and not the Process classes.

For simplicity, the Workload syscall() method is defined in the base
class but will panic everywhere except when SEWorkload overrides it. In
the future, this mechanism will turn into a way to request generic
services from the workload which are not necessarily system calls. For
instance, it could be a way to request handling of a page fault without
having to have another PseudoInst just for that purpose.

Change-Id: I18d36d64c54adf4f4f17a62e7e006ff2fc0b22f1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33282
Reviewed-by: Matthew Poremba <matthew.poremba@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
21 files changed:
src/arch/arm/faults.cc
src/arch/riscv/faults.cc
src/arch/sparc/linux/process.cc
src/cpu/checker/cpu.hh
src/cpu/checker/thread_context.hh
src/cpu/exec_context.hh
src/cpu/minor/exec_context.hh
src/cpu/o3/cpu.cc
src/cpu/o3/cpu.hh
src/cpu/o3/dyn_inst.hh
src/cpu/o3/dyn_inst_impl.hh
src/cpu/o3/thread_context.hh
src/cpu/o3/thread_state.hh
src/cpu/simple/exec_context.hh
src/cpu/simple_thread.hh
src/cpu/thread_context.hh
src/sim/faults.cc
src/sim/pseudo_inst.cc
src/sim/se_workload.cc
src/sim/se_workload.hh
src/sim/workload.hh