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:
kar-rahul-aws 2023-08-01 20:12:58 +05:30 committed by GitHub
parent 0066c28cb2
commit b51a37314c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 693 additions and 799 deletions

View file

@ -223,7 +223,7 @@ void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
void * pvNewID ) FREERTOS_SYSTEM_CALL; void * pvNewID ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL; TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -252,6 +252,11 @@ TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
StaticTimer_t * pxTimerBuffer ) PRIVILEGED_FUNCTION; StaticTimer_t * pxTimerBuffer ) PRIVILEGED_FUNCTION;
BaseType_t MPU_xTimerGetStaticBuffer( TimerHandle_t xTimer, BaseType_t MPU_xTimerGetStaticBuffer( TimerHandle_t xTimer,
StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION; 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. */ /* MPU versions of event_group.h API functions. */
EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup, EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,

View file

@ -156,7 +156,7 @@
#define vTimerSetTimerID MPU_vTimerSetTimerID #define vTimerSetTimerID MPU_vTimerSetTimerID
#define xTimerIsTimerActive MPU_xTimerIsTimerActive #define xTimerIsTimerActive MPU_xTimerIsTimerActive
#define xTimerGetTimerDaemonTaskHandle MPU_xTimerGetTimerDaemonTaskHandle #define xTimerGetTimerDaemonTaskHandle MPU_xTimerGetTimerDaemonTaskHandle
#define xTimerGenericCommand MPU_xTimerGenericCommand #define xTimerGenericCommandFromTask MPU_xTimerGenericCommandFromTask
#define pcTimerGetName MPU_pcTimerGetName #define pcTimerGetName MPU_pcTimerGetName
#define vTimerSetReloadMode MPU_vTimerSetReloadMode #define vTimerSetReloadMode MPU_vTimerSetReloadMode
#define uxTimerGetReloadMode MPU_uxTimerGetReloadMode #define uxTimerGetReloadMode MPU_uxTimerGetReloadMode
@ -171,6 +171,7 @@
#define xTimerCreate MPU_xTimerCreate #define xTimerCreate MPU_xTimerCreate
#define xTimerCreateStatic MPU_xTimerCreateStatic #define xTimerCreateStatic MPU_xTimerCreateStatic
#define xTimerGetStaticBuffer MPU_xTimerGetStaticBuffer #define xTimerGetStaticBuffer MPU_xTimerGetStaticBuffer
#define xTimerGenericCommandFromISR MPU_xTimerGenericCommandFromISR
#endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 0 ) */ #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
/* Map standard event_group.h API functions to the MPU equivalents. */ /* Map standard event_group.h API functions to the MPU equivalents. */

View file

@ -1726,13 +1726,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1741,25 +1741,22 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0, r1} \n" " push {r0, r1} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" movs r1, #1 \n" " movs r1, #1 \n"
" tst r0, r1 \n" " tst r0, r1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0, r1} \n" " pop {r0, r1} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1726,13 +1726,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1741,25 +1741,22 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0, r1} \n" " push {r0, r1} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" movs r1, #1 \n" " movs r1, #1 \n"
" tst r0, r1 \n" " tst r0, r1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0, r1} \n" " pop {r0, r1} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0, r1} 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 mrs r0, control
movs r1, #1 movs r1, #1
tst r0, r1 tst r0, r1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0, r1} pop {r0, r1}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0, r1} 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 mrs r0, control
movs r1, #1 movs r1, #1
tst r0, r1 tst r0, r1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0, r1} pop {r0, r1}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -1943,7 +1943,7 @@
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1956,7 +1956,7 @@
portRAISE_PRIVILEGE(); portRAISE_PRIVILEGE();
portMEMORY_BARRIER(); portMEMORY_BARRIER();
xReturn = xTimerGenericCommand( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait ); xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
portMEMORY_BARRIER(); portMEMORY_BARRIER();
portRESET_PRIVILEGE(); portRESET_PRIVILEGE();
@ -1964,7 +1964,7 @@
} }
else else
{ {
xReturn = xTimerGenericCommand( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait ); xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
} }
return xReturn; return xReturn;

View file

