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.
This commit is contained in:
Ben Elliston 2001-02-19 21:57:03 +00:00
parent 9b0c4aebb4
commit 8030f85769
3 changed files with 15 additions and 7 deletions

View File

@ -1,3 +1,9 @@
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.
2001-02-08 Ben Elliston <bje@redhat.com>
* sim-main.c (load_memory): Pass cia to sim_core_read* functions.

View File

@ -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). */

View File

@ -690,7 +690,7 @@ void decode_coproc PARAMS ((SIM_DESC sd, sim_cpu *cpu, address_word cia, unsigne
#define DecodeCoproc(instruction) \
decode_coproc (SD, CPU, cia, (instruction))
void sim_monitor (SIM_DESC sd, sim_cpu *cpu, address_word cia, unsigned int arg);
int sim_monitor (SIM_DESC sd, sim_cpu *cpu, address_word cia, unsigned int arg);