aboutsummaryrefslogtreecommitdiff
path: root/memory.h
diff options
context:
space:
mode:
authorvetch <vetch97@gmail.com>2019-12-10 15:32:22 +0100
committervetch <vetch97@gmail.com>2019-12-10 15:32:22 +0100
commit5662aacc5688bba4873367ed9ab51fb83fbd1feb (patch)
tree429aae32ff3163bf8472fcb52f3ba444c14e374c /memory.h
parentb0a6351d52af8bdf6fa9cca0d313df323249a520 (diff)
parentc76b34db77f06450ba1c957e87a0b1df3c6c29b4 (diff)
downloadrpi-MMU-example-5662aacc5688bba4873367ed9ab51fb83fbd1feb.tar.gz
rpi-MMU-example-5662aacc5688bba4873367ed9ab51fb83fbd1feb.zip
Merge branch 'bob' of https://repo.or.cz/RPi-MMU-example into alice
Diffstat (limited to 'memory.h')
-rw-r--r--memory.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/memory.h b/memory.h
index 1472a8b..1c9ae35 100644
--- a/memory.h
+++ b/memory.h
@@ -1,13 +1,17 @@
#ifndef MEMORY_H
#define MEMORY_H
+#include "paging.h"
+
+#define SECTION_SIZE (((uint32_t) 1) << 20)
+
#define INTERRUPT_VECTOR_TABLE_START ((uint32_t) 0x0)
#define STACK_START ((uint32_t) 0x4000)
#define STACK_END ((uint32_t) 0x8000)
-extern char __end;
-extern char __start;
+extern const char __end;
+extern const char __start;
#define KERNEL_START ((uint32_t) &__start)
#define KERNEL_END ((uint32_t) &__end)
@@ -20,11 +24,21 @@ extern char __start;
#define TRANSLATION_TABLE_END \
(TRANSLATION_TABLE_BASE + (uint32_t) (4096 * 4))
-#define PRIVILEGED_MEMORY_END TRANSLATION_TABLE_END
+#define LIBKERNEL_SECTION_START \
+ (((TRANSLATION_TABLE_END - (uint32_t) 1) & ~((uint32_t) 0xfffff)) \
+ + SECTION_SIZE)
+
+#define LIBKERNEL_SECTION_END \
+ (LIBKERNEL_SECTION_START + SECTION_SIZE)
-#define UNPRIVILEGED_MEMORY_START \
- (((PRIVILEGED_MEMORY_END - (uint32_t) 1) & ~((uint32_t) 0xfffff)) \
- + (uint32_t) 0x100000)
+// section for libkernel is flat-mapped
+#define LIBKERNEL_SECTION_NUMBER (LIBKERNEL_SECTION_START >> 20)
+
+#define PRIVILEGED_MEMORY_END LIBKERNEL_SECTION_END
+
+#define UNPRIVILEGED_MEMORY_START PRIVILEGED_MEMORY_END
+#define UNPRIVILEGED_MEMORY_END \
+ (UNPRIVILEGED_MEMORY_START + SECTION_SIZE)
#define PL0_SECTION_NUMBER ((uint32_t) 0b101010101010)
#define PL0_SECTION_NUMBER_STR "0b101010101010"
@@ -32,4 +46,4 @@ extern char __start;
#define VIRTUAL_PL0_MEMORY_START (PL0_SECTION_NUMBER << 20)
#endif // MEMORY_H
-
+