1
0
mirror of https://github.com/livingcomputermuseum/UniBone.git synced 2026-02-16 04:33:49 +00:00

Rewrote lower-level DMA and IRQ handling: DMA and IRQ requests are now queued and will run to completion on their own

without help from the device code (just call request_DMA and when it returns the DMA transfer is complete.)  Fixed
request_DMA to chunk DMA transfers larger than 1024 bytes to avoid overrunning the mailbox's shared memory.  Fixed
concurrency issues with DMA requests -- a race condition could cause DMA request data to get clobbered.

RT-11 now boots, MSCP behavior is now very reliable.
This commit is contained in:
Josh Dersch
2019-05-04 03:30:26 +02:00
parent e0aabf2197
commit 8eff2a4e10
10 changed files with 484 additions and 298 deletions

View File

@@ -135,7 +135,7 @@ void unibusdevice_c::reset_unibus_registers() {
// set an UNIBUS interrupt condition with intr_vector and intr_level
void unibusdevice_c::interrupt(void) {
// delegate to unibusadapter_c
unibusadapter->request_INTR(this, intr_level.value, intr_vector.value);
unibusadapter->request_INTR(intr_level.value, intr_vector.value);
// WARNING("unibusdevice_c::interrupt() TODO: generated interrupt!");
}