diff options
Diffstat (limited to 'src/arch/riscv/linux')
-rw-r--r-- | src/arch/riscv/linux/process.cc | 12 | ||||
-rw-r--r-- | src/arch/riscv/linux/process.hh | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/arch/riscv/linux/process.cc b/src/arch/riscv/linux/process.cc index d6a41e240..49e32de92 100644 --- a/src/arch/riscv/linux/process.cc +++ b/src/arch/riscv/linux/process.cc @@ -795,6 +795,12 @@ RiscvLinuxProcess64::getDesc(int callnum) &syscallDescs.at(callnum) : nullptr; } +void +RiscvLinuxProcess64::syscall(ThreadContext *tc, Fault *fault) +{ + doSyscall(tc->readIntReg(SyscallNumReg), tc, fault); +} + RiscvLinuxProcess32::RiscvLinuxProcess32(ProcessParams * params, ObjectFile *objFile) : RiscvProcess32(params, objFile) {} @@ -805,3 +811,9 @@ RiscvLinuxProcess32::getDesc(int callnum) return syscallDescs.find(callnum) != syscallDescs.end() ? &syscallDescs.at(callnum) : nullptr; } + +void +RiscvLinuxProcess32::syscall(ThreadContext *tc, Fault *fault) +{ + doSyscall(tc->readIntReg(SyscallNumReg), tc, fault); +} diff --git a/src/arch/riscv/linux/process.hh b/src/arch/riscv/linux/process.hh index 1256ac667..65daca35e 100644 --- a/src/arch/riscv/linux/process.hh +++ b/src/arch/riscv/linux/process.hh @@ -55,6 +55,8 @@ class RiscvLinuxProcess64 : public RiscvProcess64 /// ID of the thread group leader for the process uint64_t __tgid; + void syscall(ThreadContext *tc, Fault *fault) override; + /// Array of syscall descriptors, indexed by call number. static std::map<int, SyscallDesc> syscallDescs; }; @@ -73,6 +75,8 @@ class RiscvLinuxProcess32 : public RiscvProcess32 /// ID of the thread group leader for the process uint64_t __tgid; + void syscall(ThreadContext *tc, Fault *fault) override; + /// Array of syscall descriptors, indexed by call number. static std::map<int, SyscallDesc> syscallDescs; }; |