diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2005-02-23 11:47:49 -0500 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2005-02-23 11:47:49 -0500 |
commit | 27a338fe2b822ad5536977fe1ef5f04e21e7231d (patch) | |
tree | f8d9146cba4d435a3759e2930f78c2d42b0de4a5 /sim | |
parent | af33e74638ea822fba0ddbc7fddbe7583c61d920 (diff) | |
parent | a84159174afbdf855e370674a4a85ff1ee042095 (diff) | |
download | gem5-27a338fe2b822ad5536977fe1ef5f04e21e7231d.tar.xz |
Merge zizzer:/bk/m5 into zeep.eecs.umich.edu:/z/saidi/work/m5
--HG--
extra : convert_revision : f149b8ea762d4a83ef76b3bb95f28e0709391ecf
Diffstat (limited to 'sim')
-rw-r--r-- | sim/process.cc | 2 | ||||
-rw-r--r-- | sim/process.hh | 6 | ||||
-rw-r--r-- | sim/syscall_emul.hh | 4 |
3 files changed, 7 insertions, 5 deletions
diff --git a/sim/process.cc b/sim/process.cc index 4d860c51d..acc6762f8 100644 --- a/sim/process.cc +++ b/sim/process.cc @@ -287,7 +287,7 @@ LiveProcess::LiveProcess(const string &name, ObjectFile *objFile, // Set up region for mmaps. Tru64 seems to start just above 0 and // grow up from there. - mmap_base = 0x10000; + mmap_start = 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/sim/process.hh b/sim/process.hh index 817ab656c..3bcc65da6 100644 --- a/sim/process.hh +++ b/sim/process.hh @@ -93,7 +93,8 @@ class Process : public SimObject Addr next_thread_stack_base; // Base of region for mmaps (when user doesn't specify an address). - Addr mmap_base; + Addr mmap_start; + Addr mmap_end; std::string prog_fname; // file name Addr prog_entry; // entry point (initial PC) @@ -158,7 +159,8 @@ class Process : public SimObject { return ((data_base <= addr && addr < brk_point) || ((stack_base - 16*1024*1024) <= addr && addr < stack_base) || - (text_base <= addr && addr < (text_base + text_size))); + (text_base <= addr && addr < (text_base + text_size)) || + (mmap_start <= addr && addr < mmap_end)); } virtual void syscall(ExecContext *xc) = 0; diff --git a/sim/syscall_emul.hh b/sim/syscall_emul.hh index 768bc3700..831708a21 100644 --- a/sim/syscall_emul.hh +++ b/sim/syscall_emul.hh @@ -410,8 +410,8 @@ mmapFunc(SyscallDesc *desc, int num, Process *p, ExecContext *xc) if (start == 0) { // user didn't give an address... pick one from our "mmap region" - start = p->mmap_base; - p->mmap_base += RoundUp<Addr>(length, VMPageSize); + start = p->mmap_end; + p->mmap_end += RoundUp<Addr>(length, VMPageSize); } if (!(flags & OS::TGT_MAP_ANONYMOUS)) { |