Update system call entry mechanism (#898)

Earlier the System Call entry from an unprivileged task
looked like:

1. SVC for entering system call.
2. System call implementation.
3. SVC for exiting system call.

Now, the system call entry needs to make only one SVC
call and everything else is handled internally.

This PR also makes the following changes:

1. Update the Access Control List (ACL) mechanism to
    grant access to all the kernel objects before the
    scheduler is started.
2. Add one struct param for system calls with 5 parameters.
    This removes the need for special handling for system
    calls with 5 parameters.
3. Remove raise privilege SVC when MPU wrapper v2 is used.
4. Add additional run time parameter checks to MPU wrappers
    for xTaskGenericNotify and xQueueTakeMutexRecursive APIs.
This commit is contained in:
Gaurav-Aggarwal-AWS 2023-11-23 10:47:47 +05:30 committed by GitHub
parent 4ff01a7a4a
commit 76be28cdc6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
114 changed files with 7521 additions and 16320 deletions

View file

@ -38,6 +38,8 @@
#include "timers.h"
#include "event_groups.h"
#include "stream_buffer.h"
#include "mpu_prototypes.h"
#include "mpu_syscall_numbers.h"
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
/*-----------------------------------------------------------*/
@ -68,11 +70,8 @@
" MPU_xTaskDelayUntil_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskDelayUntilImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskDelayUntil ) : "memory"
);
}
@ -101,11 +100,8 @@
" MPU_xTaskAbortDelay_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskAbortDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskAbortDelay ) : "memory"
);
}
@ -134,11 +130,8 @@
" MPU_vTaskDelay_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskDelay ) : "memory"
);
}
@ -167,11 +160,8 @@
" MPU_uxTaskPriorityGet_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskPriorityGetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskPriorityGet ) : "memory"
);
}
@ -200,11 +190,8 @@
" MPU_eTaskGetState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_eTaskGetStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_eTaskGetState ) : "memory"
);
}
@ -239,11 +226,8 @@
" MPU_vTaskGetInfo_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskGetInfoImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskGetInfo ) : "memory"
);
}
@ -272,11 +256,8 @@
" MPU_xTaskGetIdleTaskHandle_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetIdleTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetIdleTaskHandle ) : "memory"
);
}
@ -305,11 +286,8 @@
" MPU_vTaskSuspend_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSuspendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSuspend ) : "memory"
);
}
@ -338,11 +316,8 @@
" MPU_vTaskResume_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskResumeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskResume ) : "memory"
);
}
@ -369,11 +344,8 @@
" MPU_xTaskGetTickCount_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetTickCountImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetTickCount ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -398,11 +370,8 @@
" MPU_uxTaskGetNumberOfTasks_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetNumberOfTasksImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetNumberOfTasks ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -429,11 +398,8 @@
" MPU_ulTaskGetRunTimeCounter_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimeCounter ) : "memory"
);
}
@ -462,11 +428,8 @@
" MPU_ulTaskGetRunTimePercent_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimePercent ) : "memory"
);
}
@ -495,11 +458,8 @@
" MPU_ulTaskGetIdleRunTimePercent_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimePercent ) : "memory"
);
}
@ -528,11 +488,8 @@
" MPU_ulTaskGetIdleRunTimeCounter_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimeCounter ) : "memory"
);
}
@ -563,11 +520,8 @@
" MPU_vTaskSetApplicationTaskTag_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetApplicationTaskTag ) : "memory"
);
}
@ -596,11 +550,8 @@
" MPU_xTaskGetApplicationTaskTag_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetApplicationTaskTag ) : "memory"
);
}
@ -633,11 +584,8 @@
" MPU_vTaskSetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetThreadLocalStoragePointer ) : "memory"
);
}
@ -668,11 +616,8 @@
" MPU_pvTaskGetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pvTaskGetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer ) : "memory"
);
}
@ -705,11 +650,8 @@
" MPU_uxTaskGetSystemState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetSystemStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetSystemState ) : "memory"
);
}
@ -738,11 +680,8 @@
" MPU_uxTaskGetStackHighWaterMark_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMarkImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark ) : "memory"
);
}
@ -771,11 +710,8 @@
" MPU_uxTaskGetStackHighWaterMark2_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMark2Impl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark2 ) : "memory"
);
}
@ -804,11 +740,8 @@
" MPU_xTaskGetCurrentTaskHandle_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetCurrentTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetCurrentTaskHandle ) : "memory"
);
}
@ -837,11 +770,8 @@
" MPU_xTaskGetSchedulerState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetSchedulerStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetSchedulerState ) : "memory"
);
}
@ -868,11 +798,8 @@
" MPU_vTaskSetTimeOutState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSetTimeOutStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetTimeOutState ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -899,28 +826,17 @@
" MPU_xTaskCheckForTimeOut_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskCheckForTimeOutImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskCheckForTimeOut ) : "memory"
);
}
/*-----------------------------------------------------------*/
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -938,11 +854,8 @@
" MPU_xTaskGenericNotify_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotify ) : "memory"
);
}
@ -951,17 +864,9 @@
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -979,11 +884,8 @@
" MPU_xTaskGenericNotifyWait_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyWaitImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyWait ) : "memory"
);
}
@ -1016,11 +918,8 @@
" MPU_ulTaskGenericNotifyTake_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyTake ) : "memory"
);
}
@ -1051,11 +950,8 @@
" MPU_xTaskGenericNotifyStateClear_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyStateClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyStateClear ) : "memory"
);
}
@ -1088,11 +984,8 @@
" MPU_ulTaskGenericNotifyValueClear_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyValueClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyValueClear ) : "memory"
);
}
@ -1125,11 +1018,8 @@
" MPU_xQueueGenericSend_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueGenericSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGenericSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1154,11 +1044,8 @@
" MPU_uxQueueMessagesWaiting_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxQueueMessagesWaitingImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueMessagesWaiting ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1183,11 +1070,8 @@
" MPU_uxQueueSpacesAvailable_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxQueueSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1216,11 +1100,8 @@
" MPU_xQueueReceive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1249,11 +1130,8 @@
" MPU_xQueuePeek_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueuePeekImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueuePeek ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1280,11 +1158,8 @@
" MPU_xQueueSemaphoreTake_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueSemaphoreTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSemaphoreTake ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1311,11 +1186,8 @@
" MPU_xQueueGetMutexHolder_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueGetMutexHolderImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGetMutexHolder ) : "memory"
);
}
@ -1346,11 +1218,8 @@
" MPU_xQueueTakeMutexRecursive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueTakeMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueTakeMutexRecursive ) : "memory"
);
}
@ -1379,11 +1248,8 @@
" MPU_xQueueGiveMutexRecursive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueGiveMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGiveMutexRecursive ) : "memory"
);
}
@ -1414,11 +1280,8 @@
" MPU_xQueueSelectFromSet_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueSelectFromSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSelectFromSet ) : "memory"
);
}
@ -1449,11 +1312,8 @@
" MPU_xQueueAddToSet_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueAddToSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueAddToSet ) : "memory"
);
}
@ -1484,11 +1344,8 @@
" MPU_vQueueAddToRegistry_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vQueueAddToRegistryImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueAddToRegistry ) : "memory"
);
}
@ -1517,11 +1374,8 @@
" MPU_vQueueUnregisterQueue_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vQueueUnregisterQueueImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueUnregisterQueue ) : "memory"
);
}
@ -1550,11 +1404,8 @@
" MPU_pcQueueGetName_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pcQueueGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcQueueGetName ) : "memory"
);
}
@ -1583,11 +1434,8 @@
" MPU_pvTimerGetTimerID_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pvTimerGetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTimerGetTimerID ) : "memory"
);
}
@ -1618,11 +1466,8 @@
" MPU_vTimerSetTimerID_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTimerSetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetTimerID ) : "memory"
);
}
@ -1651,11 +1496,8 @@
" MPU_xTimerIsTimerActive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerIsTimerActiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerIsTimerActive ) : "memory"
);
}
@ -1684,11 +1526,8 @@
" MPU_xTimerGetTimerDaemonTaskHandle_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetTimerDaemonTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle ) : "memory"
);
}
@ -1697,17 +1536,9 @@
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) __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_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1725,11 +1556,8 @@
" 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"
: : "i" ( SYSTEM_CALL_xTimerGenericCommandFromTask ) : "memory"
);
}
@ -1758,11 +1586,8 @@
" MPU_pcTimerGetName_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pcTimerGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcTimerGetName ) : "memory"
);
}
@ -1793,11 +1618,8 @@
" MPU_vTimerSetReloadMode_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTimerSetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetReloadMode ) : "memory"
);
}
@ -1826,11 +1648,8 @@
" MPU_xTimerGetReloadMode_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetReloadMode ) : "memory"
);
}
@ -1859,11 +1678,8 @@
" MPU_uxTimerGetReloadMode_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTimerGetReloadMode ) : "memory"
);
}
@ -1892,11 +1708,8 @@
" MPU_xTimerGetPeriod_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetPeriodImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetPeriod ) : "memory"
);
}
@ -1925,28 +1738,17 @@
" MPU_xTimerGetExpiryTime_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetExpiryTimeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetExpiryTime ) : "memory"
);
}
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToWaitFor,
const BaseType_t xClearOnExit,
const BaseType_t xWaitForAllBits,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1964,11 +1766,8 @@
" MPU_xEventGroupWaitBits_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupWaitBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupWaitBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1995,11 +1794,8 @@
" MPU_xEventGroupClearBits_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupClearBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupClearBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2026,11 +1822,8 @@
" MPU_xEventGroupSetBits_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupSetBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSetBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2061,11 +1854,8 @@
" MPU_xEventGroupSync_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupSyncImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSync ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2092,11 +1882,8 @@
" MPU_uxEventGroupGetNumber_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxEventGroupGetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxEventGroupGetNumber ) : "memory"
);
}
@ -2127,11 +1914,8 @@
" MPU_vEventGroupSetNumber_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vEventGroupSetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vEventGroupSetNumber ) : "memory"
);
}
@ -2164,11 +1948,8 @@
" MPU_xStreamBufferSend_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2199,11 +1980,8 @@
" MPU_xStreamBufferReceive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2228,11 +2006,8 @@
" MPU_xStreamBufferIsFull_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsFullImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsFull ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2257,11 +2032,8 @@
" MPU_xStreamBufferIsEmpty_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsEmptyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsEmpty ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2286,11 +2058,8 @@
" MPU_xStreamBufferSpacesAvailable_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2315,11 +2084,8 @@
" MPU_xStreamBufferBytesAvailable_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferBytesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferBytesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2346,11 +2112,8 @@
" MPU_xStreamBufferSetTriggerLevel_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSetTriggerLevelImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSetTriggerLevel ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2375,11 +2138,8 @@
" MPU_xStreamBufferNextMessageLengthBytes_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferNextMessageLengthBytesImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferNextMessageLengthBytes ) : "memory"
);
}
/*-----------------------------------------------------------*/

