summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2014-11-06 18:16:16 -0800
committerAndrew Waterman <waterman@cs.berkeley.edu>2014-11-06 18:16:16 -0800
commitb81960a4094f30e0e4d9a90ad7c2699e7b63c80c (patch)
treec9a70462a343b22a8c88edb18f1e30e20058994e
parent94975f1bc2b06e931c200fd66eb0aaf95f9b0fe1 (diff)
downloadenv-b81960a4094f30e0e4d9a90ad7c2699e7b63c80c.zip
env-b81960a4094f30e0e4d9a90ad7c2699e7b63c80c.tar.gz
env-b81960a4094f30e0e4d9a90ad7c2699e7b63c80c.tar.bz2
Improve VM env debug messages
-rw-r--r--v/vm.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/v/vm.c b/v/vm.c
index d2f1fd2..deb46c2 100644
--- a/v/vm.c
+++ b/v/vm.c
@@ -172,13 +172,13 @@ void handle_trap(trapframe_t* tf)
{
assert(tf->epc % 4 == 0);
- int fssr;
- asm ("la %0, 1f; lw %0, 0(%0); b 2f; 1: fssr x0; 2:" : "=r"(fssr));
+ int* fssr;
+ asm ("jal %0, 1f; fssr x0; 1:" : "=r"(fssr));
- if (*(int*)tf->epc == fssr)
+ if (*(int*)tf->epc == *fssr)
terminate(1); // FP test on non-FP hardware. "succeed."
else
- assert(0);
+ assert(!"illegal instruction");
tf->epc += 4;
}
else if (tf->cause == CAUSE_FAULT_LOAD || tf->cause == CAUSE_FAULT_STORE)
@@ -193,10 +193,10 @@ void handle_trap(trapframe_t* tf)
handle_fault(badvaddr);
}
else
- assert(0);
+ assert(!"unexpected interrupt");
}
else
- assert(0);
+ assert(!"unexpected exception");
out:
if (!(tf->sr & SR_PS) && (tf->sr & SR_EA)) {