OpenCores
Issue List
cannot handle interrupt expectedly from simulator library API #38
Closed swaka opened this issue over 15 years ago
swaka commented over 15 years ago

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

jeremybennett commented over 15 years ago

Hi Wakatsuki-san,<br> <br> 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.<br> <br> Jeremy

jeremybennett closed this over 15 years ago
jeremybennett was assigned over 15 years ago
jeremybennett commented over 15 years ago

Marked as closed - will be tracked through the earlier bug report.

swaka commented over 15 years ago

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.


Assignee
jeremybennett
Labels
Request