View file

@ -36,6 +36,9 @@
/* Portasm includes. */
#include "portasm.h"
/* System call numbers includes. */
#include "mpu_syscall_numbers.h"
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
* header files. */
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
@ -538,7 +541,6 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
".syntax unified \n"
".extern vPortSVCHandler_C \n"
".extern vSystemCallEnter \n"
".extern vSystemCallEnter_1 \n"
".extern vSystemCallExit \n"
" \n"
"movs r0, #4 \n"
@ -553,26 +555,22 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
" b route_svc \n"
" \n"
"route_svc: \n"
" ldr r2, [r0, #24] \n"
" subs r2, #2 \n"
" ldrb r3, [r2, #0] \n"
" cmp r3, %0 \n"
" beq system_call_enter \n"
" cmp r3, %1 \n"
" beq system_call_enter_1 \n"
" cmp r3, %2 \n"
" ldr r3, [r0, #24] \n"
" subs r3, #2 \n"
" ldrb r2, [r3, #0] \n"
" cmp r2, %0 \n"
" blt system_call_enter \n"
" cmp r2, %1 \n"
" beq system_call_exit \n"
" b vPortSVCHandler_C \n"
" \n"
"system_call_enter: \n"
" b vSystemCallEnter \n"
"system_call_enter_1: \n"
" b vSystemCallEnter_1 \n"
"system_call_exit: \n"
" b vSystemCallExit \n"
" \n"
: /* No outputs. */
: "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "r0", "r1", "r2", "r3", "memory"
);
}

