bsp/i386: Use interrupt stack for init stack

Update #3459.
This commit is contained in:
Sebastian Huber
2018-11-14 08:42:22 +01:00
parent 5f32da0b69
commit a13b89bb17
2 changed files with 4 additions and 13 deletions

View File

@@ -49,15 +49,12 @@ static uintptr_t rtemsWorkAreaStart;
*/ */
uint32_t bsp_mem_size = 0; uint32_t bsp_mem_size = 0;
/* Size of stack used during initialization. Defined in 'start.s'. */
extern uint32_t _stack_size;
static void bsp_size_memory(void) static void bsp_size_memory(void)
{ {
uintptr_t topAddr; uintptr_t topAddr;
/* Set the value of start of free memory. */ /* Set the value of start of free memory. */
rtemsWorkAreaStart = (uint32_t)WorkAreaBase + _stack_size; rtemsWorkAreaStart = (uint32_t)WorkAreaBase;
/* Align the RTEMS Work Area at beginning of free memory. */ /* Align the RTEMS Work Area at beginning of free memory. */
if (rtemsWorkAreaStart & (CPU_ALIGNMENT - 1)) /* not aligned => align it */ if (rtemsWorkAreaStart & (CPU_ALIGNMENT - 1)) /* not aligned => align it */

View File

@@ -51,8 +51,6 @@
#error "Missing header ? CPU_STACK_ALIGNMENT NOT DEFINED" #error "Missing header ? CPU_STACK_ALIGNMENT NOT DEFINED"
#endif #endif
.set STACK_SIZE, 0x1000
/*----------------------------------------------------------------------------+ /*----------------------------------------------------------------------------+
| CODE section | CODE section
+----------------------------------------------------------------------------*/ +----------------------------------------------------------------------------*/
@@ -176,9 +174,9 @@ speakl: jmp speakl # and SPIN!!!
PUBLIC (_establish_stack) PUBLIC (_establish_stack)
SYM (_establish_stack): SYM (_establish_stack):
movl $_end, eax # eax = end of bss/start of heap movl $_ISR_Stack_area_begin, eax # eax = end of bss/start of heap
addl $STACK_SIZE, eax # make room for stack addl $_ISR_Stack_size, eax # make room for stack
subl $4, eax # reserve room for arg to 'boot_card' subl $4, eax # reserve room for arg to 'boot_card'
andl $ - CPU_STACK_ALIGNMENT, eax # align SP on CPU_STACK_ALIGNMENT boundary andl $ - CPU_STACK_ALIGNMENT, eax # align SP on CPU_STACK_ALIGNMENT boundary
movl eax, esp # set stack pointer movl eax, esp # set stack pointer
movl eax, ebp # set base pointer movl eax, ebp # set base pointer
@@ -305,10 +303,6 @@ SYM(_boot_multiboot_cmdline):
.byte 0 .byte 0
.endr .endr
PUBLIC(_stack_size)
SYM(_stack_size):
.long STACK_SIZE
#ifdef DEBUG_EARLY_START #ifdef DEBUG_EARLY_START
PUBLIC (welcome_msg) PUBLIC (welcome_msg)