aboutsummaryrefslogtreecommitdiff
path: root/demo_functionality.c
diff options
context:
space:
mode:
authorWojtek Kosior <kwojtus@protonmail.com>2019-12-30 17:34:23 +0100
committerWojtek Kosior <kwojtus@protonmail.com>2019-12-30 17:34:23 +0100
commitc9e045dc2170a99c9f32386e3e53aee9e01a8e7c (patch)
treefaa57aef89cd1a03efc665c1e5809cf4f0304269 /demo_functionality.c
parenteae54c24e2e2b89f399bc2d3be195468c2e462a5 (diff)
downloadrpi-MMU-example-c9e045dc2170a99c9f32386e3e53aee9e01a8e7c.tar.gz
rpi-MMU-example-c9e045dc2170a99c9f32386e3e53aee9e01a8e7c.zip
io api rework
Diffstat (limited to 'demo_functionality.c')
-rw-r--r--demo_functionality.c52
1 files changed, 26 insertions, 26 deletions
diff --git a/demo_functionality.c b/demo_functionality.c
index d8fbdb5..2db40f8 100644
--- a/demo_functionality.c
+++ b/demo_functionality.c
@@ -1,4 +1,4 @@
-#include "uart.h"
+#include "io.h"
#include "psr.h"
#include "memory.h"
#include "translation_table_descriptors.h"
@@ -14,16 +14,16 @@ void demo_paging_support(void)
switch(ID_MMFR0 & 0xf) /* lowest 4 bits indicate VMSA support */
{
- case 0 : paging = "no paging\n\r"; break;
- case 1 : paging = "implementation defined paging\n\r"; break;
- case 2 : paging = "VMSAv6, with cache and TLB type registers\n\r"; break;
- case 3 : paging = "VMSAv7, with support for remapping and access flag\n\r"; break;
- case 4 : paging = "VMSAv7 with PXN bit supported\n\r"; break;
- case 5 : paging = "VMSAv7, PXN and long format descriptors. EPAE is supported.\n\r"; break;
- default : paging = "?_? unknown paging ?_?\n\r";
+ case 0 : paging = "no paging"; break;
+ case 1 : paging = "implementation defined paging"; break;
+ case 2 : paging = "VMSAv6, with cache and TLB type registers"; break;
+ case 3 : paging = "VMSAv7, with support for remapping and access flag"; break;
+ case 4 : paging = "VMSAv7 with PXN bit supported"; break;
+ case 5 : paging = "VMSAv7, PXN and long format descriptors. EPAE is supported."; break;
+ default : paging = "?_? unknown paging ?_?";
}
- uart_puts(paging);
+ puts(paging);
}
void demo_current_mode(void)
@@ -37,20 +37,20 @@ void demo_current_mode(void)
switch(CPSR.fields.PSR_MODE_4_0)
{
- case MODE_USER : mode_name = "User (PL0)\r\n"; break;
- case MODE_FIQ : mode_name = "FIQ (PL1)\r\n"; break;
- case MODE_IRQ : mode_name = "IRQ (PL1)\r\n"; break;
- case MODE_SUPERVISOR : mode_name = "Supervisor (PL1)\r\n"; break;
- case MODE_MONITOR : mode_name = "Monitor (PL1)\r\n"; break;
- case MODE_ABORT : mode_name = "Abort (PL1)\r\n"; break;
- case MODE_HYPERVISOR : mode_name = "Hyp (PL2)\r\n"; break;
- case MODE_UNDEFINED : mode_name = "Undefined (PL1)\r\n"; break;
- case MODE_SYSTEM : mode_name = "System (PL1)\r\n"; break;
- default : mode_name = "Unknown mode\r\n"; break;
+ case MODE_USER : mode_name = "User (PL0)"; break;
+ case MODE_FIQ : mode_name = "FIQ (PL1)"; break;
+ case MODE_IRQ : mode_name = "IRQ (PL1)"; break;
+ case MODE_SUPERVISOR : mode_name = "Supervisor (PL1)"; break;
+ case MODE_MONITOR : mode_name = "Monitor (PL1)"; break;
+ case MODE_ABORT : mode_name = "Abort (PL1)"; break;
+ case MODE_HYPERVISOR : mode_name = "Hyp (PL2)"; break;
+ case MODE_UNDEFINED : mode_name = "Undefined (PL1)"; break;
+ case MODE_SYSTEM : mode_name = "System (PL1)"; break;
+ default : mode_name = "Unknown mode"; break;
}
- uart_puts("current mode: ");
- uart_puts(mode_name);
+ prints("current mode: ");
+ puts(mode_name);
}
#define TRANSLATION_TABLE \
@@ -69,7 +69,7 @@ void demo_setup_PL0(void)
if (find_file(&_binary_ramfs_img_start, "PL_0_test.img",
&PL_0_test_img))
{
- uart_puts("PL_0_test.img not found :(\r\n");
+ puts("PL_0_test.img not found :(");
asm volatile ("wfi");
}
@@ -96,20 +96,20 @@ void demo_setup_PL0(void)
// check that translation works... by copying a string using one
// mapping and reading it using other :D
- char message[] = "mapped sections for PL0 code\n\r";
+ char message[] = "mapped sections for PL0 code";
unsigned int i;
for (i = 0; i < sizeof(message); i++)
((volatile char*) UNPRIVILEGED_MEMORY_START)[i] = message[i];
- uart_puts((char*) VIRTUAL_PL0_MEMORY_START);
+ puts((char*) VIRTUAL_PL0_MEMORY_START);
// now paste a userspace program to that section
for (uint32_t i = 0; i < PL_0_test_img.file_size; i++)
((volatile char*) VIRTUAL_PL0_MEMORY_START)[i] =
PL_0_test_img.file_contents[i];
- uart_puts("copied PL0 code to it's section\n\r");
+ puts("copied PL0 code to it's section");
}
// needed for array initialization in demo_go_unprivileged()
@@ -132,7 +132,7 @@ void demo_go_unprivileged(void)
new_SPSR.fields.PSR_MODE_4_0 = MODE_USER;
write_SPSR(new_SPSR);
- uart_puts("All ready, jumping to PL0 code\n\r");
+ puts("All ready, jumping to PL0 code");
asm volatile("cps %[sysmode]\n\r"
"mov sp, %[stackaddr]\n\r"