View file

@ -38,6 +38,8 @@
#include "timers.h"
#include "event_groups.h"
#include "stream_buffer.h"
#include "mpu_prototypes.h"
#include "mpu_syscall_numbers.h"
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
/*-----------------------------------------------------------*/
@ -68,11 +70,8 @@
" MPU_xTaskDelayUntil_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskDelayUntilImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskDelayUntil ) : "memory"
);
}
@ -101,11 +100,8 @@
" MPU_xTaskAbortDelay_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskAbortDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskAbortDelay ) : "memory"
);
}
@ -134,11 +130,8 @@
" MPU_vTaskDelay_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskDelay ) : "memory"
);
}
@ -167,11 +160,8 @@
" MPU_uxTaskPriorityGet_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskPriorityGetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskPriorityGet ) : "memory"
);
}
@ -200,11 +190,8 @@
" MPU_eTaskGetState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_eTaskGetStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_eTaskGetState ) : "memory"
);
}
@ -239,11 +226,8 @@
" MPU_vTaskGetInfo_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskGetInfoImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskGetInfo ) : "memory"
);
}
@ -272,11 +256,8 @@
" MPU_xTaskGetIdleTaskHandle_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetIdleTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetIdleTaskHandle ) : "memory"
);
}
@ -305,11 +286,8 @@
" MPU_vTaskSuspend_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSuspendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSuspend ) : "memory"
);
}
@ -338,11 +316,8 @@
" MPU_vTaskResume_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskResumeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskResume ) : "memory"
);
}
@ -369,11 +344,8 @@
" MPU_xTaskGetTickCount_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetTickCountImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetTickCount ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -398,11 +370,8 @@
" MPU_uxTaskGetNumberOfTasks_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetNumberOfTasksImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetNumberOfTasks ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -429,11 +398,8 @@
" MPU_ulTaskGetRunTimeCounter_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimeCounter ) : "memory"
);
}
@ -462,11 +428,8 @@
" MPU_ulTaskGetRunTimePercent_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimePercent ) : "memory"
);
}
@ -495,11 +458,8 @@
" MPU_ulTaskGetIdleRunTimePercent_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimePercent ) : "memory"
);
}
@ -528,11 +488,8 @@
" MPU_ulTaskGetIdleRunTimeCounter_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimeCounter ) : "memory"
);
}
@ -563,11 +520,8 @@
" MPU_vTaskSetApplicationTaskTag_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetApplicationTaskTag ) : "memory"
);
}
@ -596,11 +550,8 @@
" MPU_xTaskGetApplicationTaskTag_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetApplicationTaskTag ) : "memory"
);
}
@ -633,11 +584,8 @@
" MPU_vTaskSetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetThreadLocalStoragePointer ) : "memory"
);
}
@ -668,11 +616,8 @@
" MPU_pvTaskGetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pvTaskGetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer ) : "memory"
);
}
@ -705,11 +650,8 @@
" MPU_uxTaskGetSystemState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetSystemStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetSystemState ) : "memory"
);
}
@ -738,11 +680,8 @@
" MPU_uxTaskGetStackHighWaterMark_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMarkImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark ) : "memory"
);
}
@ -771,11 +710,8 @@
" MPU_uxTaskGetStackHighWaterMark2_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMark2Impl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark2 ) : "memory"
);
}
@ -804,11 +740,8 @@
" MPU_xTaskGetCurrentTaskHandle_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetCurrentTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetCurrentTaskHandle ) : "memory"
);
}
@ -837,11 +770,8 @@
" MPU_xTaskGetSchedulerState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGetSchedulerStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetSchedulerState ) : "memory"
);
}
@ -868,11 +798,8 @@
" MPU_vTaskSetTimeOutState_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTaskSetTimeOutStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetTimeOutState ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -899,28 +826,17 @@
" MPU_xTaskCheckForTimeOut_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskCheckForTimeOutImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskCheckForTimeOut ) : "memory"
);
}
/*-----------------------------------------------------------*/
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -938,11 +854,8 @@
" MPU_xTaskGenericNotify_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotify ) : "memory"
);
}
@ -951,17 +864,9 @@
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -979,11 +884,8 @@
" MPU_xTaskGenericNotifyWait_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyWaitImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyWait ) : "memory"
);
}
@ -1016,11 +918,8 @@
" MPU_ulTaskGenericNotifyTake_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyTake ) : "memory"
);
}
@ -1051,11 +950,8 @@
" MPU_xTaskGenericNotifyStateClear_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyStateClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyStateClear ) : "memory"
);
}
@ -1088,11 +984,8 @@
" MPU_ulTaskGenericNotifyValueClear_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyValueClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyValueClear ) : "memory"
);
}
@ -1125,11 +1018,8 @@
" MPU_xQueueGenericSend_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueGenericSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGenericSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1154,11 +1044,8 @@
" MPU_uxQueueMessagesWaiting_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxQueueMessagesWaitingImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueMessagesWaiting ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1183,11 +1070,8 @@
" MPU_uxQueueSpacesAvailable_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxQueueSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1216,11 +1100,8 @@
" MPU_xQueueReceive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1249,11 +1130,8 @@
" MPU_xQueuePeek_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueuePeekImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueuePeek ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1280,11 +1158,8 @@
" MPU_xQueueSemaphoreTake_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueSemaphoreTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSemaphoreTake ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1311,11 +1186,8 @@
" MPU_xQueueGetMutexHolder_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueGetMutexHolderImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGetMutexHolder ) : "memory"
);
}
@ -1346,11 +1218,8 @@
" MPU_xQueueTakeMutexRecursive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueTakeMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueTakeMutexRecursive ) : "memory"
);
}
@ -1379,11 +1248,8 @@
" MPU_xQueueGiveMutexRecursive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueGiveMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGiveMutexRecursive ) : "memory"
);
}
@ -1414,11 +1280,8 @@
" MPU_xQueueSelectFromSet_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueSelectFromSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSelectFromSet ) : "memory"
);
}
@ -1449,11 +1312,8 @@
" MPU_xQueueAddToSet_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xQueueAddToSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueAddToSet ) : "memory"
);
}
@ -1484,11 +1344,8 @@
" MPU_vQueueAddToRegistry_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vQueueAddToRegistryImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueAddToRegistry ) : "memory"
);
}
@ -1517,11 +1374,8 @@
" MPU_vQueueUnregisterQueue_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vQueueUnregisterQueueImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueUnregisterQueue ) : "memory"
);
}
@ -1550,11 +1404,8 @@
" MPU_pcQueueGetName_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pcQueueGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcQueueGetName ) : "memory"
);
}
@ -1583,11 +1434,8 @@
" MPU_pvTimerGetTimerID_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pvTimerGetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTimerGetTimerID ) : "memory"
);
}
@ -1618,11 +1466,8 @@
" MPU_vTimerSetTimerID_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTimerSetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetTimerID ) : "memory"
);
}
@ -1651,11 +1496,8 @@
" MPU_xTimerIsTimerActive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerIsTimerActiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerIsTimerActive ) : "memory"
);
}
@ -1684,11 +1526,8 @@
" MPU_xTimerGetTimerDaemonTaskHandle_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetTimerDaemonTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle ) : "memory"
);
}
@ -1697,17 +1536,9 @@
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) __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_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1725,11 +1556,8 @@
" 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"
: : "i" ( SYSTEM_CALL_xTimerGenericCommandFromTask ) : "memory"
);
}
@ -1758,11 +1586,8 @@
" MPU_pcTimerGetName_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_pcTimerGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcTimerGetName ) : "memory"
);
}
@ -1793,11 +1618,8 @@
" MPU_vTimerSetReloadMode_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vTimerSetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetReloadMode ) : "memory"
);
}
@ -1826,11 +1648,8 @@
" MPU_xTimerGetReloadMode_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetReloadMode ) : "memory"
);
}
@ -1859,11 +1678,8 @@
" MPU_uxTimerGetReloadMode_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTimerGetReloadMode ) : "memory"
);
}
@ -1892,11 +1708,8 @@
" MPU_xTimerGetPeriod_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetPeriodImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetPeriod ) : "memory"
);
}
@ -1925,28 +1738,17 @@
" MPU_xTimerGetExpiryTime_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xTimerGetExpiryTimeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetExpiryTime ) : "memory"
);
}
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToWaitFor,
const BaseType_t xClearOnExit,
const BaseType_t xWaitForAllBits,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1964,11 +1766,8 @@
" MPU_xEventGroupWaitBits_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupWaitBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupWaitBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1995,11 +1794,8 @@
" MPU_xEventGroupClearBits_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupClearBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupClearBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2026,11 +1822,8 @@
" MPU_xEventGroupSetBits_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupSetBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSetBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2061,11 +1854,8 @@
" MPU_xEventGroupSync_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xEventGroupSyncImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSync ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2092,11 +1882,8 @@
" MPU_uxEventGroupGetNumber_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_uxEventGroupGetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxEventGroupGetNumber ) : "memory"
);
}
@ -2127,11 +1914,8 @@
" MPU_vEventGroupSetNumber_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_vEventGroupSetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vEventGroupSetNumber ) : "memory"
);
}
@ -2164,11 +1948,8 @@
" MPU_xStreamBufferSend_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2199,11 +1980,8 @@
" MPU_xStreamBufferReceive_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2228,11 +2006,8 @@
" MPU_xStreamBufferIsFull_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsFullImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsFull ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2257,11 +2032,8 @@
" MPU_xStreamBufferIsEmpty_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsEmptyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsEmpty ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2286,11 +2058,8 @@
" MPU_xStreamBufferSpacesAvailable_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2315,11 +2084,8 @@
" MPU_xStreamBufferBytesAvailable_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferBytesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferBytesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2346,11 +2112,8 @@
" MPU_xStreamBufferSetTriggerLevel_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSetTriggerLevelImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSetTriggerLevel ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2375,11 +2138,8 @@
" MPU_xStreamBufferNextMessageLengthBytes_Unpriv: \n"
" pop {r0, r1} \n"
" svc %0 \n"
" bl MPU_xStreamBufferNextMessageLengthBytesImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferNextMessageLengthBytes ) : "memory"
);
}
/*-----------------------------------------------------------*/

