class EmulatedDriver;
class ObjectFile;
-class PageTableBase;
+class EmulationPageTable;
class SyscallDesc;
class SyscallReturn;
class System;
class Process : public SimObject
{
public:
- Process(ProcessParams *params, ObjectFile *obj_file);
+ Process(ProcessParams *params, EmulationPageTable *pTable,
+ ObjectFile *obj_file);
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;
void initState() override;
DrainState drain() override;
- void syscall(int64_t callnum, ThreadContext *tc, Fault *fault);
+ virtual void syscall(int64_t callnum, ThreadContext *tc, Fault *fault);
virtual TheISA::IntReg getSyscallArg(ThreadContext *tc, int &i) = 0;
virtual TheISA::IntReg getSyscallArg(ThreadContext *tc, int &i, int width);
virtual void setSyscallArg(ThreadContext *tc, int i,
void replicatePage(Addr vaddr, Addr new_paddr, ThreadContext *old_tc,
ThreadContext *new_tc, bool alloc_page);
- void clone(ThreadContext *old_tc, ThreadContext *new_tc, Process *new_p,
- TheISA::IntReg flags);
+ virtual void clone(ThreadContext *old_tc, ThreadContext *new_tc,
+ Process *new_p, TheISA::IntReg flags);
// thread contexts associated with this process
std::vector<ContextID> contextIds;
bool useArchPT; // flag for using architecture specific page table
bool kvmInSE; // running KVM requires special initialization
- PageTableBase* pTable;
+ EmulationPageTable *pTable;
SETranslatingPortProxy initVirtMem; // memory proxy for initial image load