From f378ec7051a5bddf3687b50ce4fa4da826bf3ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Tue, 4 Feb 2014 20:06:29 +0000 Subject: [PATCH] translated copy loop to C --- BaS_gcc/sys/interrupts.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/BaS_gcc/sys/interrupts.c b/BaS_gcc/sys/interrupts.c index 97a8114..eb08184 100644 --- a/BaS_gcc/sys/interrupts.c +++ b/BaS_gcc/sys/interrupts.c @@ -243,6 +243,8 @@ extern int32_t video_tlb; void video_addr_timeout(void) { uint32_t addr = 0x0L; + uint32_t *src; + uint32_t *dst; uint32_t asid; dbg("%s:\r\n", __FUNCTION__); @@ -300,8 +302,27 @@ void video_addr_timeout(void) MCF_MMU_MMUTR_SG | MCF_MMU_MMUTR_V; } + + + MCF_MMU_MMUTR = addr; + MCF_MMU_MMUDR = page_attr; + MCF_MMU_MMUOR = + MCF_MMU_MMUOR_STLB | + MCF_MMU_MMUOR_ADR | + MCF_MMU_MMUOR_ACC | + MCF_MMU_MMUOR_UAA; + NOP(); + + dst = 0x60000000 + addr; + src = addr; + while (dst < 0x60000000 + addr + 0x10000) + { + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + } - /* TODO: update MMU */ addr += 0x100000;