View file

@ -36,6 +36,9 @@
/* Portasm includes. */
#include "portasm.h"
/* System call numbers includes. */
#include "mpu_syscall_numbers.h"
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
* header files. */
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
@ -478,7 +481,6 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
".syntax unified \n"
".extern vPortSVCHandler_C \n"
".extern vSystemCallEnter \n"
".extern vSystemCallEnter_1 \n"
".extern vSystemCallExit \n"
" \n"
"movs r0, #4 \n"
@ -493,26 +495,22 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
" b route_svc \n"
" \n"
"route_svc: \n"
" ldr r2, [r0, #24] \n"
" subs r2, #2 \n"
" ldrb r3, [r2, #0] \n"
" cmp r3, %0 \n"
" beq system_call_enter \n"
" cmp r3, %1 \n"
" beq system_call_enter_1 \n"
" cmp r3, %2 \n"
" ldr r3, [r0, #24] \n"
" subs r3, #2 \n"
" ldrb r2, [r3, #0] \n"
" cmp r2, %0 \n"
" blt system_call_enter \n"
" cmp r2, %1 \n"
" beq system_call_exit \n"
" b vPortSVCHandler_C \n"
" \n"
"system_call_enter: \n"
" b vSystemCallEnter \n"
"system_call_enter_1: \n"
" b vSystemCallEnter_1 \n"
"system_call_exit: \n"
" b vSystemCallExit \n"
" \n"
: /* No outputs. */
: "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "r0", "r1", "r2", "r3", "memory"
);
}

