summaryrefslogtreecommitdiff
path: root/src/arch/mips/faults.cc
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2007-11-14 06:24:47 -0500
committerKorey Sewell <ksewell@umich.edu>2007-11-14 06:24:47 -0500
commit5f7879a9352985775abef9515e216591a2e3e39d (patch)
tree3aa829a03969e0694f914e7e28c597504956a59c /src/arch/mips/faults.cc
parentbfdd2f379b89654b15f8634d405666f623d336f2 (diff)
downloadgem5-5f7879a9352985775abef9515e216591a2e3e39d.tar.xz
Get MIPS_SE actually working again by actually by fixing TLB stuff and running hello world
--HG-- extra : convert_revision : 0944e7661934baddca1f1a895af0b75be2d96b10
Diffstat (limited to 'src/arch/mips/faults.cc')
-rw-r--r--src/arch/mips/faults.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/arch/mips/faults.cc b/src/arch/mips/faults.cc
index 8398ae405..3e1cb69c9 100644
--- a/src/arch/mips/faults.cc
+++ b/src/arch/mips/faults.cc
@@ -57,7 +57,7 @@ FaultName AlignmentFault::_name = "Alignment";
FaultVect AlignmentFault::_vect = 0x0301;
FaultStat AlignmentFault::_count;
-FaultName ResetFault::_name = "reset";
+FaultName ResetFault::_name = "Reset Fault";
#if FULL_SYSTEM
FaultVect ResetFault::_vect = 0xBFC00000;
#else
@@ -78,15 +78,15 @@ FaultName SystemCallFault::_name = "Syscall";
FaultVect SystemCallFault::_vect = 0x0180;
FaultStat SystemCallFault::_count;
-FaultName CoprocessorUnusableFault::_name = "Coprocessor Unusable";
+FaultName CoprocessorUnusableFault::_name = "Coprocessor Unusable Fault";
FaultVect CoprocessorUnusableFault::_vect = 0x180;
FaultStat CoprocessorUnusableFault::_count;
-FaultName ReservedInstructionFault::_name = "Reserved Instruction";
+FaultName ReservedInstructionFault::_name = "Reserved Instruction Fault";
FaultVect ReservedInstructionFault::_vect = 0x0180;
FaultStat ReservedInstructionFault::_count;
-FaultName ThreadFault::_name = "thread";
+FaultName ThreadFault::_name = "Thread Fault";
FaultVect ThreadFault::_vect = 0x00F1;
FaultStat ThreadFault::_count;
@@ -459,12 +459,17 @@ void InterruptFault::invoke(ThreadContext *tc)
void ResetFault::invoke(ThreadContext *tc)
{
+#if FULL_SYSTEM
DPRINTF(MipsPRA,"%s encountered.\n", name());
/* All reset activity must be invoked from here */
tc->setPC(vect());
tc->setNextPC(vect()+sizeof(MachInst));
tc->setNextNPC(vect()+sizeof(MachInst)+sizeof(MachInst));
DPRINTF(MipsPRA,"(%x) - ResetFault::invoke : PC set to %x",(unsigned)tc,(unsigned)tc->readPC());
+#endif
+
+ // Set Coprocessor 1 (Floating Point) To Usable
+ tc->setMiscReg(MipsISA::Status, MipsISA::Status | 0x20000000);
}
void ReservedInstructionFault::invoke(ThreadContext *tc)
@@ -509,7 +514,7 @@ void CoprocessorUnusableFault::invoke(ThreadContext *tc)
// warn("Status: %x, Cause: %x\n",tc->readMiscReg(MipsISA::Status),tc->readMiscReg(MipsISA::Cause));
#else
- panic("%s encountered.\n", name());
+ warn("%s (CP%d) encountered.\n", name(), coProcID);
#endif
}