diff options
author | vetch <vetch97@gmail.com> | 2019-12-10 15:32:22 +0100 |
---|---|---|
committer | vetch <vetch97@gmail.com> | 2019-12-10 15:32:22 +0100 |
commit | 5662aacc5688bba4873367ed9ab51fb83fbd1feb (patch) | |
tree | 429aae32ff3163bf8472fcb52f3ba444c14e374c /memory.h | |
parent | b0a6351d52af8bdf6fa9cca0d313df323249a520 (diff) | |
parent | c76b34db77f06450ba1c957e87a0b1df3c6c29b4 (diff) | |
download | rpi-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.h | 28 |
1 files changed, 21 insertions, 7 deletions
@@ -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 - + |