diff options
-rw-r--r-- | kernel_stage2.ld | 9 | ||||
-rw-r--r-- | memory.h | 7 | ||||
-rw-r--r-- | setup.c | 3 |
3 files changed, 3 insertions, 16 deletions
diff --git a/kernel_stage2.ld b/kernel_stage2.ld index a30105e..a3df063 100644 --- a/kernel_stage2.ld +++ b/kernel_stage2.ld @@ -60,13 +60,4 @@ SECTIONS _stack_top = .; } - - .unprivileged_memory (NOLOAD) : - { - _unprivileged_memory_start = .; - - . = . + MMU_SECTION_SIZE; - - _unprivileged_memory_end = .; - } } @@ -29,8 +29,6 @@ extern char _sections_list_start; extern char _sections_list_end; extern char _stack_start; extern char _stack_top; -extern char _unprivileged_memory_start; -extern char _unprivileged_memory_end; #define KERNEL_START ((size_t) &__start) // this is 0x0 #define KERNEL_END ((size_t) &__end) @@ -50,11 +48,8 @@ extern char _unprivileged_memory_end; #define PRIVILEGED_MEMORY_END STACK_END -#define UNPRIVILEGED_MEMORY_START \ - ((size_t) &_unprivileged_memory_start) // equal to STACK_END -#define UNPRIVILEGED_MEMORY_END \ - ((size_t) &_unprivileged_memory_end) +// the following describes the virtual section for our PL0 programs #define PL0_SECTION_NUMBER ((size_t) 0xaaa) #define VIRTUAL_PL0_MEMORY_START (PL0_SECTION_NUMBER << 20) @@ -75,7 +75,8 @@ void setup(uint32_t r0, uint32_t machine_type, memory_size = 192 * POWER_OF_2(20); } - if (memory_size < UNPRIVILEGED_MEMORY_END) + // assume we need at least one section for PL0 + if (memory_size < PRIVILEGED_MEMORY_END + SECTION_SIZE) { puts("Not enough memory to continue"); while (1); |