mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 11:09:01 +01:00 
			
		
		
		
	Update MPU wrapper for xTimerGenericCommand API (#734)
* Update xTimerGenericCommand API as per SMP branch Signed-off-by: kar-rahul-aws <karahulx@amazon.com> * Fix formatting * Code review changes Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> * Fix Formatting --------- Signed-off-by: kar-rahul-aws <karahulx@amazon.com> Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
		
							parent
							
								
									0066c28cb2
								
							
						
					
					
						commit
						b51a37314c
					
				@ -223,11 +223,11 @@ void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
 | 
			
		||||
                           void * pvNewID ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
 | 
			
		||||
                              const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
@ -252,6 +252,11 @@ TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
 | 
			
		||||
                                      StaticTimer_t * pxTimerBuffer ) PRIVILEGED_FUNCTION;
 | 
			
		||||
BaseType_t MPU_xTimerGetStaticBuffer( TimerHandle_t xTimer,
 | 
			
		||||
                                      StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromISR( TimerHandle_t xTimer,
 | 
			
		||||
                                            const BaseType_t xCommandID,
 | 
			
		||||
                                            const TickType_t xOptionalValue,
 | 
			
		||||
                                            BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                            const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
 | 
			
		||||
 | 
			
		||||
/* MPU versions of event_group.h API functions. */
 | 
			
		||||
EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
 | 
			
		||||
 | 
			
		||||
@ -156,7 +156,7 @@
 | 
			
		||||
        #define vTimerSetTimerID                  MPU_vTimerSetTimerID
 | 
			
		||||
        #define xTimerIsTimerActive               MPU_xTimerIsTimerActive
 | 
			
		||||
        #define xTimerGetTimerDaemonTaskHandle    MPU_xTimerGetTimerDaemonTaskHandle
 | 
			
		||||
        #define xTimerGenericCommand              MPU_xTimerGenericCommand
 | 
			
		||||
        #define xTimerGenericCommandFromTask      MPU_xTimerGenericCommandFromTask
 | 
			
		||||
        #define pcTimerGetName                    MPU_pcTimerGetName
 | 
			
		||||
        #define vTimerSetReloadMode               MPU_vTimerSetReloadMode
 | 
			
		||||
        #define uxTimerGetReloadMode              MPU_uxTimerGetReloadMode
 | 
			
		||||
@ -167,10 +167,11 @@
 | 
			
		||||
 * the application can use opaque handles maintained in mpu_wrappers.c
 | 
			
		||||
 * with all the APIs. */
 | 
			
		||||
        #if ( configUSE_MPU_WRAPPERS_V1 == 0 )
 | 
			
		||||
            #define xTimerGetReloadMode      MPU_xTimerGetReloadMode
 | 
			
		||||
            #define xTimerCreate             MPU_xTimerCreate
 | 
			
		||||
            #define xTimerCreateStatic       MPU_xTimerCreateStatic
 | 
			
		||||
            #define xTimerGetStaticBuffer    MPU_xTimerGetStaticBuffer
 | 
			
		||||
            #define xTimerGetReloadMode            MPU_xTimerGetReloadMode
 | 
			
		||||
            #define xTimerCreate                   MPU_xTimerCreate
 | 
			
		||||
            #define xTimerCreateStatic             MPU_xTimerCreateStatic
 | 
			
		||||
            #define xTimerGetStaticBuffer          MPU_xTimerGetStaticBuffer
 | 
			
		||||
            #define xTimerGenericCommandFromISR    MPU_xTimerGenericCommandFromISR
 | 
			
		||||
        #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
 | 
			
		||||
 | 
			
		||||
/* Map standard event_group.h API functions to the MPU equivalents. */
 | 
			
		||||
 | 
			
		||||
@ -1726,41 +1726,38 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0, r1}                                         \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " movs r1, #1                                           \n"
 | 
			
		||||
        " tst r0, r1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0, r1}                                                 \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " movs r1, #1                                                   \n"
 | 
			
		||||
        " tst r0, r1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1726,41 +1726,38 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0, r1}                                         \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " movs r1, #1                                           \n"
 | 
			
		||||
        " tst r0, r1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0, r1}                                                 \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " movs r1, #1                                                   \n"
 | 
			
		||||
        " tst r0, r1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0, r1}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    movs r1, #1
 | 
			
		||||
    tst r0, r1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0, r1}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    movs r1, #1
 | 
			
		||||
    tst r0, r1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -1943,11 +1943,11 @@
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    #if ( configUSE_TIMERS == 1 )
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                                     const BaseType_t xCommandID,
 | 
			
		||||
                                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                     const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
 | 
			
		||||
        {
 | 
			
		||||
            BaseType_t xReturn;
 | 
			
		||||
 | 
			
		||||
@ -1956,7 +1956,7 @@
 | 
			
		||||
                portRAISE_PRIVILEGE();
 | 
			
		||||
                portMEMORY_BARRIER();
 | 
			
		||||
 | 
			
		||||
                xReturn = xTimerGenericCommand( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
                xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
                portMEMORY_BARRIER();
 | 
			
		||||
 | 
			
		||||
                portRESET_PRIVILEGE();
 | 
			
		||||
@ -1964,7 +1964,7 @@
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                xReturn = xTimerGenericCommand( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
                xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return xReturn;
 | 
			
		||||
 | 
			
		||||
@ -2917,17 +2917,17 @@
 | 
			
		||||
 | 
			
		||||
    #if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommandImpl( TimerHandle_t xTimer,
 | 
			
		||||
                                                 const BaseType_t xCommandID,
 | 
			
		||||
                                                 const TickType_t xOptionalValue,
 | 
			
		||||
                                                 BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                 const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommandFromTaskImpl( TimerHandle_t xTimer,
 | 
			
		||||
                                                         const BaseType_t xCommandID,
 | 
			
		||||
                                                         const TickType_t xOptionalValue,
 | 
			
		||||
                                                         BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                         const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
 | 
			
		||||
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommandImpl( TimerHandle_t xTimer,
 | 
			
		||||
                                                 const BaseType_t xCommandID,
 | 
			
		||||
                                                 const TickType_t xOptionalValue,
 | 
			
		||||
                                                 BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                 const TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommandFromTaskImpl( TimerHandle_t xTimer,
 | 
			
		||||
                                                         const BaseType_t xCommandID,
 | 
			
		||||
                                                         const TickType_t xOptionalValue,
 | 
			
		||||
                                                         BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                         const TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */
 | 
			
		||||
        {
 | 
			
		||||
            BaseType_t xReturn = pdFALSE;
 | 
			
		||||
            TimerHandle_t xInternalTimerHandle = NULL;
 | 
			
		||||
@ -2951,7 +2951,7 @@
 | 
			
		||||
 | 
			
		||||
                    if( xInternalTimerHandle != NULL )
 | 
			
		||||
                    {
 | 
			
		||||
                        xReturn = xTimerGenericCommand( xInternalTimerHandle, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
                        xReturn = xTimerGenericCommandFromTask( xInternalTimerHandle, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@ -3232,6 +3232,47 @@
 | 
			
		||||
    #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_TIMERS == 1 ) */
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    #if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
        BaseType_t MPU_xTimerGenericCommandFromISR( TimerHandle_t xTimer,
 | 
			
		||||
                                                    const BaseType_t xCommandID,
 | 
			
		||||
                                                    const TickType_t xOptionalValue,
 | 
			
		||||
                                                    BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                    const TickType_t xTicksToWait ) /* PRIVILEGED_FUNCTION */
 | 
			
		||||
        {
 | 
			
		||||
            BaseType_t xReturn = pdFALSE;
 | 
			
		||||
            TimerHandle_t xInternalTimerHandle = NULL;
 | 
			
		||||
            int32_t lIndex;
 | 
			
		||||
            BaseType_t xIsHigherPriorityTaskWokenWriteable = pdFALSE;
 | 
			
		||||
 | 
			
		||||
            if( pxHigherPriorityTaskWoken != NULL )
 | 
			
		||||
            {
 | 
			
		||||
                xIsHigherPriorityTaskWokenWriteable = xPortIsAuthorizedToAccessBuffer( pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                                                       sizeof( BaseType_t ),
 | 
			
		||||
                                                                                       tskMPU_WRITE_PERMISSION );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if( ( pxHigherPriorityTaskWoken == NULL ) || ( xIsHigherPriorityTaskWokenWriteable == pdTRUE ) )
 | 
			
		||||
            {
 | 
			
		||||
                lIndex = ( int32_t ) xTimer;
 | 
			
		||||
 | 
			
		||||
                if( IS_EXTERNAL_INDEX_VALID( lIndex ) != pdFALSE )
 | 
			
		||||
                {
 | 
			
		||||
                    xInternalTimerHandle = MPU_GetTimerHandleAtIndex( CONVERT_TO_INTERNAL_INDEX( lIndex ) );
 | 
			
		||||
 | 
			
		||||
                    if( xInternalTimerHandle != NULL )
 | 
			
		||||
                    {
 | 
			
		||||
                        xReturn = xTimerGenericCommandFromISR( xInternalTimerHandle, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return xReturn;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    #endif /* if ( configUSE_TIMERS == 1 ) */
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
/*           MPU wrappers for event group APIs.              */
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
@ -1726,41 +1726,38 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0, r1}                                         \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " movs r1, #1                                           \n"
 | 
			
		||||
        " tst r0, r1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0, r1}                                                 \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " movs r1, #1                                                   \n"
 | 
			
		||||
        " tst r0, r1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1726,41 +1726,38 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0, r1}                                         \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " movs r1, #1                                           \n"
 | 
			
		||||
        " tst r0, r1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                      \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0, r1}                                                 \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " movs r1, #1                                                   \n"
 | 
			
		||||
        " tst r0, r1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0, r1}                                              \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1676,41 +1676,37 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    __asm volatile
 | 
			
		||||
    (
 | 
			
		||||
        " .syntax unified                                       \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandImpl                  \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " push {r0}                                             \n"
 | 
			
		||||
        " mrs r0, ipsr                                          \n"
 | 
			
		||||
        " cmp r0, #0                                            \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " mrs r0, control                                       \n"
 | 
			
		||||
        " tst r0, #1                                            \n"
 | 
			
		||||
        " beq MPU_xTimerGenericCommand_Priv                     \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     svc %0                                            \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandImpl                   \n"
 | 
			
		||||
        "     svc %1                                            \n"
 | 
			
		||||
        "     bx lr                                             \n"
 | 
			
		||||
        " MPU_xTimerGenericCommand_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                          \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandImpl                    \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        "                                                       \n"
 | 
			
		||||
        " .syntax unified                                               \n"
 | 
			
		||||
        " .extern MPU_xTimerGenericCommandFromTaskImpl                  \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        " push {r0}                                                     \n"
 | 
			
		||||
        " mrs r0, control                                               \n"
 | 
			
		||||
        " tst r0, #1                                                    \n"
 | 
			
		||||
        " bne MPU_xTimerGenericCommandFromTask_Unpriv                   \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Priv:                        \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     b MPU_xTimerGenericCommandFromTaskImpl                    \n"
 | 
			
		||||
        " MPU_xTimerGenericCommandFromTask_Unpriv:                      \n"
 | 
			
		||||
        "     pop {r0}                                                  \n"
 | 
			
		||||
        "     svc %0                                                    \n"
 | 
			
		||||
        "     bl MPU_xTimerGenericCommandFromTaskImpl                   \n"
 | 
			
		||||
        "     svc %1                                                    \n"
 | 
			
		||||
        "     bx lr                                                     \n"
 | 
			
		||||
        "                                                               \n"
 | 
			
		||||
        : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0, r1}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    movs r1, #1
 | 
			
		||||
    tst r0, r1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0, r1}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    movs r1, #1
 | 
			
		||||
    tst r0, r1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0, r1}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -899,27 +899,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1465,9 +1459,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
 | 
			
		||||
        bx lr
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommand
 | 
			
		||||
MPU_xTimerGenericCommand:
 | 
			
		||||
    PUBLIC MPU_xTimerGenericCommandFromTask
 | 
			
		||||
MPU_xTimerGenericCommandFromTask:
 | 
			
		||||
    push {r0}
 | 
			
		||||
    /* This function can be called from ISR also and therefore, we need a check
 | 
			
		||||
     * to take privileged path, if called from ISR. */
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    MPU_xTimerGenericCommand_Unpriv:
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
    MPU_xTimerGenericCommandFromTask_Unpriv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
    MPU_xTimerGenericCommand_Priv:
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
    PUBLIC MPU_pcTimerGetName
 | 
			
		||||
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
 | 
			
		||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
 | 
			
		||||
    b MPU_xTimerGetTimerDaemonTaskHandleImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandImpl
 | 
			
		||||
MPU_xTimerGenericCommandImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandImpl
 | 
			
		||||
    PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTaskImpl:
 | 
			
		||||
    b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    PUBWEAK MPU_pcTimerGetNameImpl
 | 
			
		||||
MPU_pcTimerGetNameImpl:
 | 
			
		||||
 | 
			
		||||
@ -1426,37 +1426,34 @@ MPU_xTimerGetTimerDaemonTaskHandle_Unpriv
 | 
			
		||||
 | 
			
		||||
#if ( configUSE_TIMERS == 1 )
 | 
			
		||||
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                     const BaseType_t xCommandID,
 | 
			
		||||
                                     const TickType_t xOptionalValue,
 | 
			
		||||
                                     BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                     const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                             const BaseType_t xCommandID,
 | 
			
		||||
                                             const TickType_t xOptionalValue,
 | 
			
		||||
                                             BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                             const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
__asm BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
 | 
			
		||||
                                           const BaseType_t xCommandID,
 | 
			
		||||
                                           const TickType_t xOptionalValue,
 | 
			
		||||
                                           BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                           const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
 | 
			
		||||
__asm BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
 | 
			
		||||
                                                   const BaseType_t xCommandID,
 | 
			
		||||
                                                   const TickType_t xOptionalValue,
 | 
			
		||||
                                                   BaseType_t * const pxHigherPriorityTaskWoken,
 | 
			
		||||
                                                   const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
 | 
			
		||||
{
 | 
			
		||||
    PRESERVE8
 | 
			
		||||
    extern MPU_xTimerGenericCommandImpl
 | 
			
		||||
    extern MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
 | 
			
		||||
    push {r0}
 | 
			
		||||
    mrs r0, ipsr
 | 
			
		||||
    cmp r0, #0
 | 
			
		||||
    bne MPU_xTimerGenericCommand_Priv
 | 
			
		||||
    mrs r0, control
 | 
			
		||||
    tst r0, #1
 | 
			
		||||
    beq MPU_xTimerGenericCommand_Priv
 | 
			
		||||
MPU_xTimerGenericCommand_Unpriv
 | 
			
		||||
    bne MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
MPU_xTimerGenericCommandFromTask_Priv
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
MPU_xTimerGenericCommandFromTask_Unpriv
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_ENTER_1
 | 
			
		||||
        bl MPU_xTimerGenericCommandImpl
 | 
			
		||||
        bl MPU_xTimerGenericCommandFromTaskImpl
 | 
			
		||||
        svc #portSVC_SYSTEM_CALL_EXIT
 | 
			
		||||
        bx lr
 | 
			
		||||
MPU_xTimerGenericCommand_Priv
 | 
			
		||||
        pop {r0}
 | 
			
		||||
        b MPU_xTimerGenericCommandImpl
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* if ( configUSE_TIMERS == 1 ) */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user