From 022447b855880b3e618bdc6cf3030ec282d37fe2 Mon Sep 17 00:00:00 2001 From: Florian La Roche Date: Fri, 19 Apr 2024 01:56:06 +0200 Subject: [PATCH] Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC: optimize _sbrk() (#1211) Optimize _sbrk() from runtime to compiletime initialization. Fix compiler warnings by adjusting (void *) and (char *) types. Complete function declarations for uart_init() and _getpid(). Signed-off-by: Florian La Roche Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com> --- .../CORTEX_MPU_M3_MPS2_QEMU_GCC/init/startup.c | 2 +- .../Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/syscall.c | 17 +++++------------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/init/startup.c b/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/init/startup.c index 425bea09ed..400583c127 100644 --- a/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/init/startup.c +++ b/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/init/startup.c @@ -34,7 +34,7 @@ extern void vPortSVCHandler( void ); extern void xPortPendSVHandler( void ); extern void xPortSysTickHandler( void ); -extern void uart_init(); +extern void uart_init( void ); extern int main(); extern uint32_t _estack, _sidata, _sdata, _edata, _sbss, _ebss; diff --git a/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/syscall.c b/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/syscall.c index 03668fdde3..d12a7dec8d 100644 --- a/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/syscall.c +++ b/FreeRTOS/Demo/CORTEX_MPU_M3_MPS2_QEMU_GCC/syscall.c @@ -53,7 +53,7 @@ extern unsigned long g_ulBase; /** * @brief initializes the UART emulated hardware */ -void uart_init() +void uart_init(void) { UART0_ADDR->BAUDDIV = 16; UART0_ADDR->CTRL = UART_CTRL_TX_EN; @@ -85,7 +85,7 @@ FILE *const stdout = &__stdio; #else -static void * heap_end = 0; +static char * heap_end = ( char * ) &_heap_bottom; /** * @brief not used anywhere in the code @@ -139,16 +139,9 @@ int _write( __attribute__( ( unused ) ) int file, */ void * _sbrk( int incr ) { - char * prev_heap_end; + void * prev_heap_end = heap_end; - if( heap_end == 0 ) - { - heap_end = ( void * ) &_heap_bottom; - } - - prev_heap_end = heap_end; - - if( ( heap_end + incr ) > ( void * ) &_heap_top ) + if( ( heap_end + incr ) > ( char * ) &_heap_top ) { return ( void * ) -1; } @@ -202,7 +195,7 @@ void _kill( pid_t pid, ( void ) sig; } -int _getpid() +int _getpid( void ) { return 1; }