removed mmu.c

modified dma routines
This commit is contained in:
Markus Fröschle
2013-08-05 15:15:58 +00:00
parent e000afc5b5
commit 2086a9b686
4 changed files with 39 additions and 107 deletions

View File

@@ -10,7 +10,7 @@
#include <MCF5475.h>
extern int spidma_init(void);
extern int dma_init(void);
#endif /* _SPIDMA_H_ */

View File

@@ -153,6 +153,33 @@ void nvram_init(void)
xprintf("finished\r\n");
}
#define KBD_ACIA_CONTROL ((uint8_t *) 0xfffffc00)
#define MIDI_ACIA_CONTROL ((uint8_t *) 0xfffffc04)
#define MFP_INTR_IN_SERVICE_A ((uint8_t *) 0xfffffa0f)
#define MFP_INTR_IN_SERVICE_B ((uint8_t *) 0xfffffa11)
void acia_init()
{
xprintf("init ACIA: ");
/* init ACIA */
* KBD_ACIA_CONTROL = 3; /* master reset */
NOP();
* MIDI_ACIA_CONTROL = 3; /* master reset */
NOP();
* KBD_ACIA_CONTROL = 0x96; /* clock div = 64, 8N1, RTS low, TX int disable, RX int enable */
NOP();
* MFP_INTR_IN_SERVICE_A = -1;
NOP();
* MFP_INTR_IN_SERVICE_B = -1;
NOP();
xprintf("finished\r\n");
}
/* ACP interrupt controller */
#define FPGA_INTR_CONTRL (volatile uint32_t *) 0xf0010000
#define FPGA_INTR_ENABLE (volatile uint8_t *) 0xf0010004
@@ -266,7 +293,7 @@ void BaS(void)
/* set Falcon bus control register */
/* sets bit 3 and 6. Both are undefined on an original Falcon? */
* (volatile uint8_t *) 0xffff8007 = 0x48; /* FIXME: what's that ? */
* (volatile uint8_t *) 0xffff8007 = 0x48;
/* ST RAM */
@@ -281,24 +308,7 @@ void BaS(void)
* (uint32_t *) 0x5a4 = 0x1d000000;
* (uint32_t *) 0x5a8 = 0x1357bd13; /* ramvalid TOS system variable */
xprintf("init ACIA: ");
/* init ACIA */
* (uint8_t *) 0xfffffc00 = 3;
NOP();
* (uint8_t *) 0xfffffc04 = 3;
NOP();
* (uint8_t *) 0xfffffc00 = 0x96;
NOP();
* (uint8_t *) 0xfffffa0f = -1;
NOP();
* (uint8_t *) 0xfffffa11 = -1;
NOP();
xprintf("finished\r\n");
acia_init();
/* Test for pseudo-supervisor mode: DIP switch #6 down */
if (DIP_SWITCH & (1 << 7)) {
@@ -319,7 +329,7 @@ void BaS(void)
xprintf("Call OS. BaS initialization finished...\r\n");
enable_coldfire_interrupts();
spidma_init();
dma_init();
ROM_HEADER* os_header = (ROM_HEADER*)TOS;
os_header->initial_pc();

View File

@@ -16,6 +16,7 @@ extern char _SYS_SRAM[];
void *dma_memcpy(void *dst, void *src, size_t n)
{
int ret;
int speed;
int32_t start = MCF_SLT_SCNT(0);
int32_t end;
@@ -65,7 +66,9 @@ void *dma_memcpy(void *dst, void *src, size_t n)
end = MCF_SLT_SCNT(0);
xprintf("took %d ms (1 Mbyte)\r\n", (start - end) / 132 / 1000);
speed = n / (start - end) / 132 / 100;
xprintf("took %d ms (%d.%d Mbytes/second)\r\n",
(start - end) / 132 / 1000, speed / 10, speed % 10);
#ifdef _NOT_USED_
__asm__ __volatile__("move.w sr,d0\n\t"
"stop #0x270\n\t"
@@ -75,10 +78,11 @@ void *dma_memcpy(void *dst, void *src, size_t n)
return dst;
}
int spidma_init(void)
int dma_init(void)
{
int res;
xprintf("MCD DMA API initialization: ");
res = MCD_initDma((dmaRegs *) &MCF_DMA_TASKBAR, SYS_SRAM, MCD_RELOC_TASKS | MCD_COMM_PREFETCH_EN);
if (res != MCD_OK)
{
@@ -88,7 +92,8 @@ int spidma_init(void)
xprintf("DMA API initialized. Tasks are at %p\r\n", SYS_SRAM);
// test
dma_memcpy((void *) 0x1e000000, (void *) 0xe0700000, 0x100000);
dma_memcpy((void *) 0x1e000000, (void *) 0xe0700000, 0x100000); /* copy one megabyte of flash to RAM */
xprintf("DMA finished\r\n");
return 1;
}

View File

@@ -1,83 +0,0 @@
/*
* mmu.c
*
* Created on: 01.08.2013
* Author: froesm1
*/
#include <MCF5475.h>
#include "mmu.h"
void mmu_init(void)
{
uint32_t regval;
/*
* set ASID and shadow register
*/
__asm__ __volatile__("clr.l d0\n\t"
"movec d0,ASID\n\t"
"move.l d0,_rt_asid\n\t");
/*
* set ACR0 and shadow register
*/
__asm__ __volatile__("move.l #0xc03fc040,d0\n\t"
"movec d0,ACR0\n\t"
"move.l d0,_rt_acr0\n\t");
/*
* set ACR1 and shadow register
*/
__asm__ __volatile__("move.l #0x601fc000, d0\n\t"
"movec d0,ACR1\n\t"
"move.l d0,_rt_acr1\n\t");
/*
* set ACR2 and shadow register
*/
__asm__ __volatile__("move.l #0xe007c400,d0\n\t"
"movec d0,ACR2\n\t"
"move.l d0,_rt_acr2\n\t");
/*
* set ACR3 and shadow register (currently unused)
*/
__asm__ __volatile__("clr.l d0\n\t"
"movec d0,ACR3\n\t"
"move.l d0,_rt_acr3\n\t");
/*
* set MMUBAR
*/
__asm__ __volatile__("movel. #__MMUBAR+1,d0\n\t"
"movec d0,MMUBAR\n\t"
"move.l d0,_rt_mmubar\n\t"
"nop\n\t");
MCF_MMU_MMUOR = MCF_MMU_MMUOR; /* clear all entries */
/*
* 0x00000000 locked
*/
MCF_MMU_MMUTR = 0x0L | STD_MMUTR;
MCF_MMU_MMUDR = 0x0L | COPYBACK_MMUDR | MCF_MMU_MMUDR_LK;
MCF_MMU_MMUOR = MMUORD_D;
MCF_MMU_MMUOR = MMUORD_I;
/*
* 0x00d00000 locked ID=6
* video RAM: read write execute normal write true
*/
MCF_MMU_MMUTR = 0x00d00000 | MCF_MMU_MMUTR_ID(SCA_PAGE_ID) | STD_MMUTR;
MCF_MMU_MMUDR = 0x60d00000 | WRITETHROUGH_MMUDR | MCF_MMU_MMUDR_LK;
MCF_MMU_MMUOR = MMUORD_D;
MCF_MMU_MMUOR = 0x00d00000 | STD_MMUTR;
video_tlb = 0x2000;
video_sbt = 0;
}
__attribute__((interrupt)) void mmutr_miss(void)
{
}