diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-03-02 17:49:12 -0500 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-03-02 17:49:12 -0500 |
commit | 0fed64a6a47a62a94a53c5f41ac89b34a2fd6786 (patch) | |
tree | 845d914e1d1dea03d588c4fbeaf6a0788f023e81 /cpu | |
parent | 1624d9e5458fbd02d2e21c6d88f78769680b78b0 (diff) | |
download | gem5-0fed64a6a47a62a94a53c5f41ac89b34a2fd6786.tar.xz |
Fix fault handling, dereferincing a null pointer is bad.
--HG--
extra : convert_revision : a4f658bfd39b7f1d219ad8929b8f45457f49299f
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/simple/cpu.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/cpu/simple/cpu.cc b/cpu/simple/cpu.cc index d826c589e..ca5d54694 100644 --- a/cpu/simple/cpu.cc +++ b/cpu/simple/cpu.cc @@ -347,12 +347,12 @@ SimpleCPU::copySrcTranslate(Addr src) // translate to physical address Fault fault = xc->translateDataReadReq(memReq); - assert(!fault->isAlignmentFault()); - if (fault == NoFault) { xc->copySrcAddr = src; xc->copySrcPhysAddr = memReq->paddr + offset; } else { + assert(!fault->isAlignmentFault()); + xc->copySrcAddr = 0; xc->copySrcPhysAddr = 0; } @@ -382,8 +382,6 @@ SimpleCPU::copy(Addr dest) // translate to physical address Fault fault = xc->translateDataWriteReq(memReq); - assert(!fault->isAlignmentFault()); - if (fault == NoFault) { Addr dest_addr = memReq->paddr + offset; // Need to read straight from memory since we have more than 8 bytes. @@ -402,6 +400,9 @@ SimpleCPU::copy(Addr dest) dcacheInterface->access(memReq); } } + else + assert(!fault->isAlignmentFault()); + return fault; } |