View file

@ -38,6 +38,8 @@
#include "timers.h"
#include "event_groups.h"
#include "stream_buffer.h"
#include "mpu_prototypes.h"
#include "mpu_syscall_numbers.h"
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
/*-----------------------------------------------------------*/
@ -67,11 +69,8 @@
" MPU_xTaskDelayUntil_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskDelayUntilImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskDelayUntil ) : "memory"
);
}
@ -99,11 +98,8 @@
" MPU_xTaskAbortDelay_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskAbortDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskAbortDelay ) : "memory"
);
}
@ -131,11 +127,8 @@
" MPU_vTaskDelay_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskDelay ) : "memory"
);
}
@ -163,11 +156,8 @@
" MPU_uxTaskPriorityGet_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskPriorityGetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskPriorityGet ) : "memory"
);
}
@ -195,11 +185,8 @@
" MPU_eTaskGetState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_eTaskGetStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_eTaskGetState ) : "memory"
);
}
@ -233,11 +220,8 @@
" MPU_vTaskGetInfo_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskGetInfoImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskGetInfo ) : "memory"
);
}
@ -265,11 +249,8 @@
" MPU_xTaskGetIdleTaskHandle_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetIdleTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetIdleTaskHandle ) : "memory"
);
}
@ -297,11 +278,8 @@
" MPU_vTaskSuspend_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSuspendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSuspend ) : "memory"
);
}
@ -329,11 +307,8 @@
" MPU_vTaskResume_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskResumeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskResume ) : "memory"
);
}
@ -359,11 +334,8 @@
" MPU_xTaskGetTickCount_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetTickCountImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetTickCount ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -387,11 +359,8 @@
" MPU_uxTaskGetNumberOfTasks_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetNumberOfTasksImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetNumberOfTasks ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -417,11 +386,8 @@
" MPU_ulTaskGetRunTimeCounter_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimeCounter ) : "memory"
);
}
@ -449,11 +415,8 @@
" MPU_ulTaskGetRunTimePercent_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimePercent ) : "memory"
);
}
@ -481,11 +444,8 @@
" MPU_ulTaskGetIdleRunTimePercent_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimePercent ) : "memory"
);
}
@ -513,11 +473,8 @@
" MPU_ulTaskGetIdleRunTimeCounter_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimeCounter ) : "memory"
);
}
@ -547,11 +504,8 @@
" MPU_vTaskSetApplicationTaskTag_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetApplicationTaskTag ) : "memory"
);
}
@ -579,11 +533,8 @@
" MPU_xTaskGetApplicationTaskTag_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetApplicationTaskTag ) : "memory"
);
}
@ -615,11 +566,8 @@
" MPU_vTaskSetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetThreadLocalStoragePointer ) : "memory"
);
}
@ -649,11 +597,8 @@
" MPU_pvTaskGetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pvTaskGetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer ) : "memory"
);
}
@ -685,11 +630,8 @@
" MPU_uxTaskGetSystemState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetSystemStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetSystemState ) : "memory"
);
}
@ -717,11 +659,8 @@
" MPU_uxTaskGetStackHighWaterMark_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMarkImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark ) : "memory"
);
}
@ -749,11 +688,8 @@
" MPU_uxTaskGetStackHighWaterMark2_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMark2Impl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark2 ) : "memory"
);
}
@ -781,11 +717,8 @@
" MPU_xTaskGetCurrentTaskHandle_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetCurrentTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetCurrentTaskHandle ) : "memory"
);
}
@ -813,11 +746,8 @@
" MPU_xTaskGetSchedulerState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetSchedulerStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetSchedulerState ) : "memory"
);
}
@ -843,11 +773,8 @@
" MPU_vTaskSetTimeOutState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSetTimeOutStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetTimeOutState ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -873,28 +800,17 @@
" MPU_xTaskCheckForTimeOut_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskCheckForTimeOutImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskCheckForTimeOut ) : "memory"
);
}
/*-----------------------------------------------------------*/
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -911,11 +827,8 @@
" MPU_xTaskGenericNotify_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotify ) : "memory"
);
}
@ -924,17 +837,9 @@
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -951,11 +856,8 @@
" MPU_xTaskGenericNotifyWait_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyWaitImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyWait ) : "memory"
);
}
@ -987,11 +889,8 @@
" MPU_ulTaskGenericNotifyTake_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyTake ) : "memory"
);
}
@ -1021,11 +920,8 @@
" MPU_xTaskGenericNotifyStateClear_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyStateClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyStateClear ) : "memory"
);
}
@ -1057,11 +953,8 @@
" MPU_ulTaskGenericNotifyValueClear_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyValueClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyValueClear ) : "memory"
);
}
@ -1093,11 +986,8 @@
" MPU_xQueueGenericSend_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueGenericSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGenericSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1121,11 +1011,8 @@
" MPU_uxQueueMessagesWaiting_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxQueueMessagesWaitingImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueMessagesWaiting ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1149,11 +1036,8 @@
" MPU_uxQueueSpacesAvailable_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxQueueSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1181,11 +1065,8 @@
" MPU_xQueueReceive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1213,11 +1094,8 @@
" MPU_xQueuePeek_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueuePeekImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueuePeek ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1243,11 +1121,8 @@
" MPU_xQueueSemaphoreTake_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueSemaphoreTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSemaphoreTake ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1273,11 +1148,8 @@
" MPU_xQueueGetMutexHolder_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueGetMutexHolderImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGetMutexHolder ) : "memory"
);
}
@ -1307,11 +1179,8 @@
" MPU_xQueueTakeMutexRecursive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueTakeMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueTakeMutexRecursive ) : "memory"
);
}
@ -1339,11 +1208,8 @@
" MPU_xQueueGiveMutexRecursive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueGiveMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGiveMutexRecursive ) : "memory"
);
}
@ -1373,11 +1239,8 @@
" MPU_xQueueSelectFromSet_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueSelectFromSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSelectFromSet ) : "memory"
);
}
@ -1407,11 +1270,8 @@
" MPU_xQueueAddToSet_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueAddToSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueAddToSet ) : "memory"
);
}
@ -1441,11 +1301,8 @@
" MPU_vQueueAddToRegistry_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vQueueAddToRegistryImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueAddToRegistry ) : "memory"
);
}
@ -1473,11 +1330,8 @@
" MPU_vQueueUnregisterQueue_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vQueueUnregisterQueueImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueUnregisterQueue ) : "memory"
);
}
@ -1505,11 +1359,8 @@
" MPU_pcQueueGetName_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pcQueueGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcQueueGetName ) : "memory"
);
}
@ -1537,11 +1388,8 @@
" MPU_pvTimerGetTimerID_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pvTimerGetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTimerGetTimerID ) : "memory"
);
}
@ -1571,11 +1419,8 @@
" MPU_vTimerSetTimerID_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTimerSetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetTimerID ) : "memory"
);
}
@ -1603,11 +1448,8 @@
" MPU_xTimerIsTimerActive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerIsTimerActiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerIsTimerActive ) : "memory"
);
}
@ -1635,11 +1477,8 @@
" MPU_xTimerGetTimerDaemonTaskHandle_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetTimerDaemonTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle ) : "memory"
);
}
@ -1648,17 +1487,9 @@
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) __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_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1675,11 +1506,8 @@
" 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"
: : "i" ( SYSTEM_CALL_xTimerGenericCommandFromTask ) : "memory"
);
}
@ -1707,11 +1535,8 @@
" MPU_pcTimerGetName_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pcTimerGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcTimerGetName ) : "memory"
);
}
@ -1741,11 +1566,8 @@
" MPU_vTimerSetReloadMode_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTimerSetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetReloadMode ) : "memory"
);
}
@ -1773,11 +1595,8 @@
" MPU_xTimerGetReloadMode_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetReloadMode ) : "memory"
);
}
@ -1805,11 +1624,8 @@
" MPU_uxTimerGetReloadMode_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTimerGetReloadMode ) : "memory"
);
}
@ -1837,11 +1653,8 @@
" MPU_xTimerGetPeriod_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetPeriodImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetPeriod ) : "memory"
);
}
@ -1869,28 +1682,17 @@
" MPU_xTimerGetExpiryTime_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetExpiryTimeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetExpiryTime ) : "memory"
);
}
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToWaitFor,
const BaseType_t xClearOnExit,
const BaseType_t xWaitForAllBits,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1907,11 +1709,8 @@
" MPU_xEventGroupWaitBits_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupWaitBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupWaitBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1937,11 +1736,8 @@
" MPU_xEventGroupClearBits_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupClearBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupClearBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1967,11 +1763,8 @@
" MPU_xEventGroupSetBits_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupSetBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSetBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2001,11 +1794,8 @@
" MPU_xEventGroupSync_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupSyncImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSync ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2031,11 +1821,8 @@
" MPU_uxEventGroupGetNumber_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxEventGroupGetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxEventGroupGetNumber ) : "memory"
);
}
@ -2065,11 +1852,8 @@
" MPU_vEventGroupSetNumber_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vEventGroupSetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vEventGroupSetNumber ) : "memory"
);
}
@ -2101,11 +1885,8 @@
" MPU_xStreamBufferSend_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2135,11 +1916,8 @@
" MPU_xStreamBufferReceive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2163,11 +1941,8 @@
" MPU_xStreamBufferIsFull_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsFullImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsFull ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2191,11 +1966,8 @@
" MPU_xStreamBufferIsEmpty_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsEmptyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsEmpty ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2219,11 +1991,8 @@
" MPU_xStreamBufferSpacesAvailable_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2247,11 +2016,8 @@
" MPU_xStreamBufferBytesAvailable_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferBytesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferBytesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2277,11 +2043,8 @@
" MPU_xStreamBufferSetTriggerLevel_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSetTriggerLevelImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSetTriggerLevel ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2305,11 +2068,8 @@
" MPU_xStreamBufferNextMessageLengthBytes_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferNextMessageLengthBytesImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferNextMessageLengthBytes ) : "memory"
);
}
/*-----------------------------------------------------------*/

