From ec93432a5974b8edd9391758490c492266bf29df Mon Sep 17 00:00:00 2001 From: Forty-Bot Date: Fri, 22 Dec 2023 16:09:55 -0500 Subject: [PATCH] Fix build with modern GCC (#933) * GCC: MSP430F449: Add missing attributes Apparently at some point in the past, GCC (or TI's GCC) used to define these attributes. Define them ourselves so that we can compile the demo application. * GCC: MSP430F449: Make interrupts return void If a return type of a function is not specified, it defaults to int. Set the return type of interrupts to void to avoid warnings. * GCC: MSP430F449: Define portPOINTER_SIZE_TYPE portPOINTER_SIZE_TYPE defaults to uint32_t if undefined. Define it to uint16_t, which is correct for this port. --- portable/GCC/MSP430F449/port.c | 8 ++++---- portable/GCC/MSP430F449/portmacro.h | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/portable/GCC/MSP430F449/port.c b/portable/GCC/MSP430F449/port.c index 0b41665ce..ca72b410b 100644 --- a/portable/GCC/MSP430F449/port.c +++ b/portable/GCC/MSP430F449/port.c @@ -296,8 +296,8 @@ static void prvSetupTimerInterrupt( void ) * the context is saved at the start of vPortYieldFromTick(). The tick * count is incremented after the context is saved. */ - interrupt( TIMERA0_VECTOR ) prvTickISR( void ) __attribute__( ( naked ) ); - interrupt( TIMERA0_VECTOR ) prvTickISR( void ) + interrupt( TIMERA0_VECTOR ) void prvTickISR( void ) __attribute__( ( naked ) ); + interrupt( TIMERA0_VECTOR ) void prvTickISR( void ) { /* Save the context of the interrupted task. */ portSAVE_CONTEXT(); @@ -320,8 +320,8 @@ static void prvSetupTimerInterrupt( void ) * tick count. We don't need to switch context, this can only be done by * manual calls to taskYIELD(); */ - interrupt( TIMERA0_VECTOR ) prvTickISR( void ); - interrupt( TIMERA0_VECTOR ) prvTickISR( void ) + interrupt( TIMERA0_VECTOR ) void prvTickISR( void ); + interrupt( TIMERA0_VECTOR ) void prvTickISR( void ) { xTaskIncrementTick(); } diff --git a/portable/GCC/MSP430F449/portmacro.h b/portable/GCC/MSP430F449/portmacro.h index 445279f5c..f9470f096 100644 --- a/portable/GCC/MSP430F449/portmacro.h +++ b/portable/GCC/MSP430F449/portmacro.h @@ -53,6 +53,7 @@ #define portSHORT int #define portSTACK_TYPE uint16_t #define portBASE_TYPE short +#define portPOINTER_SIZE_TYPE uint16_t typedef portSTACK_TYPE StackType_t; typedef short BaseType_t; @@ -118,6 +119,11 @@ extern void vPortYield( void ) __attribute__( ( naked ) ); #define portBYTE_ALIGNMENT 2 #define portSTACK_GROWTH ( -1 ) #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) + +/* GCC used to define these but doesn't any more */ +#define interrupt(vector) __attribute__((__interrupt__(vector))) +#define wakeup __attribute__((__wakeup__)) + /*-----------------------------------------------------------*/ /* Task function macros as described on the FreeRTOS.org WEB site. */