Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Synopsys ARC update, with updated BSP support #99

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion portable/ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -184,7 +185,7 @@
executable_requires_tls_section();
}

if( exc_sense() ) /* In ISR */
if( exc_nest_count > 0 ) /* In ISR */
{
return get_isr_tls();
}
Expand Down
14 changes: 10 additions & 4 deletions portable/ThirdParty/GCC/ARC_EM_HS/port.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
/* --------------------------------------------------------------------------*/

/**
Expand All @@ -51,7 +57,7 @@ volatile unsigned int context_switch_reqflg; /* task context switch request flag
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() )
Expand All @@ -71,8 +77,8 @@ static void prvSetupTimerInterrupt( void )
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 );
Expand Down
15 changes: 6 additions & 9 deletions portable/ThirdParty/GCC/ARC_EM_HS/portmacro.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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() \
Expand Down