View file

@ -36,6 +36,9 @@
/* Portasm includes. */
#include "portasm.h"
/* System call numbers includes. */
#include "mpu_syscall_numbers.h"
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
* header files. */
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
@ -522,7 +525,6 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
".syntax unified \n"
".extern vPortSVCHandler_C \n"
".extern vSystemCallEnter \n"
".extern vSystemCallEnter_1 \n"
".extern vSystemCallExit \n"
" \n"
"tst lr, #4 \n"
@ -533,10 +535,8 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
"ldr r1, [r0, #24] \n"
"ldrb r2, [r1, #-2] \n"
"cmp r2, %0 \n"
"beq syscall_enter \n"
"blt syscall_enter \n"
"cmp r2, %1 \n"
"beq syscall_enter_1 \n"
"cmp r2, %2 \n"
"beq syscall_exit \n"
"b vPortSVCHandler_C \n"
" \n"
@ -544,16 +544,12 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
" mov r1, lr \n"
" b vSystemCallEnter \n"
" \n"
"syscall_enter_1: \n"
" mov r1, lr \n"
" b vSystemCallEnter_1 \n"
" \n"
"syscall_exit: \n"
" mov r1, lr \n"
" b vSystemCallExit \n"
" \n"
: /* No outputs. */
: "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "r0", "r1", "r2", "memory"
);
}

View file

