31 #ifndef CPU_X86_MM_STACKS_H_
32 #define CPU_X86_MM_STACKS_H_
34 #include "prot-domains.h"
36 #if X86_CONF_PROT_DOMAINS == X86_CONF_PROT_DOMAINS__NONE
37 #define STACKS_SIZE_INT 0
45 #define STACKS_SIZE_INT (14 * 4)
48 #if X86_CONF_PROT_DOMAINS == X86_CONF_PROT_DOMAINS__PAGING
60 #define STACKS_SIZE_EXC 512
62 #define STACKS_SIZE_EXC 256
64 #elif X86_CONF_PROT_DOMAINS == X86_CONF_PROT_DOMAINS__SWSEG
66 #define STACKS_SIZE_EXC 512
68 #define STACKS_SIZE_EXC 256
70 #elif X86_CONF_PROT_DOMAINS == X86_CONF_PROT_DOMAINS__TSS
80 #define STACKS_SIZE_EXC (STACKS_SIZE_INT + (6 * 4))
82 #define STACKS_SIZE_EXC STACKS_SIZE_INT
90 #define STACKS_SIZE_MAIN (8192 - (STACKS_SIZE_INT + STACKS_SIZE_EXC))
97 extern uint8_t stacks_exc[STACKS_SIZE_EXC];
99 extern uint8_t stacks_int[STACKS_SIZE_INT];
101 extern uint8_t stacks_main[STACKS_SIZE_MAIN];
103 #define STACKS_INIT_TOP \
104 ((uintptr_t)stacks_main + STACKS_SIZE_MAIN - \
105 (PROT_DOMAINS_INIT_RET_ADDR_CNT * sizeof(uintptr_t)))