From b8790963359795b90a2ba6262d6df8496070f151 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Wed, 10 Jun 1998 17:07:10 +0000 Subject: [PATCH] * Support for sky hardware interrupts. The sky-dma cannot trigger interrupts properly yet (jlemke TODO). Wed Jun 10 13:22:32 1998 Frank Ch. Eigler * interp.c (decode_coproc): For TX39, add stub COP0 register #7, to allay warnings. (interrupt_event): Made non-static. start-sanitize-tx3904 * dv-tx3904tmr.c (deliver_tx3904tmr_tick): Correct accidental interchange of configuration values for external vs. internal clock dividers. end-sanitize-tx3904 start-sanitize-sky * sky-device.c (sky_signal_interrupt): New function to generate interrupt event. * sky-device.h: Declare it. * sky-dma.c (check_int1): Call it. * sky-pke.c (pke_begin_interrupt_stall): Call it. end-sanitize-sky --- sim/mips/ChangeLog | 20 ++++++++++++++++++++ sim/mips/interp.c | 8 +++++++- sim/mips/sky-pke.c | 3 +-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog index 1be0821..9115a91 100644 --- a/sim/mips/ChangeLog +++ b/sim/mips/ChangeLog @@ -1,3 +1,23 @@ +Wed Jun 10 13:22:32 1998 Frank Ch. Eigler + + * interp.c (decode_coproc): For TX39, add stub COP0 register #7, + to allay warnings. + (interrupt_event): Made non-static. +start-sanitize-tx3904 + + * dv-tx3904tmr.c (deliver_tx3904tmr_tick): Correct accidental + interchange of configuration values for external vs. internal + clock dividers. +end-sanitize-tx3904 +start-sanitize-sky + + * sky-device.c (sky_signal_interrupt): New function to generate + interrupt event. + * sky-device.h: Declare it. + * sky-dma.c (check_int1): Call it. + * sky-pke.c (pke_begin_interrupt_stall): Call it. +end-sanitize-sky + Tue Jun 9 12:46:24 1998 Ian Carmichael * mips.igen (BREAK): Moved code to here for diff --git a/sim/mips/interp.c b/sim/mips/interp.c index 25a2ee2..bbaeedb 100644 --- a/sim/mips/interp.c +++ b/sim/mips/interp.c @@ -289,7 +289,7 @@ static const OPTION mips_options[] = int interrupt_pending; -static void +void interrupt_event (SIM_DESC sd, void *data) { sim_cpu *cpu = STATE_CPU (sd, 0); /* FIXME */ @@ -3233,6 +3233,12 @@ decode_coproc (SIM_DESC sd, /* ignore */ break; /* 3 = Config R3900 */ + + case 7: + /* ignore */ + break; + /* 3 = Cache R3900 */ + #endif /* SUBTARGET_R3900 */ case 12: if (code == 0x00) diff --git a/sim/mips/sky-pke.c b/sim/mips/sky-pke.c index 3e1815c..fc5beae 100644 --- a/sim/mips/sky-pke.c +++ b/sim/mips/sky-pke.c @@ -1157,8 +1157,7 @@ pke_begin_interrupt_stall(struct pke_device* me) { /* set PIS */ PKE_REG_MASK_SET(me, STAT, PIS, 1); - - /* XXX: send interrupt to 5900? */ + sky_signal_interrupt(); } -- 2.7.4