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>
diff --git a/include/mpu_prototypes.h b/include/mpu_prototypes.h
index 633efd4..2b6b6cb 100644
--- a/include/mpu_prototypes.h
+++ b/include/mpu_prototypes.h
@@ -223,11 +223,11 @@
                            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 @@
                                       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,
diff --git a/include/mpu_wrappers.h b/include/mpu_wrappers.h
index 020efc3..a0ebf60 100644
--- a/include/mpu_wrappers.h
+++ b/include/mpu_wrappers.h
@@ -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. */
diff --git a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23/mpu_wrappers_v2_asm.c b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23/mpu_wrappers_v2_asm.c
index a1e5ce0..795f219 100644
--- a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23/mpu_wrappers_v2_asm.c
+++ b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23/mpu_wrappers_v2_asm.c
@@ -1726,41 +1726,38 @@
 
 #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"
     );
 }
diff --git a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23_NTZ/mpu_wrappers_v2_asm.c b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23_NTZ/mpu_wrappers_v2_asm.c
index a1e5ce0..795f219 100644
--- a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23_NTZ/mpu_wrappers_v2_asm.c
+++ b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM23_NTZ/mpu_wrappers_v2_asm.c
@@ -1726,41 +1726,38 @@
 
 #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"
     );
 }
diff --git a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/mpu_wrappers_v2_asm.c b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/mpu_wrappers_v2_asm.c
+++ b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/mpu_wrappers_v2_asm.c b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/mpu_wrappers_v2_asm.c
+++ b/portable/ARMv8M/non_secure/portable/GCC/ARM_CM33_NTZ/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23/mpu_wrappers_v2_asm.S b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23/mpu_wrappers_v2_asm.S
index 867642b..f2098b5 100644
--- a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23/mpu_wrappers_v2_asm.S
+++ b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23/mpu_wrappers_v2_asm.S
@@ -945,28 +945,22 @@
         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_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:
diff --git a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23_NTZ/mpu_wrappers_v2_asm.S b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23_NTZ/mpu_wrappers_v2_asm.S
index 867642b..f2098b5 100644
--- a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23_NTZ/mpu_wrappers_v2_asm.S
+++ b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM23_NTZ/mpu_wrappers_v2_asm.S
@@ -945,28 +945,22 @@
         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_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:
diff --git a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/mpu_wrappers_v2_asm.S b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/mpu_wrappers_v2_asm.S
+++ b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/mpu_wrappers_v2_asm.S b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/mpu_wrappers_v2_asm.S
+++ b/portable/ARMv8M/non_secure/portable/IAR/ARM_CM33_NTZ/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/Common/mpu_wrappers.c b/portable/Common/mpu_wrappers.c
index c995195..e877dce 100644
--- a/portable/Common/mpu_wrappers.c
+++ b/portable/Common/mpu_wrappers.c
@@ -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;
diff --git a/portable/Common/mpu_wrappers_v2.c b/portable/Common/mpu_wrappers_v2.c
index 1a976cb..91a2e70 100644
--- a/portable/Common/mpu_wrappers_v2.c
+++ b/portable/Common/mpu_wrappers_v2.c
@@ -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.              */
 /*-----------------------------------------------------------*/
diff --git a/portable/GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c
index a1e5ce0..795f219 100644
--- a/portable/GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c
@@ -1726,41 +1726,38 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c
index a1e5ce0..795f219 100644
--- a/portable/GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c
@@ -1726,41 +1726,38 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c
index df9239a..d9aa1a3 100644
--- a/portable/GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
index df9239a..d9aa1a3 100644
--- a/portable/GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c b/portable/GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c
index 6e20434..9e1b9ed 100644
--- a/portable/GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c
+++ b/portable/GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c
@@ -1676,41 +1676,37 @@
 
 #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"
     );
 }
diff --git a/portable/IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S
index 867642b..f2098b5 100644
--- a/portable/IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S
@@ -945,28 +945,22 @@
         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_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:
diff --git a/portable/IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S
index 867642b..f2098b5 100644
--- a/portable/IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S
@@ -945,28 +945,22 @@
         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_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:
diff --git a/portable/IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S
index a0541f7..f18d741 100644
--- a/portable/IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S
@@ -899,27 +899,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S b/portable/IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S
index f051a60..9cb9a9d 100644
--- a/portable/IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S
+++ b/portable/IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S
@@ -895,27 +895,21 @@
         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_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:
diff --git a/portable/RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c b/portable/RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
index aa1e825..0de1b53 100644
--- a/portable/RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
+++ b/portable/RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c
@@ -1426,37 +1426,34 @@
 
 #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 ) */