From b092ec2850e79687510f87705031ccb1defd258f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 17 Jul 2008 00:03:38 +0000 Subject: [PATCH] 030 version of transparent translation init. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26459 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../boot/platform/atari_m68k/mmu_030.cpp | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/system/boot/platform/atari_m68k/mmu_030.cpp b/src/system/boot/platform/atari_m68k/mmu_030.cpp index 6daeb4982c..467992f76a 100644 --- a/src/system/boot/platform/atari_m68k/mmu_030.cpp +++ b/src/system/boot/platform/atari_m68k/mmu_030.cpp @@ -46,8 +46,38 @@ static status_t set_tt(int which, addr_t pa, size_t len, uint32 perms) { TRACE(("mmu_030:set_tt(%d, 0x%lx, %ld, 0x%08lx)\n", which, pa, len, perms)); + uint32 mask; + uint32 ttr = 0; + mask = 1; + if (len) { + while (len >>= 1) + mask <<= 1; + mask = (mask - 1); + // enable, cachable(?), r/w + // super only + // mc68030 user's manual, page 9-57 + ttr = 0x08043; + ttr |= (pa & 0xff000000); + ttr |= ((mask & 0xff000000) >> 8); + } + TRACE(("mmu_030:set_tt: 0x%08lx\n", ttr)); - return B_ERROR; + + switch (which) { + case 0: + asm volatile( \ + "pmove %0,%%tt0\n" \ + : : "d"(ttr)); + break; + case 1: + asm volatile( \ + "pmove %0,%%tt1\n" \ + : : "d"(ttr)); + break; + default: + return EINVAL; + } + return B_OK; }