diff options
author | Ben Elliston <bje@au.ibm.com> | 2001-02-19 21:57:03 +0000 |
---|---|---|
committer | Ben Elliston <bje@au.ibm.com> | 2001-02-19 21:57:03 +0000 |
commit | 8030f85769ed93908f16696615ed22242f861eba (patch) | |
tree | 4aa4aa6509b8538874927a2f146d5b43fe91cf83 /sim/mips/interp.c | |
parent | 9b0c4aebb4416e91afb9ee6fc66d261a3f04a43c (diff) | |
download | gdb-8030f85769ed93908f16696615ed22242f861eba.zip gdb-8030f85769ed93908f16696615ed22242f861eba.tar.gz 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.c | 14 |
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). */ |