Add trace hook macro for most ports (#794)

Add trace hook macro for most ports

In pull request #659 we introduced better support for tracing
tools like systemview. This patchset adds support for more
ports as requested in the original pull request.
This commit is contained in:
Boris van der Meer 2023-09-20 12:49:42 +02:00 committed by GitHub
parent 83861f5b1d
commit d43062ba78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
103 changed files with 1005 additions and 134 deletions

View file

@ -246,12 +246,18 @@ void SysTick_Handler( void )
uint32_t ulDummy;
ulDummy = portSET_INTERRUPT_MASK_FROM_ISR();
traceISR_ENTER();
{
if( xTaskIncrementTick() != pdFALSE )
{
traceISR_EXIT_TO_SCHEDULER();
/* Pend a context switch. */
*( portNVIC_INT_CTRL ) = portNVIC_PENDSVSET;
}
else
{
traceISR_EXIT();
}
}
portCLEAR_INTERRUPT_MASK_FROM_ISR( ulDummy );
}

View file

@ -86,10 +86,22 @@ typedef unsigned long UBaseType_t;
extern void vPortYield( void );
#define portNVIC_INT_CTRL ( ( volatile uint32_t * ) 0xe000ed04 )
#define portNVIC_PENDSVSET 0x10000000
#define portYIELD() vPortYield()
#define portYIELD() vPortYield()
#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) *( portNVIC_INT_CTRL ) = portNVIC_PENDSVSET
#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )
#define portEND_SWITCHING_ISR( xSwitchRequired ) \
do \
{ \
if( xSwitchRequired != pdFALSE ) \
{ \
traceISR_EXIT_TO_SCHEDULER(); \
*( portNVIC_INT_CTRL ) = portNVIC_PENDSVSET; \
} \
else \
{ \
traceISR_EXIT(); \
} \
} while( 0 )
#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )
/*-----------------------------------------------------------*/