aboutsummaryrefslogtreecommitdiff
path: root/sim/mips/interp.c
diff options
context:
space:
mode:
authorBen Elliston <bje@au.ibm.com>2001-02-19 21:57:03 +0000
committerBen Elliston <bje@au.ibm.com>2001-02-19 21:57:03 +0000
commit8030f85769ed93908f16696615ed22242f861eba (patch)
tree4aa4aa6509b8538874927a2f146d5b43fe91cf83 /sim/mips/interp.c
parent9b0c4aebb4416e91afb9ee6fc66d261a3f04a43c (diff)
downloadfsf-binutils-gdb-8030f85769ed93908f16696615ed22242f861eba.zip
fsf-binutils-gdb-8030f85769ed93908f16696615ed22242f861eba.tar.gz
fsf-binutils-gdb-8030f85769ed93908f16696615ed22242f861eba.tar.bz2
2001-02-19 Ben Elliston <bje@redhat.com>
* sim-main.h (sim_monitor): Return an int. * interp.c (sim_monitor): Add return values. (signal_exception): Handle error conditions from sim_monitor.
Diffstat (limited to 'sim/mips/interp.c')
-rw-r--r--sim/mips/interp.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sim/mips/interp.c b/sim/mips/interp.c
index 382ad7e..a032763 100644
--- a/sim/mips/interp.c
+++ b/sim/mips/interp.c
@@ -1128,7 +1128,7 @@ Recognized firmware names are: `idt', `pmon', `lsipmon', and `none'.\n",
/* Simple monitor interface (currently setup for the IDT and PMON monitors) */
-void
+int
sim_monitor (SIM_DESC sd,
sim_cpu *cpu,
address_word cia,
@@ -1358,11 +1358,10 @@ sim_monitor (SIM_DESC sd,
}
default:
- sim_io_error (sd, "TODO: sim_monitor(%d) : PC = 0x%s\n",
- reason, pr_addr(cia));
- break;
+ /* Unknown reason. */
+ return 0;
}
- return;
+ return 1;
}
/* Store a word into memory. */
@@ -1713,7 +1712,10 @@ signal_exception (SIM_DESC sd,
perform this magic. */
if ((instruction & RSVD_INSTRUCTION_MASK) == RSVD_INSTRUCTION)
{
- sim_monitor (SD, CPU, cia, ((instruction >> RSVD_INSTRUCTION_ARG_SHIFT) & RSVD_INSTRUCTION_ARG_MASK) );
+ int reason = (instruction >> RSVD_INSTRUCTION_ARG_SHIFT) & RSVD_INSTRUCTION_ARG_MASK;
+ if (!sim_monitor (SD, CPU, cia, reason))
+ sim_io_error (sd, "sim_monitor: unhandled reason = %d, pc = 0x%s\n", reason, pr_addr (cia));
+
/* NOTE: This assumes that a branch-and-link style
instruction was used to enter the vector (which is the
case with the current IDT monitor). */