From 6a9f5a244a75ddec0017a7dda55f0f5323c67723 Mon Sep 17 00:00:00 2001 From: Soren Ptak Date: Wed, 29 Nov 2023 05:22:16 -0500 Subject: [PATCH] Add portMEMORY_BARRIER() to RX MCU ports (#864) * Add portMEMORY_BARRIER() to RX MCU ports * Remove the memory barrier from the SH2A_FPU portable directory --------- Co-authored-by: Rahul Kar <118818625+kar-rahul-aws@users.noreply.github.com> --- portable/GCC/RX100/portmacro.h | 2 ++ portable/GCC/RX200/portmacro.h | 2 ++ portable/GCC/RX600/portmacro.h | 2 ++ portable/GCC/RX600v2/portmacro.h | 2 ++ portable/GCC/RX700v3_DPFPU/portmacro.h | 2 ++ portable/Renesas/RX100/portmacro.h | 7 +++++++ portable/Renesas/RX200/portmacro.h | 6 ++++++ portable/Renesas/RX600/portmacro.h | 7 +++++++ portable/Renesas/RX600v2/portmacro.h | 7 +++++++ portable/Renesas/RX700v3_DPFPU/portmacro.h | 7 +++++++ 10 files changed, 44 insertions(+) diff --git a/portable/GCC/RX100/portmacro.h b/portable/GCC/RX100/portmacro.h index b32d2007b..01bc3621b 100644 --- a/portable/GCC/RX100/portmacro.h +++ b/portable/GCC/RX100/portmacro.h @@ -147,6 +147,8 @@ void vPortSetIPL( uint32_t ulNewIPL ) __attribute__( ( naked ) ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void * pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void * pvParameters ) +#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" ) + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/GCC/RX200/portmacro.h b/portable/GCC/RX200/portmacro.h index 2f153f87c..aee4e4de3 100644 --- a/portable/GCC/RX200/portmacro.h +++ b/portable/GCC/RX200/portmacro.h @@ -141,6 +141,8 @@ void vPortSetIPL( uint32_t ulNewIPL ) __attribute__( ( naked ) ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void * pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void * pvParameters ) +#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" ) + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/GCC/RX600/portmacro.h b/portable/GCC/RX600/portmacro.h index 7d1fdb6c7..d441eb784 100644 --- a/portable/GCC/RX600/portmacro.h +++ b/portable/GCC/RX600/portmacro.h @@ -141,6 +141,8 @@ void vPortSetIPL( uint32_t ulNewIPL ) __attribute__( ( naked ) ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void * pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void * pvParameters ) +#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" ) + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/GCC/RX600v2/portmacro.h b/portable/GCC/RX600v2/portmacro.h index 7d1fdb6c7..d441eb784 100644 --- a/portable/GCC/RX600v2/portmacro.h +++ b/portable/GCC/RX600v2/portmacro.h @@ -141,6 +141,8 @@ void vPortSetIPL( uint32_t ulNewIPL ) __attribute__( ( naked ) ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void * pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void * pvParameters ) +#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" ) + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/GCC/RX700v3_DPFPU/portmacro.h b/portable/GCC/RX700v3_DPFPU/portmacro.h index 8e67724e9..4f9b8a087 100644 --- a/portable/GCC/RX700v3_DPFPU/portmacro.h +++ b/portable/GCC/RX700v3_DPFPU/portmacro.h @@ -185,6 +185,8 @@ void vPortSetIPL( uint32_t ulNewIPL ) __attribute__( ( naked ) ); /* Definition to allow compatibility with existing FreeRTOS Demo using flop.c. */ #define portTASK_USES_FLOATING_POINT() vPortTaskUsesDPFPU() +#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" ) + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/Renesas/RX100/portmacro.h b/portable/Renesas/RX100/portmacro.h index b82fdca24..a954bb71c 100644 --- a/portable/Renesas/RX100/portmacro.h +++ b/portable/Renesas/RX100/portmacro.h @@ -148,6 +148,13 @@ extern void vTaskExitCritical( void ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#pragma inline_asm vPortMemoryBarrier +static void vPortMemoryBarrier( void ) +{ +} + +#define portMEMORY_BARRIER() vPortMemoryBarrier() + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/Renesas/RX200/portmacro.h b/portable/Renesas/RX200/portmacro.h index 55278dacb..efb9d93c8 100644 --- a/portable/Renesas/RX200/portmacro.h +++ b/portable/Renesas/RX200/portmacro.h @@ -138,6 +138,12 @@ extern void vTaskExitCritical( void ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#pragma inline_asm vPortMemoryBarrier +static void vPortMemoryBarrier( void ) +{ +} + +#define portMEMORY_BARRIER() vPortMemoryBarrier() /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/Renesas/RX600/portmacro.h b/portable/Renesas/RX600/portmacro.h index 60106ae13..5ba1c067b 100644 --- a/portable/Renesas/RX600/portmacro.h +++ b/portable/Renesas/RX600/portmacro.h @@ -139,6 +139,13 @@ extern void vTaskExitCritical( void ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#pragma inline_asm vPortMemoryBarrier +static void vPortMemoryBarrier( void ) +{ +} + +#define portMEMORY_BARRIER() vPortMemoryBarrier() + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/Renesas/RX600v2/portmacro.h b/portable/Renesas/RX600v2/portmacro.h index 6efba647d..630a34eee 100644 --- a/portable/Renesas/RX600v2/portmacro.h +++ b/portable/Renesas/RX600v2/portmacro.h @@ -139,6 +139,13 @@ extern void vTaskExitCritical( void ); #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#pragma inline_asm vPortMemoryBarrier +static void vPortMemoryBarrier( void ) +{ +} + +#define portMEMORY_BARRIER() vPortMemoryBarrier() + /* *INDENT-OFF* */ #ifdef __cplusplus } diff --git a/portable/Renesas/RX700v3_DPFPU/portmacro.h b/portable/Renesas/RX700v3_DPFPU/portmacro.h index fef13556e..891024a22 100644 --- a/portable/Renesas/RX700v3_DPFPU/portmacro.h +++ b/portable/Renesas/RX700v3_DPFPU/portmacro.h @@ -183,6 +183,13 @@ /* Definition to allow compatibility with existing FreeRTOS Demo using flop.c. */ #define portTASK_USES_FLOATING_POINT() vPortTaskUsesDPFPU() +#pragma inline_asm vPortMemoryBarrier +static void vPortMemoryBarrier( void ) +{ +} + +#define portMEMORY_BARRIER() vPortMemoryBarrier() + /* *INDENT-OFF* */ #ifdef __cplusplus }