Synopsys ARC update, with updated BSP support (#99)
Update BSP APIs to latest version
Remove unused macro which could have caused warnings
(Code Style) Manually align some macros
Signed-off-by: Yuguo Zou <yuguo.zou@synopsys.com>
diff --git a/portable/ThirdParty/GCC/ARC_EM_HS/freertos_tls.c b/portable/ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
index 6495fd6..900691c 100644
--- a/portable/ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
+++ b/portable/ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
@@ -54,6 +54,7 @@
extern void __mw_run_tls_dtor();
extern void __mw_run_tls_ctor();
+extern uint32_t exc_nest_count;
/*
* Linker generated symbols to mark .tls section addresses
* first byte .. last byte
@@ -184,7 +185,7 @@
executable_requires_tls_section();
}
- if( exc_sense() ) /* In ISR */
+ if( exc_nest_count > 0 ) /* In ISR */
{
return get_isr_tls();
}
diff --git a/portable/ThirdParty/GCC/ARC_EM_HS/port.c b/portable/ThirdParty/GCC/ARC_EM_HS/port.c
index cc3eb1e..b2e3716 100644
--- a/portable/ThirdParty/GCC/ARC_EM_HS/port.c
+++ b/portable/ThirdParty/GCC/ARC_EM_HS/port.c
@@ -41,7 +41,13 @@
volatile unsigned int ulCriticalNesting = 999UL;
volatile unsigned int context_switch_reqflg; /* task context switch request flag in exceptions and interrupts handling */
-
+/**
+ * \var exc_nest_count
+ * \brief the counter for exc/int processing, =0 no int/exc
+ * >1 in int/exc processing
+ * @}
+ */
+uint32_t exc_nest_count;
/* --------------------------------------------------------------------------*/
/**
@@ -51,7 +57,7 @@
static void vKernelTick( void * ptr )
{
/* clear timer interrupt */
- timer_int_clear( BOARD_OS_TIMER_ID );
+ arc_timer_int_clear( BOARD_OS_TIMER_ID );
board_timer_update( configTICK_RATE_HZ );
if( xTaskIncrementTick() )
@@ -71,8 +77,8 @@
unsigned int cyc = configCPU_CLOCK_HZ / configTICK_RATE_HZ;
int_disable( BOARD_OS_TIMER_INTNO ); /* disable os timer interrupt */
- timer_stop( BOARD_OS_TIMER_ID );
- timer_start( BOARD_OS_TIMER_ID, TIMER_CTRL_IE | TIMER_CTRL_NH, cyc );
+ arc_timer_stop( BOARD_OS_TIMER_ID );
+ arc_timer_start( BOARD_OS_TIMER_ID, TIMER_CTRL_IE | TIMER_CTRL_NH, cyc );
int_handler_install( BOARD_OS_TIMER_INTNO, ( INT_HANDLER_T ) vKernelTick );
int_pri_set( BOARD_OS_TIMER_INTNO, INT_PRI_MIN );
diff --git a/portable/ThirdParty/GCC/ARC_EM_HS/portmacro.h b/portable/ThirdParty/GCC/ARC_EM_HS/portmacro.h
index 96c4338..6b52deb 100644
--- a/portable/ThirdParty/GCC/ARC_EM_HS/portmacro.h
+++ b/portable/ThirdParty/GCC/ARC_EM_HS/portmacro.h
@@ -56,9 +56,6 @@
#define portSTACK_TYPE unsigned int
#define portBASE_TYPE portLONG
- #ifndef Inline
- #define Inline static __inline__
- #endif
#ifndef Asm
#define Asm __asm__ volatile
#endif
@@ -84,21 +81,21 @@
#if ( configUSE_16_BIT_TICKS == 1 )
typedef uint16_t TickType_t;
- #define portMAX_DELAY ( TickType_t ) 0xffff
+ #define portMAX_DELAY ( TickType_t ) 0xffff
#else
typedef unsigned int TickType_t;
- #define portMAX_DELAY ( TickType_t ) 0xffffffffUL
+ #define portMAX_DELAY ( TickType_t ) 0xffffffffUL
#endif
- #define portNO_CRITICAL_NESTING 0x0
+ #define portNO_CRITICAL_NESTING ( ( uint32_t ) 0 )
#define portSTACK_GROWTH ( -1 )
#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
#define portBYTE_ALIGNMENT 8
- #define portNOP() Asm( "nop_s" );
+ #define portNOP() Asm( "nop_s" );
#define IPM_ENABLE_ALL 1
- #define portYIELD_FROM_ISR() vPortYieldFromIsr()
- #define portYIELD() vPortYield()
+ #define portYIELD_FROM_ISR() vPortYieldFromIsr()
+ #define portYIELD() vPortYield()
/* Critical section management. */
#define portDISABLE_INTERRUPTS() \