diff options
Diffstat (limited to 'memory.h')
-rw-r--r-- | memory.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/memory.h b/memory.h new file mode 100644 index 0000000..2d0f6f4 --- /dev/null +++ b/memory.h @@ -0,0 +1,35 @@ +#ifndef MEMORY_H +#define MEMORY_H + +#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; + +#define KERNEL_START ((uint32_t) &__start) +#define KERNEL_END ((uint32_t) &__end) + +// first 2^14 aligned address after the kernel +#define TRANSLATION_TABLE_BASE \ + (((KERNEL_END - (uint32_t) 1) & ~((uint32_t) 0x3fff)) \ + + (uint32_t) 0x4000) + +#define TRANSLATION_TABLE_END \ + (TRANSLATION_TABLE_BASE + (uint32_t) (4096 * 4)) + +#define PRIVILEGED_MEMORY_END TRANSLATION_TABLE_END + +#define UNPRIVILEGED_MEMORY_START \ + (((PRIVILEGED_MEMORY_END - (uint32_t) 1) & ~((uint32_t) 0x3fff)) \ + + (uint32_t) 0x4000) + +#define PL0_SECTION_NUMBER ((uint32_t) 0b101010101010) +#define PL0_SECTION_NUMBER_STR "0b101010101010" + +#define VIRTUAL_PL0_MEMORY_START (PL0_SECTION_NUMBER << 20) + +#endif // MEMORY_H + |