added code to access MIDI and IKBD in mmu.c

This commit is contained in:
Markus Fröschle
2013-12-11 06:26:41 +00:00
parent d04fa65df6
commit 0c619c677b
2 changed files with 36 additions and 19 deletions

View File

@@ -4,9 +4,9 @@
/*
* ACIA registers
*/
#define keyctl volatile uint8_t *0xfffc00
#define keybd volatile uint8_t *0xfffc02
#define midictl volatile uint8_t *0xfffc04
#define midi volatile uint8_t *0xfffc06
#define keyctl 0xfffc00
#define keybd 0xfffc02
#define midictl 0xfffc04
#define midi 0xfffc06
#endif /* _ACIA_H_ */

View File

@@ -1,4 +1,5 @@
#include "mmu.h"
#include "acia.h"
/*
* mmu.c
@@ -365,6 +366,21 @@ void mmutr_miss(void)
debug_print("MMU TLB MISS at 0x%08x\r\n", address);
flush_and_invalidate_caches();
switch (address)
{
case keyctl:
case keybd:
/* do something to emulate the IKBD access */
debug_print("IKBD access\r\n");
break;
case midictl:
case midi:
/* do something to emulate MIDI access */
debug_print("MIDI ACIA access\r\n");
break;
default:
/* add missed page to TLB */
MCF_MMU_MMUTR = (address & 0xfff00000) | /* virtual aligned to 1M */
MCF_MMU_MMUTR_SG | /* shared global */
@@ -384,6 +400,7 @@ void mmutr_miss(void)
MCF_MMU_MMUOR_ACC | /* access TLB */
MCF_MMU_MMUOR_UAA; /* update allocation address field */
}
}