diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2016-03-17 10:29:32 -0700 |
---|---|---|
committer | Steve Reinhardt <steve.reinhardt@amd.com> | 2016-03-17 10:29:32 -0700 |
commit | f6cd7a4bb7ee66b58f88fbdc6bdc4faa6a559952 (patch) | |
tree | 7d579b1d984c0b3d7497780ff8ff1b96ab1f7aae /src/arch/alpha | |
parent | 7eaa5952f994c07a801fbef81f8097a5e9a5828f (diff) | |
download | gem5-f6cd7a4bb7ee66b58f88fbdc6bdc4faa6a559952.tar.xz |
syscall_emul: move mmapGrowsDown() to LiveProcess
The mmapGrowsDown() method was a static method on the OperatingSystem
class (and derived classes), which worked OK for the templated syscall
emulation methods, but made it hard to access elsewhere. This patch
moves the method to be a virtual function on the LiveProcess method,
where it can be overridden for specific platforms (for now, Alpha).
This patch also changes the value of mmapGrowsDown() from being false
by default and true only on X86Linux32 to being true by default and
false only on Alpha, which seems closer to reality (though in reality
most people use ASLR and this doesn't really matter anymore).
In the process, also got rid of the unused mmap_start field on
LiveProcess and OperatingSystem mmapGrowsUp variable.
Diffstat (limited to 'src/arch/alpha')
-rw-r--r-- | src/arch/alpha/process.cc | 2 | ||||
-rw-r--r-- | src/arch/alpha/process.hh | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/arch/alpha/process.cc b/src/arch/alpha/process.cc index eb1a2ee6d..54ef338f3 100644 --- a/src/arch/alpha/process.cc +++ b/src/arch/alpha/process.cc @@ -57,7 +57,7 @@ AlphaLiveProcess::AlphaLiveProcess(LiveProcessParams *params, // Set up region for mmaps. Tru64 seems to start just above 0 and // grow up from there. - mmap_start = mmap_end = 0x10000; + mmap_end = 0x10000; // Set pointer for next thread stack. Reserve 8M for main stack. next_thread_stack_base = stack_base - (8 * 1024 * 1024); diff --git a/src/arch/alpha/process.hh b/src/arch/alpha/process.hh index fcaa6539c..c41ece837 100644 --- a/src/arch/alpha/process.hh +++ b/src/arch/alpha/process.hh @@ -54,6 +54,10 @@ class AlphaLiveProcess : public LiveProcess void setSyscallArg(ThreadContext *tc, int i, AlphaISA::IntReg val) override; void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value) override; + + // override default implementation in LiveProcess as the mmap + // region for Alpha platforms grows upward + virtual bool mmapGrowsDown() const override { return false; } }; /* No architectural page table defined for this ISA */ |