diff options
author | Wojtek Kosior <kwojtus@protonmail.com> | 2019-12-31 18:54:28 +0100 |
---|---|---|
committer | Wojtek Kosior <kwojtus@protonmail.com> | 2019-12-31 18:54:28 +0100 |
commit | 0ec2016f80ffb5971362559b98b10744bb5bf893 (patch) | |
tree | 839991c83c04ef157cdc4b3d747a79ca5975445b /memory.h | |
parent | 97612feede34cdd0099d72d0e6fa125dd65b5e9a (diff) | |
download | rpi-MMU-example-0ec2016f80ffb5971362559b98b10744bb5bf893.tar.gz rpi-MMU-example-0ec2016f80ffb5971362559b98b10744bb5bf893.zip |
split stack into irq, fiq and supervisor stacks; add proper handling of those in interrupt handlers (asm code)
Diffstat (limited to 'memory.h')
-rw-r--r-- | memory.h | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -28,7 +28,13 @@ extern char _translation_table_end; extern char _sections_list_start; extern char _sections_list_end; extern char _stack_start; -extern char _stack_top; +extern char _fiq_stack_start; +extern char _fiq_stack_top; +extern char _irq_stack_start; +extern char _irq_stack_top; +extern char _supervisor_stack_start; +extern char _supervisor_stack_top; +extern char _stack_end; #define KERNEL_START ((size_t) &__start) // this is 0x0 #define KERNEL_END ((size_t) &__end) @@ -43,8 +49,14 @@ extern char _stack_top; // first section after the translation table is left unused; // the next section is used as the stack -#define STACK_START ((size_t) &_stack_start) -#define STACK_END ((size_t) &_stack_top) +#define STACK_START ((size_t) &_stack_start) +#define FIQ_STACK_START ((size_t) &_fiq_stack_start) +#define FIQ_STACK_END ((size_t) &_fiq_stack_top) +#define IRQ_STACK_START ((size_t) &_irq_stack_start) +#define IRQ_STACK_END ((size_t) &_irq_stack_top) +#define SUPERVISOR_STACK_START ((size_t) &_supervisor_stack_start) +#define SUPERVISOR_STACK_END ((size_t) &_supervisor_stack_top) +#define STACK_END ((size_t) &_stack_end) #define PRIVILEGED_MEMORY_END STACK_END |