OpenCores

The openrisc bugtracker has been moved to: bugzilla.opencores.org. This page is read-only

cannot handle interrupt expectedly from simulator library API

Back to bugtracker overview.

Information:
Type :: REQUEST
Status :: CLOSED
Assigned to :: Jeremy, Bennett

Description:
or1ksim_interrupt() only provides report_interrupt to PIC.
There was no method to call clear_interrupt of PIC.

In 0.3.0rc2,
pic/pic.c
if (cpu_state.pic_lines & lmask)
{
/* No edge occured, warn about performance penalty and exit */
fprintf (stderr, "Warning: Int line %d did not change state\n", line);
return;
}

or1ksim cannot generate external interrupt any more for above code without calling clear_interrupt(i) to PIC.

I think that two method should be added for simulator library.
for level sensitive : add or1ksim_clear_interrupt method
for edge sensitive : call clear_interrupt( i ) in or1ksim_run function after report_interrupt function of libtoplevel.c

Regards,
swaka

Comments:

Wakatsuki, Shinji Jan 15, 2009
I think current version also has a problem about edge triggered interrupt, addition to level triggered interrupt.

An edge triggered case did not call clear_interrupt.
So interrupt only calls once.

I hope both be fixed.
Bennett, Jeremy Jan 15, 2009
Marked as closed - will be tracked through the earlier bug report.
Bennett, Jeremy Jan 15, 2009
Hi Wakatsuki-san,

You are correct. This is the same issue reported in the bug "Or1ksim does not handle level triggered interrupts correctly" of 13 Nov 2008. There is some discussion of the issue in that report. New functions to separately raise and clear interrups will be added in the next release of Or1ksim.

Jeremy

Post a comment:
Login to post comments!

Back to bugtracker overview.

© copyright 1999-2012 OpenCores.org, equivalent to ORSoC AB, all rights reserved. OpenCores®, registered trademark.