summaryrefslogtreecommitdiff
path: root/sim/process.hh
diff options
context:
space:
mode:
authorRon Dreslinski <rdreslin@umich.edu>2005-03-16 10:30:33 -0500
committerRon Dreslinski <rdreslin@umich.edu>2005-03-16 10:30:33 -0500
commitdf012f26fa9797896e3f571c81d336bec0a97b98 (patch)
tree8fd88577c6c3542256f8d8ab4d28075892a6f594 /sim/process.hh
parentaa8c9db159422a313f6dfc9a76fd827515b32126 (diff)
downloadgem5-df012f26fa9797896e3f571c81d336bec0a97b98.tar.xz
Fix the bad addr check to check for allowable addresses in the nxm address space
arch/alpha/alpha_tru64_process.cc: sim/process.cc: sim/process.hh: Add an address range for the nxm sim/syscall_emul.hh: Check to make sure that if we have an nxm config space that the mmap hasn't grown into it --HG-- extra : convert_revision : e479e5240080ae488080d228bafea488835d6e77
Diffstat (limited to 'sim/process.hh')
-rw-r--r--sim/process.hh11
1 files changed, 10 insertions, 1 deletions
diff --git a/sim/process.hh b/sim/process.hh
index 1ab43cd62..1c6c6b3fb 100644
--- a/sim/process.hh
+++ b/sim/process.hh
@@ -97,6 +97,10 @@ class Process : public SimObject
Addr mmap_start;
Addr mmap_end;
+ // Base of region for nxm data
+ Addr nxm_start;
+ Addr nxm_end;
+
std::string prog_fname; // file name
Addr prog_entry; // entry point (initial PC)
@@ -159,9 +163,14 @@ class Process : public SimObject
bool validDataAddr(Addr addr)
{
return ((data_base <= addr && addr < brk_point) ||
+#ifdef FULLSYSTEM
((stack_base - 16*1024*1024) <= addr && addr < stack_base) ||
+#else
+ (next_thread_stack_base <= addr && addr < stack_base) ||
+#endif
(text_base <= addr && addr < (text_base + text_size)) ||
- (mmap_start <= addr && addr < mmap_end));
+ (mmap_start <= addr && addr < mmap_end) ||
+ (nxm_start <= addr && addr < nxm_end));
}
virtual void syscall(ExecContext *xc) = 0;