aboutsummaryrefslogtreecommitdiff
path: root/sim/d10v/interp.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2000-04-18 07:55:35 +0000
committerAndrew Cagney <cagney@redhat.com>2000-04-18 07:55:35 +0000
commit27842f65f27045c0f1d7885d4f34ac37625e645c (patch)
treeca3d983925949aadbbb5eece5ab9f9327fc3666b /sim/d10v/interp.c
parent5ba474214c1c89d7d3efe4b6d8bc465b9c8c5042 (diff)
downloadgdb-27842f65f27045c0f1d7885d4f34ac37625e645c.zip
gdb-27842f65f27045c0f1d7885d4f34ac37625e645c.tar.gz
gdb-27842f65f27045c0f1d7885d4f34ac37625e645c.tar.bz2
Add support for SIGILL (reserved-instruction-exception).
Diffstat (limited to 'sim/d10v/interp.c')
-rw-r--r--sim/d10v/interp.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sim/d10v/interp.c b/sim/d10v/interp.c
index 91ebee5..ce4b769 100644
--- a/sim/d10v/interp.c
+++ b/sim/d10v/interp.c
@@ -99,8 +99,6 @@ lookup_hash (ins, size)
{
if (h->next == NULL)
{
- (*d10v_callback->printf_filtered)
- (d10v_callback, "ERROR: Illegal instruction %x at PC %x\n", ins, PC);
State.exception = SIGILL;
State.pc_changed = 1; /* Don't increment the PC. */
return NULL;
@@ -979,6 +977,13 @@ sim_resume (sd, step, siggnal)
JMP (AE_VECTOR_START);
SLOT_FLUSH ();
break;
+ case SIGILL:
+ SET_BPC (PC);
+ SET_BPSW (PSW);
+ SET_HW_PSW ((PSW & (PSW_F0_BIT | PSW_F1_BIT | PSW_C_BIT)));
+ JMP (RIE_VECTOR_START);
+ SLOT_FLUSH ();
+ break;
default:
/* just ignore it */
break;