| /* |
| * FreeRTOS Kernel <DEVELOPMENT BRANCH> |
| * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. |
| * |
| * SPDX-License-Identifier: MIT |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a copy of |
| * this software and associated documentation files (the "Software"), to deal in |
| * the Software without restriction, including without limitation the rights to |
| * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
| * the Software, and to permit persons to whom the Software is furnished to do so, |
| * subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in all |
| * copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
| * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
| * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
| * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| * |
| * https://www.FreeRTOS.org |
| * https://github.com/FreeRTOS |
| * |
| */ |
| |
| /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining |
| * all the API functions to use the MPU wrappers. That should only be done when |
| * task.h is included from an application file. */ |
| #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE |
| |
| /* Scheduler includes. */ |
| #include "FreeRTOS.h" |
| #include "task.h" |
| #include "queue.h" |
| #include "timers.h" |
| #include "event_groups.h" |
| #include "stream_buffer.h" |
| |
| #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_MPU_WRAPPERS_V1 == 0 ) |
| |
| #if ( INCLUDE_xTaskDelayUntil == 1 ) |
| |
| BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime, |
| const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime, |
| const TickType_t xTimeIncrement ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskDelayUntilImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskDelayUntil_Unpriv |
| MPU_xTaskDelayUntil_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskDelayUntilImpl |
| MPU_xTaskDelayUntil_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskDelayUntilImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_xTaskDelayUntil == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_xTaskAbortDelay == 1 ) |
| |
| BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskAbortDelayImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskAbortDelay_Unpriv |
| MPU_xTaskAbortDelay_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskAbortDelayImpl |
| MPU_xTaskAbortDelay_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskAbortDelayImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_xTaskAbortDelay == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_vTaskDelay == 1 ) |
| |
| void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskDelay( const TickType_t xTicksToDelay ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskDelayImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskDelay_Unpriv |
| MPU_vTaskDelay_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskDelayImpl |
| MPU_vTaskDelay_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskDelayImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_vTaskDelay == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_uxTaskPriorityGet == 1 ) |
| |
| UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxTaskPriorityGetImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxTaskPriorityGet_Unpriv |
| MPU_uxTaskPriorityGet_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxTaskPriorityGetImpl |
| MPU_uxTaskPriorityGet_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxTaskPriorityGetImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_uxTaskPriorityGet == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_eTaskGetState == 1 ) |
| |
| eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_eTaskGetStateImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_eTaskGetState_Unpriv |
| MPU_eTaskGetState_Priv |
| pop { |
| r0 |
| } |
| b MPU_eTaskGetStateImpl |
| MPU_eTaskGetState_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_eTaskGetStateImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_eTaskGetState == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TRACE_FACILITY == 1 ) |
| |
| void MPU_vTaskGetInfo( TaskHandle_t xTask, |
| TaskStatus_t * pxTaskStatus, |
| BaseType_t xGetFreeStackSpace, |
| eTaskState eState ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskGetInfo( TaskHandle_t xTask, |
| TaskStatus_t * pxTaskStatus, |
| BaseType_t xGetFreeStackSpace, |
| eTaskState eState ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskGetInfoImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskGetInfo_Unpriv |
| MPU_vTaskGetInfo_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskGetInfoImpl |
| MPU_vTaskGetInfo_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskGetInfoImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) |
| |
| TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGetIdleTaskHandleImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGetIdleTaskHandle_Unpriv |
| MPU_xTaskGetIdleTaskHandle_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGetIdleTaskHandleImpl |
| MPU_xTaskGetIdleTaskHandle_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskGetIdleTaskHandleImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_vTaskSuspend == 1 ) |
| |
| void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskSuspendImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskSuspend_Unpriv |
| MPU_vTaskSuspend_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskSuspendImpl |
| MPU_vTaskSuspend_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskSuspendImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_vTaskSuspend == 1 ) |
| |
| void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskResume( TaskHandle_t xTaskToResume ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskResumeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskResume_Unpriv |
| MPU_vTaskResume_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskResumeImpl |
| MPU_vTaskResume_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskResumeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TickType_t MPU_xTaskGetTickCount( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGetTickCountImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGetTickCount_Unpriv |
| MPU_xTaskGetTickCount_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGetTickCountImpl |
| MPU_xTaskGetTickCount_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskGetTickCountImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxTaskGetNumberOfTasksImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxTaskGetNumberOfTasks_Unpriv |
| MPU_uxTaskGetNumberOfTasks_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxTaskGetNumberOfTasksImpl |
| MPU_uxTaskGetNumberOfTasks_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxTaskGetNumberOfTasksImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configGENERATE_RUN_TIME_STATS == 1 ) |
| |
| configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_ulTaskGetRunTimeCounterImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_ulTaskGetRunTimeCounter_Unpriv |
| MPU_ulTaskGetRunTimeCounter_Priv |
| pop { |
| r0 |
| } |
| b MPU_ulTaskGetRunTimeCounterImpl |
| MPU_ulTaskGetRunTimeCounter_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_ulTaskGetRunTimeCounterImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configGENERATE_RUN_TIME_STATS == 1 ) |
| |
| configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_ulTaskGetRunTimePercentImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_ulTaskGetRunTimePercent_Unpriv |
| MPU_ulTaskGetRunTimePercent_Priv |
| pop { |
| r0 |
| } |
| b MPU_ulTaskGetRunTimePercentImpl |
| MPU_ulTaskGetRunTimePercent_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_ulTaskGetRunTimePercentImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) |
| |
| configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_ulTaskGetIdleRunTimePercentImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_ulTaskGetIdleRunTimePercent_Unpriv |
| MPU_ulTaskGetIdleRunTimePercent_Priv |
| pop { |
| r0 |
| } |
| b MPU_ulTaskGetIdleRunTimePercentImpl |
| MPU_ulTaskGetIdleRunTimePercent_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_ulTaskGetIdleRunTimePercentImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) |
| |
| configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_ulTaskGetIdleRunTimeCounterImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_ulTaskGetIdleRunTimeCounter_Unpriv |
| MPU_ulTaskGetIdleRunTimeCounter_Priv |
| pop { |
| r0 |
| } |
| b MPU_ulTaskGetIdleRunTimeCounterImpl |
| MPU_ulTaskGetIdleRunTimeCounter_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_ulTaskGetIdleRunTimeCounterImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_APPLICATION_TASK_TAG == 1 ) |
| |
| void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, |
| TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, |
| TaskHookFunction_t pxHookFunction ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskSetApplicationTaskTagImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskSetApplicationTaskTag_Unpriv |
| MPU_vTaskSetApplicationTaskTag_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskSetApplicationTaskTagImpl |
| MPU_vTaskSetApplicationTaskTag_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskSetApplicationTaskTagImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_APPLICATION_TASK_TAG == 1 ) |
| |
| TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGetApplicationTaskTagImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGetApplicationTaskTag_Unpriv |
| MPU_xTaskGetApplicationTaskTag_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGetApplicationTaskTagImpl |
| MPU_xTaskGetApplicationTaskTag_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskGetApplicationTaskTagImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) |
| |
| void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, |
| BaseType_t xIndex, |
| void * pvValue ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, |
| BaseType_t xIndex, |
| void * pvValue ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskSetThreadLocalStoragePointerImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskSetThreadLocalStoragePointer_Unpriv |
| MPU_vTaskSetThreadLocalStoragePointer_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskSetThreadLocalStoragePointerImpl |
| MPU_vTaskSetThreadLocalStoragePointer_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskSetThreadLocalStoragePointerImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) |
| |
| void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, |
| BaseType_t xIndex ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, |
| BaseType_t xIndex ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_pvTaskGetThreadLocalStoragePointerImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_pvTaskGetThreadLocalStoragePointer_Unpriv |
| MPU_pvTaskGetThreadLocalStoragePointer_Priv |
| pop { |
| r0 |
| } |
| b MPU_pvTaskGetThreadLocalStoragePointerImpl |
| MPU_pvTaskGetThreadLocalStoragePointer_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_pvTaskGetThreadLocalStoragePointerImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TRACE_FACILITY == 1 ) |
| |
| UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, |
| const UBaseType_t uxArraySize, |
| configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, |
| const UBaseType_t uxArraySize, |
| configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxTaskGetSystemStateImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxTaskGetSystemState_Unpriv |
| MPU_uxTaskGetSystemState_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxTaskGetSystemStateImpl |
| MPU_uxTaskGetSystemState_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxTaskGetSystemStateImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) |
| |
| UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxTaskGetStackHighWaterMarkImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxTaskGetStackHighWaterMark_Unpriv |
| MPU_uxTaskGetStackHighWaterMark_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxTaskGetStackHighWaterMarkImpl |
| MPU_uxTaskGetStackHighWaterMark_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxTaskGetStackHighWaterMarkImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) |
| |
| configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL; |
| |
| __asm configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxTaskGetStackHighWaterMark2Impl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxTaskGetStackHighWaterMark2_Unpriv |
| MPU_uxTaskGetStackHighWaterMark2_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxTaskGetStackHighWaterMark2Impl |
| MPU_uxTaskGetStackHighWaterMark2_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxTaskGetStackHighWaterMark2Impl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) |
| |
| TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGetCurrentTaskHandleImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGetCurrentTaskHandle_Unpriv |
| MPU_xTaskGetCurrentTaskHandle_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGetCurrentTaskHandleImpl |
| MPU_xTaskGetCurrentTaskHandle_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskGetCurrentTaskHandleImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( INCLUDE_xTaskGetSchedulerState == 1 ) |
| |
| BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskGetSchedulerState( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGetSchedulerStateImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGetSchedulerState_Unpriv |
| MPU_xTaskGetSchedulerState_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGetSchedulerStateImpl |
| MPU_xTaskGetSchedulerState_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskGetSchedulerStateImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTaskSetTimeOutStateImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTaskSetTimeOutState_Unpriv |
| MPU_vTaskSetTimeOutState_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTaskSetTimeOutStateImpl |
| MPU_vTaskSetTimeOutState_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTaskSetTimeOutStateImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, |
| TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, |
| TickType_t * const pxTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskCheckForTimeOutImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskCheckForTimeOut_Unpriv |
| MPU_xTaskCheckForTimeOut_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskCheckForTimeOutImpl |
| MPU_xTaskCheckForTimeOut_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskCheckForTimeOutImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TASK_NOTIFICATIONS == 1 ) |
| |
| BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify, |
| UBaseType_t uxIndexToNotify, |
| uint32_t ulValue, |
| eNotifyAction eAction, |
| uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify, |
| UBaseType_t uxIndexToNotify, |
| uint32_t ulValue, |
| eNotifyAction eAction, |
| uint32_t * pulPreviousNotificationValue ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGenericNotifyImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGenericNotify_Unpriv |
| MPU_xTaskGenericNotify_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGenericNotifyImpl |
| MPU_xTaskGenericNotify_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER_1 |
| bl MPU_xTaskGenericNotifyImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TASK_NOTIFICATIONS == 1 ) |
| |
| BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn, |
| uint32_t ulBitsToClearOnEntry, |
| uint32_t ulBitsToClearOnExit, |
| uint32_t * pulNotificationValue, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn, |
| uint32_t ulBitsToClearOnEntry, |
| uint32_t ulBitsToClearOnExit, |
| uint32_t * pulNotificationValue, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGenericNotifyWaitImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGenericNotifyWait_Unpriv |
| MPU_xTaskGenericNotifyWait_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGenericNotifyWaitImpl |
| MPU_xTaskGenericNotifyWait_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER_1 |
| bl MPU_xTaskGenericNotifyWaitImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TASK_NOTIFICATIONS == 1 ) |
| |
| uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn, |
| BaseType_t xClearCountOnExit, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn, |
| BaseType_t xClearCountOnExit, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_ulTaskGenericNotifyTakeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_ulTaskGenericNotifyTake_Unpriv |
| MPU_ulTaskGenericNotifyTake_Priv |
| pop { |
| r0 |
| } |
| b MPU_ulTaskGenericNotifyTakeImpl |
| MPU_ulTaskGenericNotifyTake_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_ulTaskGenericNotifyTakeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TASK_NOTIFICATIONS == 1 ) |
| |
| BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask, |
| UBaseType_t uxIndexToClear ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask, |
| UBaseType_t uxIndexToClear ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTaskGenericNotifyStateClearImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTaskGenericNotifyStateClear_Unpriv |
| MPU_xTaskGenericNotifyStateClear_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTaskGenericNotifyStateClearImpl |
| MPU_xTaskGenericNotifyStateClear_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTaskGenericNotifyStateClearImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TASK_NOTIFICATIONS == 1 ) |
| |
| uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask, |
| UBaseType_t uxIndexToClear, |
| uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL; |
| |
| __asm uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask, |
| UBaseType_t uxIndexToClear, |
| uint32_t ulBitsToClear ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_ulTaskGenericNotifyValueClearImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_ulTaskGenericNotifyValueClear_Unpriv |
| MPU_ulTaskGenericNotifyValueClear_Priv |
| pop { |
| r0 |
| } |
| b MPU_ulTaskGenericNotifyValueClearImpl |
| MPU_ulTaskGenericNotifyValueClear_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_ulTaskGenericNotifyValueClearImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, |
| const void * const pvItemToQueue, |
| TickType_t xTicksToWait, |
| const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, |
| const void * const pvItemToQueue, |
| TickType_t xTicksToWait, |
| const BaseType_t xCopyPosition ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueGenericSendImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueGenericSend_Unpriv |
| MPU_xQueueGenericSend_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueGenericSendImpl |
| MPU_xQueueGenericSend_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueGenericSendImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxQueueMessagesWaitingImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxQueueMessagesWaiting_Unpriv |
| MPU_uxQueueMessagesWaiting_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxQueueMessagesWaitingImpl |
| MPU_uxQueueMessagesWaiting_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxQueueMessagesWaitingImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxQueueSpacesAvailableImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxQueueSpacesAvailable_Unpriv |
| MPU_uxQueueSpacesAvailable_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxQueueSpacesAvailableImpl |
| MPU_uxQueueSpacesAvailable_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxQueueSpacesAvailableImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, |
| void * const pvBuffer, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, |
| void * const pvBuffer, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueReceiveImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueReceive_Unpriv |
| MPU_xQueueReceive_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueReceiveImpl |
| MPU_xQueueReceive_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueReceiveImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, |
| void * const pvBuffer, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, |
| void * const pvBuffer, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueuePeekImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueuePeek_Unpriv |
| MPU_xQueuePeek_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueuePeekImpl |
| MPU_xQueuePeek_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueuePeekImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueSemaphoreTakeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueSemaphoreTake_Unpriv |
| MPU_xQueueSemaphoreTake_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueSemaphoreTakeImpl |
| MPU_xQueueSemaphoreTake_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueSemaphoreTakeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) |
| |
| TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueGetMutexHolderImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueGetMutexHolder_Unpriv |
| MPU_xQueueGetMutexHolder_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueGetMutexHolderImpl |
| MPU_xQueueGetMutexHolder_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueGetMutexHolderImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_RECURSIVE_MUTEXES == 1 ) |
| |
| BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueTakeMutexRecursiveImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueTakeMutexRecursive_Unpriv |
| MPU_xQueueTakeMutexRecursive_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueTakeMutexRecursiveImpl |
| MPU_xQueueTakeMutexRecursive_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueTakeMutexRecursiveImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_RECURSIVE_MUTEXES == 1 ) |
| |
| BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueGiveMutexRecursiveImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueGiveMutexRecursive_Unpriv |
| MPU_xQueueGiveMutexRecursive_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueGiveMutexRecursiveImpl |
| MPU_xQueueGiveMutexRecursive_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueGiveMutexRecursiveImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_QUEUE_SETS == 1 ) |
| |
| QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, |
| const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, |
| const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueSelectFromSetImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueSelectFromSet_Unpriv |
| MPU_xQueueSelectFromSet_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueSelectFromSetImpl |
| MPU_xQueueSelectFromSet_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueSelectFromSetImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_QUEUE_SETS == 1 ) |
| |
| BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, |
| QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, |
| QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xQueueAddToSetImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xQueueAddToSet_Unpriv |
| MPU_xQueueAddToSet_Priv |
| pop { |
| r0 |
| } |
| b MPU_xQueueAddToSetImpl |
| MPU_xQueueAddToSet_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xQueueAddToSetImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configQUEUE_REGISTRY_SIZE > 0 ) |
| |
| void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, |
| const char * pcName ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, |
| const char * pcName ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vQueueAddToRegistryImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vQueueAddToRegistry_Unpriv |
| MPU_vQueueAddToRegistry_Priv |
| pop { |
| r0 |
| } |
| b MPU_vQueueAddToRegistryImpl |
| MPU_vQueueAddToRegistry_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vQueueAddToRegistryImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configQUEUE_REGISTRY_SIZE > 0 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configQUEUE_REGISTRY_SIZE > 0 ) |
| |
| void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vQueueUnregisterQueueImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vQueueUnregisterQueue_Unpriv |
| MPU_vQueueUnregisterQueue_Priv |
| pop { |
| r0 |
| } |
| b MPU_vQueueUnregisterQueueImpl |
| MPU_vQueueUnregisterQueue_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vQueueUnregisterQueueImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configQUEUE_REGISTRY_SIZE > 0 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configQUEUE_REGISTRY_SIZE > 0 ) |
| |
| const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL; |
| |
| __asm const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_pcQueueGetNameImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_pcQueueGetName_Unpriv |
| MPU_pcQueueGetName_Priv |
| pop { |
| r0 |
| } |
| b MPU_pcQueueGetNameImpl |
| MPU_pcQueueGetName_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_pcQueueGetNameImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configQUEUE_REGISTRY_SIZE > 0 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_pvTimerGetTimerIDImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_pvTimerGetTimerID_Unpriv |
| MPU_pvTimerGetTimerID_Priv |
| pop { |
| r0 |
| } |
| b MPU_pvTimerGetTimerIDImpl |
| MPU_pvTimerGetTimerID_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_pvTimerGetTimerIDImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| void MPU_vTimerSetTimerID( TimerHandle_t xTimer, |
| void * pvNewID ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTimerSetTimerID( TimerHandle_t xTimer, |
| void * pvNewID ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTimerSetTimerIDImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTimerSetTimerID_Unpriv |
| MPU_vTimerSetTimerID_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTimerSetTimerIDImpl |
| MPU_vTimerSetTimerID_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTimerSetTimerIDImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTimerIsTimerActiveImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTimerIsTimerActive_Unpriv |
| MPU_xTimerIsTimerActive_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTimerIsTimerActiveImpl |
| MPU_xTimerIsTimerActive_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTimerIsTimerActiveImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTimerGetTimerDaemonTaskHandleImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTimerGetTimerDaemonTaskHandle_Unpriv |
| MPU_xTimerGetTimerDaemonTaskHandle_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTimerGetTimerDaemonTaskHandleImpl |
| MPU_xTimerGetTimerDaemonTaskHandle_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTimerGetTimerDaemonTaskHandleImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| 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_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_xTimerGenericCommandFromTaskImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| 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_xTimerGenericCommandFromTaskImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_pcTimerGetNameImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_pcTimerGetName_Unpriv |
| MPU_pcTimerGetName_Priv |
| pop { |
| r0 |
| } |
| b MPU_pcTimerGetNameImpl |
| MPU_pcTimerGetName_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_pcTimerGetNameImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, |
| const BaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, |
| const BaseType_t uxAutoReload ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vTimerSetReloadModeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vTimerSetReloadMode_Unpriv |
| MPU_vTimerSetReloadMode_Priv |
| pop { |
| r0 |
| } |
| b MPU_vTimerSetReloadModeImpl |
| MPU_vTimerSetReloadMode_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vTimerSetReloadModeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTimerGetReloadModeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTimerGetReloadMode_Unpriv |
| MPU_xTimerGetReloadMode_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTimerGetReloadModeImpl |
| MPU_xTimerGetReloadMode_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTimerGetReloadModeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxTimerGetReloadModeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxTimerGetReloadMode_Unpriv |
| MPU_uxTimerGetReloadMode_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxTimerGetReloadModeImpl |
| MPU_uxTimerGetReloadMode_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxTimerGetReloadModeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTimerGetPeriodImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTimerGetPeriod_Unpriv |
| MPU_xTimerGetPeriod_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTimerGetPeriodImpl |
| MPU_xTimerGetPeriod_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTimerGetPeriodImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TIMERS == 1 ) |
| |
| TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xTimerGetExpiryTimeImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xTimerGetExpiryTime_Unpriv |
| MPU_xTimerGetExpiryTime_Priv |
| pop { |
| r0 |
| } |
| b MPU_xTimerGetExpiryTimeImpl |
| MPU_xTimerGetExpiryTime_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xTimerGetExpiryTimeImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /* if ( configUSE_TIMERS == 1 ) */ |
| /*-----------------------------------------------------------*/ |
| |
| EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToWaitFor, |
| const BaseType_t xClearOnExit, |
| const BaseType_t xWaitForAllBits, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToWaitFor, |
| const BaseType_t xClearOnExit, |
| const BaseType_t xWaitForAllBits, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xEventGroupWaitBitsImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xEventGroupWaitBits_Unpriv |
| MPU_xEventGroupWaitBits_Priv |
| pop { |
| r0 |
| } |
| b MPU_xEventGroupWaitBitsImpl |
| MPU_xEventGroupWaitBits_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER_1 |
| bl MPU_xEventGroupWaitBitsImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL; |
| |
| __asm EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToClear ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xEventGroupClearBitsImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xEventGroupClearBits_Unpriv |
| MPU_xEventGroupClearBits_Priv |
| pop { |
| r0 |
| } |
| b MPU_xEventGroupClearBitsImpl |
| MPU_xEventGroupClearBits_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xEventGroupClearBitsImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL; |
| |
| __asm EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToSet ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xEventGroupSetBitsImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xEventGroupSetBits_Unpriv |
| MPU_xEventGroupSetBits_Priv |
| pop { |
| r0 |
| } |
| b MPU_xEventGroupSetBitsImpl |
| MPU_xEventGroupSetBits_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xEventGroupSetBitsImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToSet, |
| const EventBits_t uxBitsToWaitFor, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, |
| const EventBits_t uxBitsToSet, |
| const EventBits_t uxBitsToWaitFor, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xEventGroupSyncImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xEventGroupSync_Unpriv |
| MPU_xEventGroupSync_Priv |
| pop { |
| r0 |
| } |
| b MPU_xEventGroupSyncImpl |
| MPU_xEventGroupSync_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xEventGroupSyncImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TRACE_FACILITY == 1 ) |
| |
| UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) FREERTOS_SYSTEM_CALL; |
| |
| __asm UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_uxEventGroupGetNumberImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_uxEventGroupGetNumber_Unpriv |
| MPU_uxEventGroupGetNumber_Priv |
| pop { |
| r0 |
| } |
| b MPU_uxEventGroupGetNumberImpl |
| MPU_uxEventGroupGetNumber_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_uxEventGroupGetNumberImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /*( configUSE_TRACE_FACILITY == 1 )*/ |
| /*-----------------------------------------------------------*/ |
| |
| #if ( configUSE_TRACE_FACILITY == 1 ) |
| |
| void MPU_vEventGroupSetNumber( void * xEventGroup, |
| UBaseType_t uxEventGroupNumber ) FREERTOS_SYSTEM_CALL; |
| |
| __asm void MPU_vEventGroupSetNumber( void * xEventGroup, |
| UBaseType_t uxEventGroupNumber ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_vEventGroupSetNumberImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_vEventGroupSetNumber_Unpriv |
| MPU_vEventGroupSetNumber_Priv |
| pop { |
| r0 |
| } |
| b MPU_vEventGroupSetNumberImpl |
| MPU_vEventGroupSetNumber_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_vEventGroupSetNumberImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| |
| #endif /*( configUSE_TRACE_FACILITY == 1 )*/ |
| /*-----------------------------------------------------------*/ |
| |
| size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, |
| const void * pvTxData, |
| size_t xDataLengthBytes, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, |
| const void * pvTxData, |
| size_t xDataLengthBytes, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferSendImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferSend_Unpriv |
| MPU_xStreamBufferSend_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferSendImpl |
| MPU_xStreamBufferSend_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferSendImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, |
| void * pvRxData, |
| size_t xBufferLengthBytes, |
| TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL; |
| |
| __asm size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, |
| void * pvRxData, |
| size_t xBufferLengthBytes, |
| TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferReceiveImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferReceive_Unpriv |
| MPU_xStreamBufferReceive_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferReceiveImpl |
| MPU_xStreamBufferReceive_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferReceiveImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferIsFullImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferIsFull_Unpriv |
| MPU_xStreamBufferIsFull_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferIsFullImpl |
| MPU_xStreamBufferIsFull_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferIsFullImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferIsEmptyImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferIsEmpty_Unpriv |
| MPU_xStreamBufferIsEmpty_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferIsEmptyImpl |
| MPU_xStreamBufferIsEmpty_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferIsEmptyImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferSpacesAvailableImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferSpacesAvailable_Unpriv |
| MPU_xStreamBufferSpacesAvailable_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferSpacesAvailableImpl |
| MPU_xStreamBufferSpacesAvailable_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferSpacesAvailableImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferBytesAvailableImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferBytesAvailable_Unpriv |
| MPU_xStreamBufferBytesAvailable_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferBytesAvailableImpl |
| MPU_xStreamBufferBytesAvailable_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferBytesAvailableImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, |
| size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL; |
| |
| __asm BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, |
| size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferSetTriggerLevelImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferSetTriggerLevel_Unpriv |
| MPU_xStreamBufferSetTriggerLevel_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferSetTriggerLevelImpl |
| MPU_xStreamBufferSetTriggerLevel_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferSetTriggerLevelImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL; |
| |
| __asm size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ |
| { |
| PRESERVE8 |
| extern MPU_xStreamBufferNextMessageLengthBytesImpl |
| |
| push { |
| r0 |
| } |
| mrs r0, control |
| tst r0, # 1 |
| bne MPU_xStreamBufferNextMessageLengthBytes_Unpriv |
| MPU_xStreamBufferNextMessageLengthBytes_Priv |
| pop { |
| r0 |
| } |
| b MPU_xStreamBufferNextMessageLengthBytesImpl |
| MPU_xStreamBufferNextMessageLengthBytes_Unpriv |
| pop { |
| r0 |
| } |
| svc # portSVC_SYSTEM_CALL_ENTER |
| bl MPU_xStreamBufferNextMessageLengthBytesImpl |
| svc # portSVC_SYSTEM_CALL_EXIT |
| bx lr |
| } |
| /*-----------------------------------------------------------*/ |
| |
| #endif /* configUSE_MPU_WRAPPERS_V1 == 0 */ |