Processes: Make getting and setting system call arguments part of a process object.
This commit is contained in:
@@ -1281,32 +1281,6 @@ InOrderCPU::syscall(int64_t callnum, int tid)
|
||||
nonSpecInstActive[tid] = false;
|
||||
}
|
||||
|
||||
IntReg
|
||||
InOrderCPU::getSyscallArg(int idx, int tid)
|
||||
{
|
||||
return readIntReg(ArgumentReg0 + idx, tid);
|
||||
}
|
||||
|
||||
void
|
||||
InOrderCPU::setSyscallArg(int idx, IntReg val, int tid)
|
||||
{
|
||||
setIntReg(ArgumentReg0 + idx, val, tid);
|
||||
}
|
||||
|
||||
void
|
||||
InOrderCPU::setSyscallReturn(SyscallReturn return_value, int tid)
|
||||
{
|
||||
if (return_value.successful()) {
|
||||
// no error
|
||||
setIntReg(SyscallSuccessReg, 0, tid);
|
||||
setIntReg(ReturnValueReg, return_value.value(), tid);
|
||||
} else {
|
||||
// got an error, return details
|
||||
setIntReg(SyscallSuccessReg, (IntReg) -1, tid);
|
||||
setIntReg(ReturnValueReg, -return_value.value(), tid);
|
||||
}
|
||||
}
|
||||
|
||||
Fault
|
||||
InOrderCPU::read(DynInstPtr inst)
|
||||
{
|
||||
|
||||
@@ -511,15 +511,6 @@ class InOrderCPU : public BaseCPU
|
||||
/** Executes a syscall.*/
|
||||
void syscall(int64_t callnum, int tid);
|
||||
|
||||
/** Gets a syscall argument. */
|
||||
IntReg getSyscallArg(int i, int tid);
|
||||
|
||||
/** Used to shift args for indirect syscall. */
|
||||
void setSyscallArg(int i, IntReg val, int tid);
|
||||
|
||||
/** Sets the return value of a syscall. */
|
||||
void setSyscallReturn(SyscallReturn return_value, int tid);
|
||||
|
||||
public:
|
||||
/** Per-Thread List of all the instructions in flight. */
|
||||
std::list<DynInstPtr> instList[ThePipeline::MaxThreads];
|
||||
|
||||
@@ -262,21 +262,3 @@ InOrderThreadContext::setMiscReg(int misc_reg, const MiscReg &val)
|
||||
{
|
||||
cpu->setMiscReg(misc_reg, val, thread->readTid());
|
||||
}
|
||||
|
||||
TheISA::IntReg
|
||||
InOrderThreadContext::getSyscallArg(int i)
|
||||
{
|
||||
return cpu->getSyscallArg(i, thread->readTid());
|
||||
}
|
||||
|
||||
void
|
||||
InOrderThreadContext::setSyscallArg(int i, IntReg val)
|
||||
{
|
||||
cpu->setSyscallArg(i, val, thread->readTid());
|
||||
}
|
||||
|
||||
void
|
||||
InOrderThreadContext::setSyscallReturn(SyscallReturn return_value)
|
||||
{
|
||||
cpu->setSyscallReturn(return_value, thread->readTid());
|
||||
}
|
||||
|
||||
@@ -236,15 +236,6 @@ class InOrderThreadContext : public ThreadContext
|
||||
* misspeculating, this is set as false. */
|
||||
virtual bool misspeculating() { return false; }
|
||||
|
||||
/** Gets a syscall argument by index. */
|
||||
virtual IntReg getSyscallArg(int i);
|
||||
|
||||
/** Sets a syscall argument. */
|
||||
virtual void setSyscallArg(int i, IntReg val);
|
||||
|
||||
/** Sets the syscall return value. */
|
||||
virtual void setSyscallReturn(SyscallReturn return_value);
|
||||
|
||||
/** Executes a syscall in SE mode. */
|
||||
virtual void syscall(int64_t callnum)
|
||||
{ return cpu->syscall(callnum, thread->readTid()); }
|
||||
|
||||
Reference in New Issue
Block a user