@ -38,6 +38,8 @@
#include "timers.h"
#include "event_groups.h"
#include "stream_buffer.h"
#include "mpu_prototypes.h"
#include "mpu_syscall_numbers.h"
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
/*-----------------------------------------------------------*/
@ -67,11 +69,8 @@
" MPU_xTaskDelayUntil_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskDelayUntilImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskDelayUntil ) : "memory"
);
}
@ -99,11 +98,8 @@
" MPU_xTaskAbortDelay_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskAbortDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskAbortDelay ) : "memory"
);
}
@ -131,11 +127,8 @@
" MPU_vTaskDelay_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskDelayImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskDelay ) : "memory"
);
}
@ -163,11 +156,8 @@
" MPU_uxTaskPriorityGet_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskPriorityGetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskPriorityGet ) : "memory"
);
}
@ -195,11 +185,8 @@
" MPU_eTaskGetState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_eTaskGetStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_eTaskGetState ) : "memory"
);
}
@ -233,11 +220,8 @@
" MPU_vTaskGetInfo_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskGetInfoImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskGetInfo ) : "memory"
);
}
@ -265,11 +249,8 @@
" MPU_xTaskGetIdleTaskHandle_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetIdleTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetIdleTaskHandle ) : "memory"
);
}
@ -297,11 +278,8 @@
" MPU_vTaskSuspend_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSuspendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSuspend ) : "memory"
);
}
@ -329,11 +307,8 @@
" MPU_vTaskResume_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskResumeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskResume ) : "memory"
);
}
@ -359,11 +334,8 @@
" MPU_xTaskGetTickCount_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetTickCountImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetTickCount ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -387,11 +359,8 @@
" MPU_uxTaskGetNumberOfTasks_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetNumberOfTasksImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetNumberOfTasks ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -417,11 +386,8 @@
" MPU_ulTaskGetRunTimeCounter_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimeCounter ) : "memory"
);
}
@ -449,11 +415,8 @@
" MPU_ulTaskGetRunTimePercent_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetRunTimePercent ) : "memory"
);
}
@ -481,11 +444,8 @@
" MPU_ulTaskGetIdleRunTimePercent_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimePercentImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimePercent ) : "memory"
);
}
@ -513,11 +473,8 @@
" MPU_ulTaskGetIdleRunTimeCounter_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGetIdleRunTimeCounterImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimeCounter ) : "memory"
);
}
@ -547,11 +504,8 @@
" MPU_vTaskSetApplicationTaskTag_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetApplicationTaskTag ) : "memory"
);
}
@ -579,11 +533,8 @@
" MPU_xTaskGetApplicationTaskTag_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetApplicationTaskTagImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetApplicationTaskTag ) : "memory"
);
}
@ -615,11 +566,8 @@
" MPU_vTaskSetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetThreadLocalStoragePointer ) : "memory"
);
}
@ -649,11 +597,8 @@
" MPU_pvTaskGetThreadLocalStoragePointer_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pvTaskGetThreadLocalStoragePointerImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer ) : "memory"
);
}
@ -685,11 +630,8 @@
" MPU_uxTaskGetSystemState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetSystemStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetSystemState ) : "memory"
);
}
@ -717,11 +659,8 @@
" MPU_uxTaskGetStackHighWaterMark_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMarkImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark ) : "memory"
);
}
@ -749,11 +688,8 @@
" MPU_uxTaskGetStackHighWaterMark2_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTaskGetStackHighWaterMark2Impl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark2 ) : "memory"
);
}
@ -781,11 +717,8 @@
" MPU_xTaskGetCurrentTaskHandle_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetCurrentTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetCurrentTaskHandle ) : "memory"
);
}
@ -813,11 +746,8 @@
" MPU_xTaskGetSchedulerState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGetSchedulerStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGetSchedulerState ) : "memory"
);
}
@ -843,11 +773,8 @@
" MPU_vTaskSetTimeOutState_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTaskSetTimeOutStateImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTaskSetTimeOutState ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -873,28 +800,17 @@
" MPU_xTaskCheckForTimeOut_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskCheckForTimeOutImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskCheckForTimeOut ) : "memory"
);
}
/*-----------------------------------------------------------*/
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
UBaseType_t uxIndexToNotify,
uint32_t ulValue,
eNotifyAction eAction,
uint32_t * pulPreviousNotificationValue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -911,11 +827,8 @@
" MPU_xTaskGenericNotify_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotify ) : "memory"
);
}
@ -924,17 +837,9 @@
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
uint32_t ulBitsToClearOnEntry,
uint32_t ulBitsToClearOnExit,
uint32_t * pulNotificationValue,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -951,11 +856,8 @@
" MPU_xTaskGenericNotifyWait_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyWaitImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyWait ) : "memory"
);
}
@ -987,11 +889,8 @@
" MPU_ulTaskGenericNotifyTake_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyTake ) : "memory"
);
}
@ -1021,11 +920,8 @@
" MPU_xTaskGenericNotifyStateClear_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTaskGenericNotifyStateClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTaskGenericNotifyStateClear ) : "memory"
);
}
@ -1057,11 +953,8 @@
" MPU_ulTaskGenericNotifyValueClear_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_ulTaskGenericNotifyValueClearImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_ulTaskGenericNotifyValueClear ) : "memory"
);
}
@ -1093,11 +986,8 @@
" MPU_xQueueGenericSend_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueGenericSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGenericSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1121,11 +1011,8 @@
" MPU_uxQueueMessagesWaiting_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxQueueMessagesWaitingImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueMessagesWaiting ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1149,11 +1036,8 @@
" MPU_uxQueueSpacesAvailable_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxQueueSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxQueueSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1181,11 +1065,8 @@
" MPU_xQueueReceive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1213,11 +1094,8 @@
" MPU_xQueuePeek_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueuePeekImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueuePeek ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1243,11 +1121,8 @@
" MPU_xQueueSemaphoreTake_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueSemaphoreTakeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSemaphoreTake ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1273,11 +1148,8 @@
" MPU_xQueueGetMutexHolder_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueGetMutexHolderImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGetMutexHolder ) : "memory"
);
}
@ -1307,11 +1179,8 @@
" MPU_xQueueTakeMutexRecursive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueTakeMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueTakeMutexRecursive ) : "memory"
);
}
@ -1339,11 +1208,8 @@
" MPU_xQueueGiveMutexRecursive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueGiveMutexRecursiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueGiveMutexRecursive ) : "memory"
);
}
@ -1373,11 +1239,8 @@
" MPU_xQueueSelectFromSet_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueSelectFromSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueSelectFromSet ) : "memory"
);
}
@ -1407,11 +1270,8 @@
" MPU_xQueueAddToSet_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xQueueAddToSetImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xQueueAddToSet ) : "memory"
);
}
@ -1441,11 +1301,8 @@
" MPU_vQueueAddToRegistry_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vQueueAddToRegistryImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueAddToRegistry ) : "memory"
);
}
@ -1473,11 +1330,8 @@
" MPU_vQueueUnregisterQueue_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vQueueUnregisterQueueImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vQueueUnregisterQueue ) : "memory"
);
}
@ -1505,11 +1359,8 @@
" MPU_pcQueueGetName_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pcQueueGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcQueueGetName ) : "memory"
);
}
@ -1537,11 +1388,8 @@
" MPU_pvTimerGetTimerID_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pvTimerGetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pvTimerGetTimerID ) : "memory"
);
}
@ -1571,11 +1419,8 @@
" MPU_vTimerSetTimerID_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTimerSetTimerIDImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetTimerID ) : "memory"
);
}
@ -1603,11 +1448,8 @@
" MPU_xTimerIsTimerActive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerIsTimerActiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerIsTimerActive ) : "memory"
);
}
@ -1635,11 +1477,8 @@
" MPU_xTimerGetTimerDaemonTaskHandle_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetTimerDaemonTaskHandleImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle ) : "memory"
);
}
@ -1648,17 +1487,9 @@
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) __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_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1675,11 +1506,8 @@
" 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"
: : "i" ( SYSTEM_CALL_xTimerGenericCommandFromTask ) : "memory"
);
}
@ -1707,11 +1535,8 @@
" MPU_pcTimerGetName_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_pcTimerGetNameImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_pcTimerGetName ) : "memory"
);
}
@ -1741,11 +1566,8 @@
" MPU_vTimerSetReloadMode_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vTimerSetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vTimerSetReloadMode ) : "memory"
);
}
@ -1773,11 +1595,8 @@
" MPU_xTimerGetReloadMode_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetReloadMode ) : "memory"
);
}
@ -1805,11 +1624,8 @@
" MPU_uxTimerGetReloadMode_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxTimerGetReloadModeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxTimerGetReloadMode ) : "memory"
);
}
@ -1837,11 +1653,8 @@
" MPU_xTimerGetPeriod_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetPeriodImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetPeriod ) : "memory"
);
}
@ -1869,28 +1682,17 @@
" MPU_xTimerGetExpiryTime_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xTimerGetExpiryTimeImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xTimerGetExpiryTime ) : "memory"
);
}
#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 ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL;
EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
const EventBits_t uxBitsToWaitFor,
const BaseType_t xClearOnExit,
const BaseType_t xWaitForAllBits,
TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */
{
__asm volatile
(
@ -1907,11 +1709,8 @@
" MPU_xEventGroupWaitBits_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupWaitBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupWaitBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1937,11 +1736,8 @@
" MPU_xEventGroupClearBits_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupClearBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupClearBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -1967,11 +1763,8 @@
" MPU_xEventGroupSetBits_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupSetBitsImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSetBits ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2001,11 +1794,8 @@
" MPU_xEventGroupSync_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xEventGroupSyncImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xEventGroupSync ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2031,11 +1821,8 @@
" MPU_uxEventGroupGetNumber_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_uxEventGroupGetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_uxEventGroupGetNumber ) : "memory"
);
}
@ -2065,11 +1852,8 @@
" MPU_vEventGroupSetNumber_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_vEventGroupSetNumberImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_vEventGroupSetNumber ) : "memory"
);
}
@ -2101,11 +1885,8 @@
" MPU_xStreamBufferSend_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSendImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSend ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2135,11 +1916,8 @@
" MPU_xStreamBufferReceive_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferReceiveImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferReceive ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2163,11 +1941,8 @@
" MPU_xStreamBufferIsFull_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsFullImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsFull ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2191,11 +1966,8 @@
" MPU_xStreamBufferIsEmpty_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferIsEmptyImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferIsEmpty ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2219,11 +1991,8 @@
" MPU_xStreamBufferSpacesAvailable_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSpacesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSpacesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2247,11 +2016,8 @@
" MPU_xStreamBufferBytesAvailable_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferBytesAvailableImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferBytesAvailable ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2277,11 +2043,8 @@
" MPU_xStreamBufferSetTriggerLevel_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferSetTriggerLevelImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferSetTriggerLevel ) : "memory"
);
}
/*-----------------------------------------------------------*/
@ -2305,11 +2068,8 @@
" MPU_xStreamBufferNextMessageLengthBytes_Unpriv: \n"
" pop {r0} \n"
" svc %0 \n"
" bl MPU_xStreamBufferNextMessageLengthBytesImpl \n"
" svc %1 \n"
" bx lr \n"
" \n"
: : "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory"
: : "i" ( SYSTEM_CALL_xStreamBufferNextMessageLengthBytes ) : "memory"
);
}
/*-----------------------------------------------------------*/

