summaryrefslogtreecommitdiff
path: root/src/arch/riscv
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/riscv')
-rw-r--r--src/arch/riscv/faults.cc2
-rw-r--r--src/arch/riscv/linux/process.cc12
-rw-r--r--src/arch/riscv/linux/process.hh4
3 files changed, 17 insertions, 1 deletions
diff --git a/src/arch/riscv/faults.cc b/src/arch/riscv/faults.cc
index 6b79eb838..83adcba69 100644
--- a/src/arch/riscv/faults.cc
+++ b/src/arch/riscv/faults.cc
@@ -191,7 +191,7 @@ void
SyscallFault::invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
{
Fault *fault = NoFault;
- tc->syscall(tc->readIntReg(SyscallNumReg), fault);
+ tc->syscall(fault);
}
} // namespace RiscvISA
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;
};