diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-06-26 16:49:05 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-06-26 16:49:05 -0400 |
commit | c4be6f1e64a7bdd0c5057e2ab3f6a117444bc8ea (patch) | |
tree | bda9a1246d36fed3c8c9f23bf7d9f70b0af01bbb /src/sim | |
parent | deaf940946a7381d6f77dd8732951ff5ba0d1e8c (diff) | |
download | gem5-c4be6f1e64a7bdd0c5057e2ab3f6a117444bc8ea.tar.xz |
add syscall emulation page table fault so we can allocate more stack pages
src/cpu/simple/base.cc:
add syscall emulation page table fault so we can allocate more stack pages
FaultBase::invoke will do this, we don't need to do it here
src/sim/faults.hh:
I have no idea why this #if was there... gone
src/sim/process.cc:
make stack_min actually be the current minimum
--HG--
extra : convert_revision : 9786b39f2747b94654a5d77c74243cd20503add4
Diffstat (limited to 'src/sim')
-rw-r--r-- | src/sim/faults.hh | 4 | ||||
-rw-r--r-- | src/sim/process.cc | 5 |
2 files changed, 2 insertions, 7 deletions
diff --git a/src/sim/faults.hh b/src/sim/faults.hh index 23385c649..00264d8fc 100644 --- a/src/sim/faults.hh +++ b/src/sim/faults.hh @@ -54,11 +54,7 @@ class FaultBase : public RefCounted { public: virtual FaultName name() = 0; -#if FULL_SYSTEM virtual void invoke(ThreadContext * tc); -#else - virtual void invoke(ThreadContext * tc); -#endif // template<typename T> // bool isA() {return dynamic_cast<T *>(this);} virtual bool isMachineCheckFault() {return false;} diff --git a/src/sim/process.cc b/src/sim/process.cc index 5080c3ac1..9cdc5b9f5 100644 --- a/src/sim/process.cc +++ b/src/sim/process.cc @@ -326,11 +326,10 @@ LiveProcess::argsInit(int intSize, int pageSize) // set bottom of stack stack_min = stack_base - space_needed; // align it - stack_min &= ~(intSize-1); + stack_min = roundDown(stack_min, pageSize); stack_size = stack_base - stack_min; // map memory - pTable->allocate(roundDown(stack_min, pageSize), - roundUp(stack_size, pageSize)); + pTable->allocate(stack_min, roundUp(stack_size, pageSize)); // map out initial stack contents Addr argv_array_base = stack_min + intSize; // room for argc |