View file

@ -36,6 +36,9 @@
/* Portasm includes. */
#include "portasm.h"
/* System call numbers includes. */
#include "mpu_syscall_numbers.h"
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
* header files. */
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
@ -443,7 +446,6 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
".syntax unified \n"
".extern vPortSVCHandler_C \n"
".extern vSystemCallEnter \n"
".extern vSystemCallEnter_1 \n"
".extern vSystemCallExit \n"
" \n"
"tst lr, #4 \n"
@ -454,10 +456,8 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
"ldr r1, [r0, #24] \n"
"ldrb r2, [r1, #-2] \n"
"cmp r2, %0 \n"
"beq syscall_enter \n"
"blt syscall_enter \n"
"cmp r2, %1 \n"
"beq syscall_enter_1 \n"
"cmp r2, %2 \n"
"beq syscall_exit \n"
"b vPortSVCHandler_C \n"
" \n"
@ -465,16 +465,12 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
" mov r1, lr \n"
" b vSystemCallEnter \n"
" \n"
"syscall_enter_1: \n"
" mov r1, lr \n"
" b vSystemCallEnter_1 \n"
" \n"
"syscall_exit: \n"
" mov r1, lr \n"
" b vSystemCallExit \n"
" \n"
: /* No outputs. */
: "i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
: "r0", "r1", "r2", "memory"
);
}