Enlarge minimal stack size

pull/37/head
sunnycase 2019-01-25 14:03:17 +08:00
parent eeab052f71
commit 93c9da9eb4
9 changed files with 29 additions and 26 deletions

View File

@ -19,7 +19,6 @@ add_compile_flags(BOTH
-ffunction-sections
-fdata-sections
-fstrict-volatile-bitfields
-fno-zero-initialized-in-bss
-O2
-ggdb
)

View File

@ -53,12 +53,14 @@ SECTIONS
KEEP( *(.text.start) )
KEEP( *(.text.systick) )
} > ram : DATA
.init :
{
KEEP (*(SORT_NONE(.init)))
} > ram : DATA
. = ALIGN(8);
. = .;
.text :
{
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
@ -163,6 +165,7 @@ SECTIONS
} > ram : DATA
_edata = .; PROVIDE (edata = .);
. = ALIGN(8);
. = .;
__bss_start = .;
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } > ram : DYN_DATA

View File

@ -123,6 +123,15 @@ _start:
jr t1
2:
la sp, _idle_stack0_top
# clear the bss segment
la t0, __bss_start
la t1, __bss_end
1:
sd zero, 0(t0)
addi t0, t0, 8
bltu t0, t1, 1b
la t0, _init_bsp
jr t0

View File

@ -27,8 +27,6 @@
#define PLL1_OUTPUT_FREQ 160000000UL
#define PLL2_OUTPUT_FREQ 45158400UL
extern uint8_t __bss_start[];
extern uint8_t __bss_end[];
extern uint8_t _tls_data[];
extern int main(int argc, char *argv[]);
@ -40,15 +38,8 @@ static void setup_clocks()
sysctl_pll_set_freq(SYSCTL_PLL2, PLL2_OUTPUT_FREQ);
}
static void init_bss(void)
{
memset(__bss_start, 0, __bss_end - __bss_start);
}
void _init_bsp()
{
/* Initialize bss data to 0 */
init_bss();
/* Init FPIOA */
fpioa_init();
bsp_pin_setup();

View File

@ -20,49 +20,49 @@
void __attribute__((weak)) handle_misaligned_fetch(uintptr_t *regs, uintptr_t cause)
{
dump_core("misaligned fetch", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_fault_fetch(uintptr_t *regs, uintptr_t cause)
{
dump_core("fault fetch", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_illegal_instruction(uintptr_t *regs, uintptr_t cause)
{
dump_core("illegal instruction", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_breakpoint(uintptr_t *regs, uintptr_t cause)
{
dump_core("breakpoint", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_misaligned_load(uintptr_t *regs, uintptr_t cause)
{
dump_core("misaligned load", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_fault_load(uintptr_t *regs, uintptr_t cause)
{
dump_core("fault load", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_misaligned_store(uintptr_t *regs, uintptr_t cause)
{
dump_core("misaligned store", regs, cause);
exit(1337);
sys_exit(1337);
}
void __attribute__((weak)) handle_fault_store(uintptr_t *regs, uintptr_t cause)
{
dump_core("fault store", regs, cause);
exit(1337);
sys_exit(1337);
}
void handle_except(uintptr_t *regs, uintptr_t cause)

View File

@ -46,6 +46,7 @@ void handle_irq_m_soft(uintptr_t *regs, uintptr_t cause);
void handle_irq_m_timer(uintptr_t *regs, uintptr_t cause);
void handle_irq_m_ext(uintptr_t *regs, uintptr_t cause);
void handle_syscall(uintptr_t *regs, uintptr_t cause);
void __attribute__((noreturn)) sys_exit(int code);
#ifdef __cplusplus
}
#endif

View File

@ -92,7 +92,7 @@ enum
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0
/* memory */
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 1024 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 20480 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 1024 * 1024 ) )
#define configSUPPORT_STATIC_ALLOCATION 1
#define configSUPPORT_DYNAMIC_ALLOCATION 1

View File

@ -48,10 +48,6 @@ static void main_thunk(void *p)
/* Init libc array for C++ */
__libc_init_array();
clear_csr(mie, MIP_MTIP);
clint_ipi_enable();
set_csr(mstatus, MSTATUS_MIE);
install_hal();
install_drivers();
configure_fpioa();
@ -71,6 +67,10 @@ static void os_entry_core1()
int os_entry(int (*user_main)(int, char **))
{
clear_csr(mie, MIP_MTIP);
clint_ipi_enable();
set_csr(mstatus, MSTATUS_MIE);
TaskHandle_t mainTask;
main_thunk_param_t param = {};
param.user_main = user_main;

View File

@ -160,7 +160,7 @@ int vPortSetInterruptMask(void)
int ret;
__asm volatile("csrr %0,mie"
: "=r"(ret));
__asm volatile("csrc mie,%0" ::"i"(7));
__asm volatile("csrc mie,%0" ::"r"(0x888));
return ret;
}
/*-----------------------------------------------------------*/