aboutsummaryrefslogtreecommitdiff
path: root/memory.h
diff options
context:
space:
mode:
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
-
+