diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/sparc/faults.cc | 2 | ||||
-rw-r--r-- | src/arch/sparc/isa/base.isa | 7 | ||||
-rw-r--r-- | src/arch/sparc/tlb.hh | 5 | ||||
-rw-r--r-- | src/arch/sparc/utility.hh | 1 |
4 files changed, 12 insertions, 3 deletions
diff --git a/src/arch/sparc/faults.cc b/src/arch/sparc/faults.cc index 2564bc6a9..4cf411d3b 100644 --- a/src/arch/sparc/faults.cc +++ b/src/arch/sparc/faults.cc @@ -494,7 +494,7 @@ void doNormalFault(ThreadContext *tc, TrapType tt, bool gotoHpriv) void getREDVector(MiscReg TT, Addr & PC, Addr & NPC) { //XXX The following constant might belong in a header file. - const Addr RSTVAddr = 0xFFFFFFFFF0000000ULL; + const Addr RSTVAddr = 0xFFF0000000ULL; PC = RSTVAddr | ((TT << 5) & 0xFF); NPC = PC + sizeof(MachInst); } diff --git a/src/arch/sparc/isa/base.isa b/src/arch/sparc/isa/base.isa index 122ad2b52..aa24c75be 100644 --- a/src/arch/sparc/isa/base.isa +++ b/src/arch/sparc/isa/base.isa @@ -244,7 +244,12 @@ output decoder {{ bool passesCondition(uint32_t codes, uint32_t condition) { CondCodes condCodes; - condCodes.bits = codes; + condCodes.bits = 0; + condCodes.c = codes & 0x1 ? 1 : 0; + condCodes.v = codes & 0x2 ? 1 : 0; + condCodes.z = codes & 0x4 ? 1 : 0; + condCodes.n = codes & 0x8 ? 1 : 0; + switch(condition) { case Always: diff --git a/src/arch/sparc/tlb.hh b/src/arch/sparc/tlb.hh index 7a9a6aea1..136103f44 100644 --- a/src/arch/sparc/tlb.hh +++ b/src/arch/sparc/tlb.hh @@ -40,6 +40,9 @@ class ThreadContext; namespace SparcISA { + const int PAddrImplBits = 40; + const Addr PAddrImplMask = (ULL(1) << PAddrImplBits) - 1; + class TLB : public SimObject { public: @@ -59,7 +62,7 @@ namespace SparcISA { //For now, always assume the address is already physical. //Also assume that there are 40 bits of physical address space. - req->setPaddr(req->getVaddr() & ((1ULL << 40) - 1)); + req->setPaddr(req->getVaddr() & PAddrImplMask); return NoFault; } }; diff --git a/src/arch/sparc/utility.hh b/src/arch/sparc/utility.hh index e51677cdf..5c7fe343d 100644 --- a/src/arch/sparc/utility.hh +++ b/src/arch/sparc/utility.hh @@ -33,6 +33,7 @@ #include "arch/sparc/faults.hh" #include "arch/sparc/isa_traits.hh" +#include "arch/sparc/tlb.hh" #include "base/misc.hh" #include "base/bitfield.hh" #include "cpu/thread_context.hh" |