aboutsummaryrefslogtreecommitdiff
path: root/src/lib/mmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/mmu.c')
-rw-r--r--src/lib/mmu.c33
1 files changed, 0 insertions, 33 deletions
diff --git a/src/lib/mmu.c b/src/lib/mmu.c
deleted file mode 100644
index e9dda7a..0000000
--- a/src/lib/mmu.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <lib/mmu.h>
-
-#define CACHABLE 0x08
-#define BUFFERABLE 0x04
-#define NO_PERMISSIONS_REQUIRED 0b11 << 10
-#define MMU_TABLE_BASE 0x00004000
-
-void mmu_start(unsigned long base, unsigned long flags);
-
-void mmu_section(unsigned long virtual, unsigned long physical, unsigned long flags)
-{
- unsigned long offset = virtual >> 20;
- unsigned long* entry = (unsigned long*)(MMU_TABLE_BASE | (offset << 2));
- unsigned long physval = (physical & 0xFFF00000) | (flags & 0x7FFC) | 0x00C02;
- *entry = physval;
-}
-
-extern unsigned long __bss_end;
-void mmu_init(void)
-{
- for (unsigned long addr = 0x00000000;; addr += 0x00100000) {
- if (addr < (unsigned long)&__bss_end + 0x00100000) {
- mmu_section(addr, addr, CACHABLE | BUFFERABLE);
- } else {
- mmu_section(addr, addr, NO_PERMISSIONS_REQUIRED);
- }
- if (addr == 0x02000000)
- mmu_section(addr, addr, CACHABLE | BUFFERABLE | NO_PERMISSIONS_REQUIRED);
- if (addr == 0xFFF00000)
- break;
- }
- mmu_start(MMU_TABLE_BASE,0x00000001|0x1000|0x0004);
-}