aboutsummaryrefslogtreecommitdiff
path: root/paging.c
diff options
context:
space:
mode:
Diffstat (limited to 'paging.c')
-rw-r--r--paging.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/paging.c b/paging.c
index 7c2a9de..2985e7e 100644
--- a/paging.c
+++ b/paging.c
@@ -1,24 +1,21 @@
#include "cp_regs.h"
-#include "uart.h"
#include "strings.h"
#include "memory.h"
#include "translation_table_descriptors.h"
+#include "io.h"
void setup_flat_map(void)
{
- char bits[33]; // for printing uint32_t bit values
-
// compute translation table base address
// translation table shall start at first 2^14-bytes aligned
// address after the kernel image
- uint32_to_bits(TRANSLATION_TABLE_BASE, bits);
- uart_puts("binary representation of chosen"
- " lvl1 translation table address: ");
- uart_puts(bits); uart_puts("\n\r");
+ prints("chosen lvl1 translation table address: 0x");
+ printhex(TRANSLATION_TABLE_BASE);
+ puts("");
// flat map all memory
- uart_puts("preparing translation table\n\r");
+ puts("preparing translation table");
short_descriptor_lvl1_t volatile *translation_table =
(short_descriptor_lvl1_t*) TRANSLATION_TABLE_BASE;
@@ -35,8 +32,7 @@ void setup_flat_map(void)
};
// meddle with domain settings
- uart_puts("setting domain0 to client access"
- " and blocking other domains\n\r");
+ puts("setting domain0 to client access and blocking other domains");
DACR_t DACR = 0;
DACR = set_domain_permissions(DACR, 0, DOMAIN_CLIENT_ACCESS);
@@ -55,7 +51,7 @@ void setup_flat_map(void)
// we also disable data and instruction caches and the MMU
// some of this is redundant (i.e. MMU should already be disabled)
- uart_puts("setting C, I, AFE and TRE to 0 in SCTLR\n\r");
+ puts("setting C, I, AFE and TRE to 0 in SCTLR");
SCTLR_t SCTLR;
asm("mrc p15, 0, %0, c1, c0, 0" : "=r" (SCTLR.raw));
@@ -70,8 +66,8 @@ void setup_flat_map(void)
// TODO: move invalidation instructions to some header as inlines
- uart_puts("invalidating instruction cache, branch prediction,"
- " and entire main TLB\n\r");
+ puts("invalidating instruction cache, branch prediction,"
+ " and entire main TLB");
// invalidate instruction cache
asm("mcr p15, 0, r0, c7, c5, 0\n\r" // r0 gets ignored
@@ -86,8 +82,7 @@ void setup_flat_map(void)
"isb" :: "r" (0) : "memory");
// now set TTBCR to use TTBR0 exclusively
- uart_puts("Setting TTBCR.N to 0, so that"
- " TTBR0 is used everywhere\n\r");
+ puts("Setting TTBCR.N to 0, so that TTBR0 is used everywhere");
uint32_t TTBCR = 0;
asm("mcr p15, 0, %0, c2, c0, 2" :: "r" (TTBCR));
@@ -102,7 +97,7 @@ void setup_flat_map(void)
asm("mcr p15, 0, %0, c2, c0, 0" :: "r" (TTBR0.raw));
// enable MMU
- uart_puts("enabling the MMU\n\r");
+ puts("enabling the MMU");
// redundant - we already have SCTLR contents in the variable
// asm("mrc p15, 0, %0, c1, c0, 0" : "=r" (SCTLR.raw));