@ -2917,13 +2917,13 @@
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommandImpl( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTaskImpl( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION; const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
BaseType_t MPU_xTimerGenericCommandImpl( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTaskImpl( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -2951,7 +2951,7 @@
if( xInternalTimerHandle != NULL ) 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 ) */ #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. */ /* MPU wrappers for event group APIs. */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -1726,13 +1726,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1741,25 +1741,22 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0, r1} \n" " push {r0, r1} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" movs r1, #1 \n" " movs r1, #1 \n"
" tst r0, r1 \n" " tst r0, r1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0, r1} \n" " pop {r0, r1} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1726,13 +1726,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1741,25 +1741,22 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0, r1} \n" " push {r0, r1} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" movs r1, #1 \n" " movs r1, #1 \n"
" tst r0, r1 \n" " tst r0, r1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0, r1} \n" " pop {r0, r1} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0, r1} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -1676,13 +1676,13 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( nake
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) __attribute__ (( naked )) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
@ -1691,25 +1691,21 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
__asm volatile __asm volatile
( (
" .syntax unified \n" " .syntax unified \n"
" .extern MPU_xTimerGenericCommandImpl \n" " .extern MPU_xTimerGenericCommandFromTaskImpl \n"
" \n" " \n"
" push {r0} \n" " push {r0} \n"
" mrs r0, ipsr \n"
" cmp r0, #0 \n"
" bne MPU_xTimerGenericCommand_Priv \n"
" mrs r0, control \n" " mrs r0, control \n"
" tst r0, #1 \n" " tst r0, #1 \n"
" beq MPU_xTimerGenericCommand_Priv \n" " bne MPU_xTimerGenericCommandFromTask_Unpriv \n"
" MPU_xTimerGenericCommand_Unpriv: \n" " MPU_xTimerGenericCommandFromTask_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandFromTaskImpl \n"
" MPU_xTimerGenericCommandFromTask_Unpriv: \n"
" pop {r0} \n" " pop {r0} \n"
" svc %0 \n" " svc %0 \n"
" bl MPU_xTimerGenericCommandImpl \n" " bl MPU_xTimerGenericCommandFromTaskImpl \n"
" svc %1 \n" " svc %1 \n"
" bx lr \n" " bx lr \n"
" MPU_xTimerGenericCommand_Priv: \n"
" pop {r0} \n"
" b MPU_xTimerGenericCommandImpl \n"
" \n"
" \n" " \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" : : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
); );

View file

@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0, r1} 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 mrs r0, control
movs r1, #1 movs r1, #1
tst r0, r1 tst r0, r1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0, r1} pop {r0, r1}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -945,28 +945,22 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0, r1} 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 mrs r0, control
movs r1, #1 movs r1, #1
tst r0, r1 tst r0, r1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0, r1} pop {r0, r1}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0, r1}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1532,9 +1526,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -899,27 +899,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1465,9 +1459,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -895,27 +895,21 @@ MPU_xTimerGetTimerDaemonTaskHandle:
bx lr bx lr
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_xTimerGenericCommand PUBLIC MPU_xTimerGenericCommandFromTask
MPU_xTimerGenericCommand: MPU_xTimerGenericCommandFromTask:
push {r0} 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 mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv: MPU_xTimerGenericCommandFromTask_Priv:
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv:
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv:
pop {r0}
b MPU_xTimerGenericCommandImpl
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
PUBLIC MPU_pcTimerGetName PUBLIC MPU_pcTimerGetName
@ -1461,9 +1455,9 @@ MPU_xTimerIsTimerActiveImpl:
MPU_xTimerGetTimerDaemonTaskHandleImpl: MPU_xTimerGetTimerDaemonTaskHandleImpl:
b MPU_xTimerGetTimerDaemonTaskHandleImpl b MPU_xTimerGetTimerDaemonTaskHandleImpl
PUBWEAK MPU_xTimerGenericCommandImpl PUBWEAK MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandImpl: MPU_xTimerGenericCommandFromTaskImpl:
b MPU_xTimerGenericCommandImpl b MPU_xTimerGenericCommandFromTaskImpl
PUBWEAK MPU_pcTimerGetNameImpl PUBWEAK MPU_pcTimerGetNameImpl
MPU_pcTimerGetNameImpl: MPU_pcTimerGetNameImpl:

View file

@ -1426,37 +1426,34 @@ MPU_xTimerGetTimerDaemonTaskHandle_Unpriv
#if ( configUSE_TIMERS == 1 ) #if ( configUSE_TIMERS == 1 )
BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
__asm BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer, __asm BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
const BaseType_t xCommandID, const BaseType_t xCommandID,
const TickType_t xOptionalValue, const TickType_t xOptionalValue,
BaseType_t * const pxHigherPriorityTaskWoken, BaseType_t * const pxHigherPriorityTaskWoken,
const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
{ {
PRESERVE8 PRESERVE8
extern MPU_xTimerGenericCommandImpl extern MPU_xTimerGenericCommandFromTaskImpl
push {r0} push {r0}
mrs r0, ipsr
cmp r0, #0
bne MPU_xTimerGenericCommand_Priv
mrs r0, control mrs r0, control
tst r0, #1 tst r0, #1
beq MPU_xTimerGenericCommand_Priv bne MPU_xTimerGenericCommandFromTask_Unpriv
MPU_xTimerGenericCommand_Unpriv MPU_xTimerGenericCommandFromTask_Priv
pop {r0}
b MPU_xTimerGenericCommandFromTaskImpl
MPU_xTimerGenericCommandFromTask_Unpriv
pop {r0} pop {r0}
svc #portSVC_SYSTEM_CALL_ENTER_1 svc #portSVC_SYSTEM_CALL_ENTER_1
bl MPU_xTimerGenericCommandImpl bl MPU_xTimerGenericCommandFromTaskImpl
svc #portSVC_SYSTEM_CALL_EXIT svc #portSVC_SYSTEM_CALL_EXIT
bx lr bx lr
MPU_xTimerGenericCommand_Priv
pop {r0}
b MPU_xTimerGenericCommandImpl
} }
#endif /* if ( configUSE_TIMERS == 1 ) */ #endif /* if ( configUSE_TIMERS == 1 ) */