1 /* 2 * FreeRTOS Kernel V11.0.1 3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. 4 * 5 * SPDX-License-Identifier: MIT 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy of 8 * this software and associated documentation files (the "Software"), to deal in 9 * the Software without restriction, including without limitation the rights to 10 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 11 * the Software, and to permit persons to whom the Software is furnished to do so, 12 * subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included in all 15 * copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 19 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 20 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 21 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * https://www.FreeRTOS.org 25 * https://github.com/FreeRTOS 26 * 27 */ 28 29 /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining 30 * all the API functions to use the MPU wrappers. That should only be done when 31 * task.h is included from an application file. */ 32 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE 33 34 /* Scheduler includes. */ 35 #include "FreeRTOS.h" 36 #include "task.h" 37 #include "queue.h" 38 #include "timers.h" 39 #include "event_groups.h" 40 #include "stream_buffer.h" 41 #include "mpu_prototypes.h" 42 #include "mpu_syscall_numbers.h" 43 44 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE 45 /*-----------------------------------------------------------*/ 46 47 #if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) ) 48 49 #if ( INCLUDE_xTaskDelayUntil == 1 ) 50 51 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime, 52 const TickType_t xTimeIncrement ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 53 MPU_xTaskDelayUntil(TickType_t * const pxPreviousWakeTime,const TickType_t xTimeIncrement)54 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime, 55 const TickType_t xTimeIncrement ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 56 { 57 __asm volatile 58 ( 59 " .syntax unified \n" 60 " .extern MPU_xTaskDelayUntilImpl \n" 61 " \n" 62 " push {r0} \n" 63 " mrs r0, control \n" 64 " tst r0, #1 \n" 65 " bne MPU_xTaskDelayUntil_Unpriv \n" 66 " MPU_xTaskDelayUntil_Priv: \n" 67 " pop {r0} \n" 68 " b MPU_xTaskDelayUntilImpl \n" 69 " MPU_xTaskDelayUntil_Unpriv: \n" 70 " pop {r0} \n" 71 " svc %0 \n" 72 " \n" 73 : : "i" ( SYSTEM_CALL_xTaskDelayUntil ) : "memory" 74 ); 75 } 76 77 #endif /* if ( INCLUDE_xTaskDelayUntil == 1 ) */ 78 /*-----------------------------------------------------------*/ 79 80 #if ( INCLUDE_xTaskAbortDelay == 1 ) 81 82 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 83 MPU_xTaskAbortDelay(TaskHandle_t xTask)84 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 85 { 86 __asm volatile 87 ( 88 " .syntax unified \n" 89 " .extern MPU_xTaskAbortDelayImpl \n" 90 " \n" 91 " push {r0} \n" 92 " mrs r0, control \n" 93 " tst r0, #1 \n" 94 " bne MPU_xTaskAbortDelay_Unpriv \n" 95 " MPU_xTaskAbortDelay_Priv: \n" 96 " pop {r0} \n" 97 " b MPU_xTaskAbortDelayImpl \n" 98 " MPU_xTaskAbortDelay_Unpriv: \n" 99 " pop {r0} \n" 100 " svc %0 \n" 101 " \n" 102 : : "i" ( SYSTEM_CALL_xTaskAbortDelay ) : "memory" 103 ); 104 } 105 106 #endif /* if ( INCLUDE_xTaskAbortDelay == 1 ) */ 107 /*-----------------------------------------------------------*/ 108 109 #if ( INCLUDE_vTaskDelay == 1 ) 110 111 void MPU_vTaskDelay( const TickType_t xTicksToDelay ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 112 MPU_vTaskDelay(const TickType_t xTicksToDelay)113 void MPU_vTaskDelay( const TickType_t xTicksToDelay ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 114 { 115 __asm volatile 116 ( 117 " .syntax unified \n" 118 " .extern MPU_vTaskDelayImpl \n" 119 " \n" 120 " push {r0} \n" 121 " mrs r0, control \n" 122 " tst r0, #1 \n" 123 " bne MPU_vTaskDelay_Unpriv \n" 124 " MPU_vTaskDelay_Priv: \n" 125 " pop {r0} \n" 126 " b MPU_vTaskDelayImpl \n" 127 " MPU_vTaskDelay_Unpriv: \n" 128 " pop {r0} \n" 129 " svc %0 \n" 130 " \n" 131 : : "i" ( SYSTEM_CALL_vTaskDelay ) : "memory" 132 ); 133 } 134 135 #endif /* if ( INCLUDE_vTaskDelay == 1 ) */ 136 /*-----------------------------------------------------------*/ 137 138 #if ( INCLUDE_uxTaskPriorityGet == 1 ) 139 140 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 141 MPU_uxTaskPriorityGet(const TaskHandle_t xTask)142 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 143 { 144 __asm volatile 145 ( 146 " .syntax unified \n" 147 " .extern MPU_uxTaskPriorityGetImpl \n" 148 " \n" 149 " push {r0} \n" 150 " mrs r0, control \n" 151 " tst r0, #1 \n" 152 " bne MPU_uxTaskPriorityGet_Unpriv \n" 153 " MPU_uxTaskPriorityGet_Priv: \n" 154 " pop {r0} \n" 155 " b MPU_uxTaskPriorityGetImpl \n" 156 " MPU_uxTaskPriorityGet_Unpriv: \n" 157 " pop {r0} \n" 158 " svc %0 \n" 159 " \n" 160 : : "i" ( SYSTEM_CALL_uxTaskPriorityGet ) : "memory" 161 ); 162 } 163 164 #endif /* if ( INCLUDE_uxTaskPriorityGet == 1 ) */ 165 /*-----------------------------------------------------------*/ 166 167 #if ( INCLUDE_eTaskGetState == 1 ) 168 169 eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 170 MPU_eTaskGetState(TaskHandle_t xTask)171 eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 172 { 173 __asm volatile 174 ( 175 " .syntax unified \n" 176 " .extern MPU_eTaskGetStateImpl \n" 177 " \n" 178 " push {r0} \n" 179 " mrs r0, control \n" 180 " tst r0, #1 \n" 181 " bne MPU_eTaskGetState_Unpriv \n" 182 " MPU_eTaskGetState_Priv: \n" 183 " pop {r0} \n" 184 " b MPU_eTaskGetStateImpl \n" 185 " MPU_eTaskGetState_Unpriv: \n" 186 " pop {r0} \n" 187 " svc %0 \n" 188 " \n" 189 : : "i" ( SYSTEM_CALL_eTaskGetState ) : "memory" 190 ); 191 } 192 193 #endif /* if ( INCLUDE_eTaskGetState == 1 ) */ 194 /*-----------------------------------------------------------*/ 195 196 #if ( configUSE_TRACE_FACILITY == 1 ) 197 198 void MPU_vTaskGetInfo( TaskHandle_t xTask, 199 TaskStatus_t * pxTaskStatus, 200 BaseType_t xGetFreeStackSpace, 201 eTaskState eState ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 202 MPU_vTaskGetInfo(TaskHandle_t xTask,TaskStatus_t * pxTaskStatus,BaseType_t xGetFreeStackSpace,eTaskState eState)203 void MPU_vTaskGetInfo( TaskHandle_t xTask, 204 TaskStatus_t * pxTaskStatus, 205 BaseType_t xGetFreeStackSpace, 206 eTaskState eState ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 207 { 208 __asm volatile 209 ( 210 " .syntax unified \n" 211 " .extern MPU_vTaskGetInfoImpl \n" 212 " \n" 213 " push {r0} \n" 214 " mrs r0, control \n" 215 " tst r0, #1 \n" 216 " bne MPU_vTaskGetInfo_Unpriv \n" 217 " MPU_vTaskGetInfo_Priv: \n" 218 " pop {r0} \n" 219 " b MPU_vTaskGetInfoImpl \n" 220 " MPU_vTaskGetInfo_Unpriv: \n" 221 " pop {r0} \n" 222 " svc %0 \n" 223 " \n" 224 : : "i" ( SYSTEM_CALL_vTaskGetInfo ) : "memory" 225 ); 226 } 227 228 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */ 229 /*-----------------------------------------------------------*/ 230 231 #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) 232 233 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 234 MPU_xTaskGetIdleTaskHandle(void)235 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 236 { 237 __asm volatile 238 ( 239 " .syntax unified \n" 240 " .extern MPU_xTaskGetIdleTaskHandleImpl \n" 241 " \n" 242 " push {r0} \n" 243 " mrs r0, control \n" 244 " tst r0, #1 \n" 245 " bne MPU_xTaskGetIdleTaskHandle_Unpriv \n" 246 " MPU_xTaskGetIdleTaskHandle_Priv: \n" 247 " pop {r0} \n" 248 " b MPU_xTaskGetIdleTaskHandleImpl \n" 249 " MPU_xTaskGetIdleTaskHandle_Unpriv: \n" 250 " pop {r0} \n" 251 " svc %0 \n" 252 " \n" 253 : : "i" ( SYSTEM_CALL_xTaskGetIdleTaskHandle ) : "memory" 254 ); 255 } 256 257 #endif /* if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) */ 258 /*-----------------------------------------------------------*/ 259 260 #if ( INCLUDE_vTaskSuspend == 1 ) 261 262 void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 263 MPU_vTaskSuspend(TaskHandle_t xTaskToSuspend)264 void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 265 { 266 __asm volatile 267 ( 268 " .syntax unified \n" 269 " .extern MPU_vTaskSuspendImpl \n" 270 " \n" 271 " push {r0} \n" 272 " mrs r0, control \n" 273 " tst r0, #1 \n" 274 " bne MPU_vTaskSuspend_Unpriv \n" 275 " MPU_vTaskSuspend_Priv: \n" 276 " pop {r0} \n" 277 " b MPU_vTaskSuspendImpl \n" 278 " MPU_vTaskSuspend_Unpriv: \n" 279 " pop {r0} \n" 280 " svc %0 \n" 281 " \n" 282 : : "i" ( SYSTEM_CALL_vTaskSuspend ) : "memory" 283 ); 284 } 285 286 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */ 287 /*-----------------------------------------------------------*/ 288 289 #if ( INCLUDE_vTaskSuspend == 1 ) 290 291 void MPU_vTaskResume( TaskHandle_t xTaskToResume ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 292 MPU_vTaskResume(TaskHandle_t xTaskToResume)293 void MPU_vTaskResume( TaskHandle_t xTaskToResume ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 294 { 295 __asm volatile 296 ( 297 " .syntax unified \n" 298 " .extern MPU_vTaskResumeImpl \n" 299 " \n" 300 " push {r0} \n" 301 " mrs r0, control \n" 302 " tst r0, #1 \n" 303 " bne MPU_vTaskResume_Unpriv \n" 304 " MPU_vTaskResume_Priv: \n" 305 " pop {r0} \n" 306 " b MPU_vTaskResumeImpl \n" 307 " MPU_vTaskResume_Unpriv: \n" 308 " pop {r0} \n" 309 " svc %0 \n" 310 " \n" 311 : : "i" ( SYSTEM_CALL_vTaskResume ) : "memory" 312 ); 313 } 314 315 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */ 316 /*-----------------------------------------------------------*/ 317 318 TickType_t MPU_xTaskGetTickCount( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 319 MPU_xTaskGetTickCount(void)320 TickType_t MPU_xTaskGetTickCount( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 321 { 322 __asm volatile 323 ( 324 " .syntax unified \n" 325 " .extern MPU_xTaskGetTickCountImpl \n" 326 " \n" 327 " push {r0} \n" 328 " mrs r0, control \n" 329 " tst r0, #1 \n" 330 " bne MPU_xTaskGetTickCount_Unpriv \n" 331 " MPU_xTaskGetTickCount_Priv: \n" 332 " pop {r0} \n" 333 " b MPU_xTaskGetTickCountImpl \n" 334 " MPU_xTaskGetTickCount_Unpriv: \n" 335 " pop {r0} \n" 336 " svc %0 \n" 337 " \n" 338 : : "i" ( SYSTEM_CALL_xTaskGetTickCount ) : "memory" 339 ); 340 } 341 /*-----------------------------------------------------------*/ 342 343 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 344 MPU_uxTaskGetNumberOfTasks(void)345 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 346 { 347 __asm volatile 348 ( 349 " .syntax unified \n" 350 " .extern MPU_uxTaskGetNumberOfTasksImpl \n" 351 " \n" 352 " push {r0} \n" 353 " mrs r0, control \n" 354 " tst r0, #1 \n" 355 " bne MPU_uxTaskGetNumberOfTasks_Unpriv \n" 356 " MPU_uxTaskGetNumberOfTasks_Priv: \n" 357 " pop {r0} \n" 358 " b MPU_uxTaskGetNumberOfTasksImpl \n" 359 " MPU_uxTaskGetNumberOfTasks_Unpriv: \n" 360 " pop {r0} \n" 361 " svc %0 \n" 362 " \n" 363 : : "i" ( SYSTEM_CALL_uxTaskGetNumberOfTasks ) : "memory" 364 ); 365 } 366 /*-----------------------------------------------------------*/ 367 368 #if ( configGENERATE_RUN_TIME_STATS == 1 ) 369 370 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 371 MPU_ulTaskGetRunTimeCounter(const TaskHandle_t xTask)372 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 373 { 374 __asm volatile 375 ( 376 " .syntax unified \n" 377 " .extern MPU_ulTaskGetRunTimeCounterImpl \n" 378 " \n" 379 " push {r0} \n" 380 " mrs r0, control \n" 381 " tst r0, #1 \n" 382 " bne MPU_ulTaskGetRunTimeCounter_Unpriv \n" 383 " MPU_ulTaskGetRunTimeCounter_Priv: \n" 384 " pop {r0} \n" 385 " b MPU_ulTaskGetRunTimeCounterImpl \n" 386 " MPU_ulTaskGetRunTimeCounter_Unpriv: \n" 387 " pop {r0} \n" 388 " svc %0 \n" 389 " \n" 390 : : "i" ( SYSTEM_CALL_ulTaskGetRunTimeCounter ) : "memory" 391 ); 392 } 393 394 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) */ 395 /*-----------------------------------------------------------*/ 396 397 #if ( configGENERATE_RUN_TIME_STATS == 1 ) 398 399 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 400 MPU_ulTaskGetRunTimePercent(const TaskHandle_t xTask)401 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 402 { 403 __asm volatile 404 ( 405 " .syntax unified \n" 406 " .extern MPU_ulTaskGetRunTimePercentImpl \n" 407 " \n" 408 " push {r0} \n" 409 " mrs r0, control \n" 410 " tst r0, #1 \n" 411 " bne MPU_ulTaskGetRunTimePercent_Unpriv \n" 412 " MPU_ulTaskGetRunTimePercent_Priv: \n" 413 " pop {r0} \n" 414 " b MPU_ulTaskGetRunTimePercentImpl \n" 415 " MPU_ulTaskGetRunTimePercent_Unpriv: \n" 416 " pop {r0} \n" 417 " svc %0 \n" 418 " \n" 419 : : "i" ( SYSTEM_CALL_ulTaskGetRunTimePercent ) : "memory" 420 ); 421 } 422 423 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) */ 424 /*-----------------------------------------------------------*/ 425 426 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) 427 428 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 429 MPU_ulTaskGetIdleRunTimePercent(void)430 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 431 { 432 __asm volatile 433 ( 434 " .syntax unified \n" 435 " .extern MPU_ulTaskGetIdleRunTimePercentImpl \n" 436 " \n" 437 " push {r0} \n" 438 " mrs r0, control \n" 439 " tst r0, #1 \n" 440 " bne MPU_ulTaskGetIdleRunTimePercent_Unpriv \n" 441 " MPU_ulTaskGetIdleRunTimePercent_Priv: \n" 442 " pop {r0} \n" 443 " b MPU_ulTaskGetIdleRunTimePercentImpl \n" 444 " MPU_ulTaskGetIdleRunTimePercent_Unpriv: \n" 445 " pop {r0} \n" 446 " svc %0 \n" 447 " \n" 448 : : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimePercent ) : "memory" 449 ); 450 } 451 452 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */ 453 /*-----------------------------------------------------------*/ 454 455 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) 456 457 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 458 MPU_ulTaskGetIdleRunTimeCounter(void)459 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 460 { 461 __asm volatile 462 ( 463 " .syntax unified \n" 464 " .extern MPU_ulTaskGetIdleRunTimeCounterImpl \n" 465 " \n" 466 " push {r0} \n" 467 " mrs r0, control \n" 468 " tst r0, #1 \n" 469 " bne MPU_ulTaskGetIdleRunTimeCounter_Unpriv \n" 470 " MPU_ulTaskGetIdleRunTimeCounter_Priv: \n" 471 " pop {r0} \n" 472 " b MPU_ulTaskGetIdleRunTimeCounterImpl \n" 473 " MPU_ulTaskGetIdleRunTimeCounter_Unpriv: \n" 474 " pop {r0} \n" 475 " svc %0 \n" 476 " \n" 477 : : "i" ( SYSTEM_CALL_ulTaskGetIdleRunTimeCounter ) : "memory" 478 ); 479 } 480 481 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */ 482 /*-----------------------------------------------------------*/ 483 484 #if ( configUSE_APPLICATION_TASK_TAG == 1 ) 485 486 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, 487 TaskHookFunction_t pxHookFunction ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 488 MPU_vTaskSetApplicationTaskTag(TaskHandle_t xTask,TaskHookFunction_t pxHookFunction)489 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, 490 TaskHookFunction_t pxHookFunction ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 491 { 492 __asm volatile 493 ( 494 " .syntax unified \n" 495 " .extern MPU_vTaskSetApplicationTaskTagImpl \n" 496 " \n" 497 " push {r0} \n" 498 " mrs r0, control \n" 499 " tst r0, #1 \n" 500 " bne MPU_vTaskSetApplicationTaskTag_Unpriv \n" 501 " MPU_vTaskSetApplicationTaskTag_Priv: \n" 502 " pop {r0} \n" 503 " b MPU_vTaskSetApplicationTaskTagImpl \n" 504 " MPU_vTaskSetApplicationTaskTag_Unpriv: \n" 505 " pop {r0} \n" 506 " svc %0 \n" 507 " \n" 508 : : "i" ( SYSTEM_CALL_vTaskSetApplicationTaskTag ) : "memory" 509 ); 510 } 511 512 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ 513 /*-----------------------------------------------------------*/ 514 515 #if ( configUSE_APPLICATION_TASK_TAG == 1 ) 516 517 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 518 MPU_xTaskGetApplicationTaskTag(TaskHandle_t xTask)519 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 520 { 521 __asm volatile 522 ( 523 " .syntax unified \n" 524 " .extern MPU_xTaskGetApplicationTaskTagImpl \n" 525 " \n" 526 " push {r0} \n" 527 " mrs r0, control \n" 528 " tst r0, #1 \n" 529 " bne MPU_xTaskGetApplicationTaskTag_Unpriv \n" 530 " MPU_xTaskGetApplicationTaskTag_Priv: \n" 531 " pop {r0} \n" 532 " b MPU_xTaskGetApplicationTaskTagImpl \n" 533 " MPU_xTaskGetApplicationTaskTag_Unpriv: \n" 534 " pop {r0} \n" 535 " svc %0 \n" 536 " \n" 537 : : "i" ( SYSTEM_CALL_xTaskGetApplicationTaskTag ) : "memory" 538 ); 539 } 540 541 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ 542 /*-----------------------------------------------------------*/ 543 544 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) 545 546 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, 547 BaseType_t xIndex, 548 void * pvValue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 549 MPU_vTaskSetThreadLocalStoragePointer(TaskHandle_t xTaskToSet,BaseType_t xIndex,void * pvValue)550 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, 551 BaseType_t xIndex, 552 void * pvValue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 553 { 554 __asm volatile 555 ( 556 " .syntax unified \n" 557 " .extern MPU_vTaskSetThreadLocalStoragePointerImpl \n" 558 " \n" 559 " push {r0} \n" 560 " mrs r0, control \n" 561 " tst r0, #1 \n" 562 " bne MPU_vTaskSetThreadLocalStoragePointer_Unpriv \n" 563 " MPU_vTaskSetThreadLocalStoragePointer_Priv: \n" 564 " pop {r0} \n" 565 " b MPU_vTaskSetThreadLocalStoragePointerImpl \n" 566 " MPU_vTaskSetThreadLocalStoragePointer_Unpriv: \n" 567 " pop {r0} \n" 568 " svc %0 \n" 569 " \n" 570 : : "i" ( SYSTEM_CALL_vTaskSetThreadLocalStoragePointer ) : "memory" 571 ); 572 } 573 574 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */ 575 /*-----------------------------------------------------------*/ 576 577 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) 578 579 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, 580 BaseType_t xIndex ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 581 MPU_pvTaskGetThreadLocalStoragePointer(TaskHandle_t xTaskToQuery,BaseType_t xIndex)582 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, 583 BaseType_t xIndex ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 584 { 585 __asm volatile 586 ( 587 " .syntax unified \n" 588 " .extern MPU_pvTaskGetThreadLocalStoragePointerImpl \n" 589 " \n" 590 " push {r0} \n" 591 " mrs r0, control \n" 592 " tst r0, #1 \n" 593 " bne MPU_pvTaskGetThreadLocalStoragePointer_Unpriv \n" 594 " MPU_pvTaskGetThreadLocalStoragePointer_Priv: \n" 595 " pop {r0} \n" 596 " b MPU_pvTaskGetThreadLocalStoragePointerImpl \n" 597 " MPU_pvTaskGetThreadLocalStoragePointer_Unpriv: \n" 598 " pop {r0} \n" 599 " svc %0 \n" 600 " \n" 601 : : "i" ( SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer ) : "memory" 602 ); 603 } 604 605 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */ 606 /*-----------------------------------------------------------*/ 607 608 #if ( configUSE_TRACE_FACILITY == 1 ) 609 610 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, 611 const UBaseType_t uxArraySize, 612 configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 613 MPU_uxTaskGetSystemState(TaskStatus_t * const pxTaskStatusArray,const UBaseType_t uxArraySize,configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime)614 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, 615 const UBaseType_t uxArraySize, 616 configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 617 { 618 __asm volatile 619 ( 620 " .syntax unified \n" 621 " .extern MPU_uxTaskGetSystemStateImpl \n" 622 " \n" 623 " push {r0} \n" 624 " mrs r0, control \n" 625 " tst r0, #1 \n" 626 " bne MPU_uxTaskGetSystemState_Unpriv \n" 627 " MPU_uxTaskGetSystemState_Priv: \n" 628 " pop {r0} \n" 629 " b MPU_uxTaskGetSystemStateImpl \n" 630 " MPU_uxTaskGetSystemState_Unpriv: \n" 631 " pop {r0} \n" 632 " svc %0 \n" 633 " \n" 634 : : "i" ( SYSTEM_CALL_uxTaskGetSystemState ) : "memory" 635 ); 636 } 637 638 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */ 639 /*-----------------------------------------------------------*/ 640 641 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) 642 643 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 644 MPU_uxTaskGetStackHighWaterMark(TaskHandle_t xTask)645 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 646 { 647 __asm volatile 648 ( 649 " .syntax unified \n" 650 " .extern MPU_uxTaskGetStackHighWaterMarkImpl \n" 651 " \n" 652 " push {r0} \n" 653 " mrs r0, control \n" 654 " tst r0, #1 \n" 655 " bne MPU_uxTaskGetStackHighWaterMark_Unpriv \n" 656 " MPU_uxTaskGetStackHighWaterMark_Priv: \n" 657 " pop {r0} \n" 658 " b MPU_uxTaskGetStackHighWaterMarkImpl \n" 659 " MPU_uxTaskGetStackHighWaterMark_Unpriv: \n" 660 " pop {r0} \n" 661 " svc %0 \n" 662 " \n" 663 : : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark ) : "memory" 664 ); 665 } 666 667 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */ 668 /*-----------------------------------------------------------*/ 669 670 #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) 671 672 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 673 MPU_uxTaskGetStackHighWaterMark2(TaskHandle_t xTask)674 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 675 { 676 __asm volatile 677 ( 678 " .syntax unified \n" 679 " .extern MPU_uxTaskGetStackHighWaterMark2Impl \n" 680 " \n" 681 " push {r0} \n" 682 " mrs r0, control \n" 683 " tst r0, #1 \n" 684 " bne MPU_uxTaskGetStackHighWaterMark2_Unpriv \n" 685 " MPU_uxTaskGetStackHighWaterMark2_Priv: \n" 686 " pop {r0} \n" 687 " b MPU_uxTaskGetStackHighWaterMark2Impl \n" 688 " MPU_uxTaskGetStackHighWaterMark2_Unpriv: \n" 689 " pop {r0} \n" 690 " svc %0 \n" 691 " \n" 692 : : "i" ( SYSTEM_CALL_uxTaskGetStackHighWaterMark2 ) : "memory" 693 ); 694 } 695 696 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */ 697 /*-----------------------------------------------------------*/ 698 699 #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) 700 701 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 702 MPU_xTaskGetCurrentTaskHandle(void)703 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 704 { 705 __asm volatile 706 ( 707 " .syntax unified \n" 708 " .extern MPU_xTaskGetCurrentTaskHandleImpl \n" 709 " \n" 710 " push {r0} \n" 711 " mrs r0, control \n" 712 " tst r0, #1 \n" 713 " bne MPU_xTaskGetCurrentTaskHandle_Unpriv \n" 714 " MPU_xTaskGetCurrentTaskHandle_Priv: \n" 715 " pop {r0} \n" 716 " b MPU_xTaskGetCurrentTaskHandleImpl \n" 717 " MPU_xTaskGetCurrentTaskHandle_Unpriv: \n" 718 " pop {r0} \n" 719 " svc %0 \n" 720 " \n" 721 : : "i" ( SYSTEM_CALL_xTaskGetCurrentTaskHandle ) : "memory" 722 ); 723 } 724 725 #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */ 726 /*-----------------------------------------------------------*/ 727 728 #if ( INCLUDE_xTaskGetSchedulerState == 1 ) 729 730 BaseType_t MPU_xTaskGetSchedulerState( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 731 MPU_xTaskGetSchedulerState(void)732 BaseType_t MPU_xTaskGetSchedulerState( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 733 { 734 __asm volatile 735 ( 736 " .syntax unified \n" 737 " .extern MPU_xTaskGetSchedulerStateImpl \n" 738 " \n" 739 " push {r0} \n" 740 " mrs r0, control \n" 741 " tst r0, #1 \n" 742 " bne MPU_xTaskGetSchedulerState_Unpriv \n" 743 " MPU_xTaskGetSchedulerState_Priv: \n" 744 " pop {r0} \n" 745 " b MPU_xTaskGetSchedulerStateImpl \n" 746 " MPU_xTaskGetSchedulerState_Unpriv: \n" 747 " pop {r0} \n" 748 " svc %0 \n" 749 " \n" 750 : : "i" ( SYSTEM_CALL_xTaskGetSchedulerState ) : "memory" 751 ); 752 } 753 754 #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */ 755 /*-----------------------------------------------------------*/ 756 757 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 758 MPU_vTaskSetTimeOutState(TimeOut_t * const pxTimeOut)759 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 760 { 761 __asm volatile 762 ( 763 " .syntax unified \n" 764 " .extern MPU_vTaskSetTimeOutStateImpl \n" 765 " \n" 766 " push {r0} \n" 767 " mrs r0, control \n" 768 " tst r0, #1 \n" 769 " bne MPU_vTaskSetTimeOutState_Unpriv \n" 770 " MPU_vTaskSetTimeOutState_Priv: \n" 771 " pop {r0} \n" 772 " b MPU_vTaskSetTimeOutStateImpl \n" 773 " MPU_vTaskSetTimeOutState_Unpriv: \n" 774 " pop {r0} \n" 775 " svc %0 \n" 776 " \n" 777 : : "i" ( SYSTEM_CALL_vTaskSetTimeOutState ) : "memory" 778 ); 779 } 780 /*-----------------------------------------------------------*/ 781 782 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, 783 TickType_t * const pxTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 784 MPU_xTaskCheckForTimeOut(TimeOut_t * const pxTimeOut,TickType_t * const pxTicksToWait)785 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, 786 TickType_t * const pxTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 787 { 788 __asm volatile 789 ( 790 " .syntax unified \n" 791 " .extern MPU_xTaskCheckForTimeOutImpl \n" 792 " \n" 793 " push {r0} \n" 794 " mrs r0, control \n" 795 " tst r0, #1 \n" 796 " bne MPU_xTaskCheckForTimeOut_Unpriv \n" 797 " MPU_xTaskCheckForTimeOut_Priv: \n" 798 " pop {r0} \n" 799 " b MPU_xTaskCheckForTimeOutImpl \n" 800 " MPU_xTaskCheckForTimeOut_Unpriv: \n" 801 " pop {r0} \n" 802 " svc %0 \n" 803 " \n" 804 : : "i" ( SYSTEM_CALL_xTaskCheckForTimeOut ) : "memory" 805 ); 806 } 807 /*-----------------------------------------------------------*/ 808 809 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) 810 811 BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 812 MPU_xTaskGenericNotifyEntry(const xTaskGenericNotifyParams_t * pxParams)813 BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 814 { 815 __asm volatile 816 ( 817 " .syntax unified \n" 818 " .extern MPU_xTaskGenericNotifyImpl \n" 819 " \n" 820 " push {r0} \n" 821 " mrs r0, control \n" 822 " tst r0, #1 \n" 823 " bne MPU_xTaskGenericNotify_Unpriv \n" 824 " MPU_xTaskGenericNotify_Priv: \n" 825 " pop {r0} \n" 826 " b MPU_xTaskGenericNotifyImpl \n" 827 " MPU_xTaskGenericNotify_Unpriv: \n" 828 " pop {r0} \n" 829 " svc %0 \n" 830 " \n" 831 : : "i" ( SYSTEM_CALL_xTaskGenericNotify ) : "memory" 832 ); 833 } 834 835 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 836 /*-----------------------------------------------------------*/ 837 838 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) 839 840 BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 841 MPU_xTaskGenericNotifyWaitEntry(const xTaskGenericNotifyWaitParams_t * pxParams)842 BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 843 { 844 __asm volatile 845 ( 846 " .syntax unified \n" 847 " .extern MPU_xTaskGenericNotifyWaitImpl \n" 848 " \n" 849 " push {r0} \n" 850 " mrs r0, control \n" 851 " tst r0, #1 \n" 852 " bne MPU_xTaskGenericNotifyWait_Unpriv \n" 853 " MPU_xTaskGenericNotifyWait_Priv: \n" 854 " pop {r0} \n" 855 " b MPU_xTaskGenericNotifyWaitImpl \n" 856 " MPU_xTaskGenericNotifyWait_Unpriv: \n" 857 " pop {r0} \n" 858 " svc %0 \n" 859 " \n" 860 : : "i" ( SYSTEM_CALL_xTaskGenericNotifyWait ) : "memory" 861 ); 862 } 863 864 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 865 /*-----------------------------------------------------------*/ 866 867 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) 868 869 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn, 870 BaseType_t xClearCountOnExit, 871 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 872 MPU_ulTaskGenericNotifyTake(UBaseType_t uxIndexToWaitOn,BaseType_t xClearCountOnExit,TickType_t xTicksToWait)873 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn, 874 BaseType_t xClearCountOnExit, 875 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 876 { 877 __asm volatile 878 ( 879 " .syntax unified \n" 880 " .extern MPU_ulTaskGenericNotifyTakeImpl \n" 881 " \n" 882 " push {r0} \n" 883 " mrs r0, control \n" 884 " tst r0, #1 \n" 885 " bne MPU_ulTaskGenericNotifyTake_Unpriv \n" 886 " MPU_ulTaskGenericNotifyTake_Priv: \n" 887 " pop {r0} \n" 888 " b MPU_ulTaskGenericNotifyTakeImpl \n" 889 " MPU_ulTaskGenericNotifyTake_Unpriv: \n" 890 " pop {r0} \n" 891 " svc %0 \n" 892 " \n" 893 : : "i" ( SYSTEM_CALL_ulTaskGenericNotifyTake ) : "memory" 894 ); 895 } 896 897 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 898 /*-----------------------------------------------------------*/ 899 900 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) 901 902 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask, 903 UBaseType_t uxIndexToClear ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 904 MPU_xTaskGenericNotifyStateClear(TaskHandle_t xTask,UBaseType_t uxIndexToClear)905 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask, 906 UBaseType_t uxIndexToClear ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 907 { 908 __asm volatile 909 ( 910 " .syntax unified \n" 911 " .extern MPU_xTaskGenericNotifyStateClearImpl \n" 912 " \n" 913 " push {r0} \n" 914 " mrs r0, control \n" 915 " tst r0, #1 \n" 916 " bne MPU_xTaskGenericNotifyStateClear_Unpriv \n" 917 " MPU_xTaskGenericNotifyStateClear_Priv: \n" 918 " pop {r0} \n" 919 " b MPU_xTaskGenericNotifyStateClearImpl \n" 920 " MPU_xTaskGenericNotifyStateClear_Unpriv: \n" 921 " pop {r0} \n" 922 " svc %0 \n" 923 " \n" 924 : : "i" ( SYSTEM_CALL_xTaskGenericNotifyStateClear ) : "memory" 925 ); 926 } 927 928 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 929 /*-----------------------------------------------------------*/ 930 931 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) 932 933 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask, 934 UBaseType_t uxIndexToClear, 935 uint32_t ulBitsToClear ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 936 MPU_ulTaskGenericNotifyValueClear(TaskHandle_t xTask,UBaseType_t uxIndexToClear,uint32_t ulBitsToClear)937 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask, 938 UBaseType_t uxIndexToClear, 939 uint32_t ulBitsToClear ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 940 { 941 __asm volatile 942 ( 943 " .syntax unified \n" 944 " .extern MPU_ulTaskGenericNotifyValueClearImpl \n" 945 " \n" 946 " push {r0} \n" 947 " mrs r0, control \n" 948 " tst r0, #1 \n" 949 " bne MPU_ulTaskGenericNotifyValueClear_Unpriv \n" 950 " MPU_ulTaskGenericNotifyValueClear_Priv: \n" 951 " pop {r0} \n" 952 " b MPU_ulTaskGenericNotifyValueClearImpl \n" 953 " MPU_ulTaskGenericNotifyValueClear_Unpriv: \n" 954 " pop {r0} \n" 955 " svc %0 \n" 956 " \n" 957 : : "i" ( SYSTEM_CALL_ulTaskGenericNotifyValueClear ) : "memory" 958 ); 959 } 960 961 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 962 /*-----------------------------------------------------------*/ 963 964 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, 965 const void * const pvItemToQueue, 966 TickType_t xTicksToWait, 967 const BaseType_t xCopyPosition ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 968 MPU_xQueueGenericSend(QueueHandle_t xQueue,const void * const pvItemToQueue,TickType_t xTicksToWait,const BaseType_t xCopyPosition)969 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, 970 const void * const pvItemToQueue, 971 TickType_t xTicksToWait, 972 const BaseType_t xCopyPosition ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 973 { 974 __asm volatile 975 ( 976 " .syntax unified \n" 977 " .extern MPU_xQueueGenericSendImpl \n" 978 " \n" 979 " push {r0} \n" 980 " mrs r0, control \n" 981 " tst r0, #1 \n" 982 " bne MPU_xQueueGenericSend_Unpriv \n" 983 " MPU_xQueueGenericSend_Priv: \n" 984 " pop {r0} \n" 985 " b MPU_xQueueGenericSendImpl \n" 986 " MPU_xQueueGenericSend_Unpriv: \n" 987 " pop {r0} \n" 988 " svc %0 \n" 989 " \n" 990 : : "i" ( SYSTEM_CALL_xQueueGenericSend ) : "memory" 991 ); 992 } 993 /*-----------------------------------------------------------*/ 994 995 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 996 MPU_uxQueueMessagesWaiting(const QueueHandle_t xQueue)997 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 998 { 999 __asm volatile 1000 ( 1001 " .syntax unified \n" 1002 " .extern MPU_uxQueueMessagesWaitingImpl \n" 1003 " \n" 1004 " push {r0} \n" 1005 " mrs r0, control \n" 1006 " tst r0, #1 \n" 1007 " bne MPU_uxQueueMessagesWaiting_Unpriv \n" 1008 " MPU_uxQueueMessagesWaiting_Priv: \n" 1009 " pop {r0} \n" 1010 " b MPU_uxQueueMessagesWaitingImpl \n" 1011 " MPU_uxQueueMessagesWaiting_Unpriv: \n" 1012 " pop {r0} \n" 1013 " svc %0 \n" 1014 " \n" 1015 : : "i" ( SYSTEM_CALL_uxQueueMessagesWaiting ) : "memory" 1016 ); 1017 } 1018 /*-----------------------------------------------------------*/ 1019 1020 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1021 MPU_uxQueueSpacesAvailable(const QueueHandle_t xQueue)1022 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1023 { 1024 __asm volatile 1025 ( 1026 " .syntax unified \n" 1027 " .extern MPU_uxQueueSpacesAvailableImpl \n" 1028 " \n" 1029 " push {r0} \n" 1030 " mrs r0, control \n" 1031 " tst r0, #1 \n" 1032 " bne MPU_uxQueueSpacesAvailable_Unpriv \n" 1033 " MPU_uxQueueSpacesAvailable_Priv: \n" 1034 " pop {r0} \n" 1035 " b MPU_uxQueueSpacesAvailableImpl \n" 1036 " MPU_uxQueueSpacesAvailable_Unpriv: \n" 1037 " pop {r0} \n" 1038 " svc %0 \n" 1039 " \n" 1040 : : "i" ( SYSTEM_CALL_uxQueueSpacesAvailable ) : "memory" 1041 ); 1042 } 1043 /*-----------------------------------------------------------*/ 1044 1045 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, 1046 void * const pvBuffer, 1047 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1048 MPU_xQueueReceive(QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait)1049 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue, 1050 void * const pvBuffer, 1051 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1052 { 1053 __asm volatile 1054 ( 1055 " .syntax unified \n" 1056 " .extern MPU_xQueueReceiveImpl \n" 1057 " \n" 1058 " push {r0} \n" 1059 " mrs r0, control \n" 1060 " tst r0, #1 \n" 1061 " bne MPU_xQueueReceive_Unpriv \n" 1062 " MPU_xQueueReceive_Priv: \n" 1063 " pop {r0} \n" 1064 " b MPU_xQueueReceiveImpl \n" 1065 " MPU_xQueueReceive_Unpriv: \n" 1066 " pop {r0} \n" 1067 " svc %0 \n" 1068 " \n" 1069 : : "i" ( SYSTEM_CALL_xQueueReceive ) : "memory" 1070 ); 1071 } 1072 /*-----------------------------------------------------------*/ 1073 1074 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, 1075 void * const pvBuffer, 1076 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1077 MPU_xQueuePeek(QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait)1078 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, 1079 void * const pvBuffer, 1080 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1081 { 1082 __asm volatile 1083 ( 1084 " .syntax unified \n" 1085 " .extern MPU_xQueuePeekImpl \n" 1086 " \n" 1087 " push {r0} \n" 1088 " mrs r0, control \n" 1089 " tst r0, #1 \n" 1090 " bne MPU_xQueuePeek_Unpriv \n" 1091 " MPU_xQueuePeek_Priv: \n" 1092 " pop {r0} \n" 1093 " b MPU_xQueuePeekImpl \n" 1094 " MPU_xQueuePeek_Unpriv: \n" 1095 " pop {r0} \n" 1096 " svc %0 \n" 1097 " \n" 1098 : : "i" ( SYSTEM_CALL_xQueuePeek ) : "memory" 1099 ); 1100 } 1101 /*-----------------------------------------------------------*/ 1102 1103 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, 1104 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1105 MPU_xQueueSemaphoreTake(QueueHandle_t xQueue,TickType_t xTicksToWait)1106 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, 1107 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1108 { 1109 __asm volatile 1110 ( 1111 " .syntax unified \n" 1112 " .extern MPU_xQueueSemaphoreTakeImpl \n" 1113 " \n" 1114 " push {r0} \n" 1115 " mrs r0, control \n" 1116 " tst r0, #1 \n" 1117 " bne MPU_xQueueSemaphoreTake_Unpriv \n" 1118 " MPU_xQueueSemaphoreTake_Priv: \n" 1119 " pop {r0} \n" 1120 " b MPU_xQueueSemaphoreTakeImpl \n" 1121 " MPU_xQueueSemaphoreTake_Unpriv: \n" 1122 " pop {r0} \n" 1123 " svc %0 \n" 1124 " \n" 1125 : : "i" ( SYSTEM_CALL_xQueueSemaphoreTake ) : "memory" 1126 ); 1127 } 1128 /*-----------------------------------------------------------*/ 1129 1130 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) 1131 1132 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1133 MPU_xQueueGetMutexHolder(QueueHandle_t xSemaphore)1134 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1135 { 1136 __asm volatile 1137 ( 1138 " .syntax unified \n" 1139 " .extern MPU_xQueueGetMutexHolderImpl \n" 1140 " \n" 1141 " push {r0} \n" 1142 " mrs r0, control \n" 1143 " tst r0, #1 \n" 1144 " bne MPU_xQueueGetMutexHolder_Unpriv \n" 1145 " MPU_xQueueGetMutexHolder_Priv: \n" 1146 " pop {r0} \n" 1147 " b MPU_xQueueGetMutexHolderImpl \n" 1148 " MPU_xQueueGetMutexHolder_Unpriv: \n" 1149 " pop {r0} \n" 1150 " svc %0 \n" 1151 " \n" 1152 : : "i" ( SYSTEM_CALL_xQueueGetMutexHolder ) : "memory" 1153 ); 1154 } 1155 1156 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */ 1157 /*-----------------------------------------------------------*/ 1158 1159 #if ( configUSE_RECURSIVE_MUTEXES == 1 ) 1160 1161 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, 1162 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1163 MPU_xQueueTakeMutexRecursive(QueueHandle_t xMutex,TickType_t xTicksToWait)1164 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, 1165 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1166 { 1167 __asm volatile 1168 ( 1169 " .syntax unified \n" 1170 " .extern MPU_xQueueTakeMutexRecursiveImpl \n" 1171 " \n" 1172 " push {r0} \n" 1173 " mrs r0, control \n" 1174 " tst r0, #1 \n" 1175 " bne MPU_xQueueTakeMutexRecursive_Unpriv \n" 1176 " MPU_xQueueTakeMutexRecursive_Priv: \n" 1177 " pop {r0} \n" 1178 " b MPU_xQueueTakeMutexRecursiveImpl \n" 1179 " MPU_xQueueTakeMutexRecursive_Unpriv: \n" 1180 " pop {r0} \n" 1181 " svc %0 \n" 1182 " \n" 1183 : : "i" ( SYSTEM_CALL_xQueueTakeMutexRecursive ) : "memory" 1184 ); 1185 } 1186 1187 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */ 1188 /*-----------------------------------------------------------*/ 1189 1190 #if ( configUSE_RECURSIVE_MUTEXES == 1 ) 1191 1192 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1193 MPU_xQueueGiveMutexRecursive(QueueHandle_t pxMutex)1194 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1195 { 1196 __asm volatile 1197 ( 1198 " .syntax unified \n" 1199 " .extern MPU_xQueueGiveMutexRecursiveImpl \n" 1200 " \n" 1201 " push {r0} \n" 1202 " mrs r0, control \n" 1203 " tst r0, #1 \n" 1204 " bne MPU_xQueueGiveMutexRecursive_Unpriv \n" 1205 " MPU_xQueueGiveMutexRecursive_Priv: \n" 1206 " pop {r0} \n" 1207 " b MPU_xQueueGiveMutexRecursiveImpl \n" 1208 " MPU_xQueueGiveMutexRecursive_Unpriv: \n" 1209 " pop {r0} \n" 1210 " svc %0 \n" 1211 " \n" 1212 : : "i" ( SYSTEM_CALL_xQueueGiveMutexRecursive ) : "memory" 1213 ); 1214 } 1215 1216 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */ 1217 /*-----------------------------------------------------------*/ 1218 1219 #if ( configUSE_QUEUE_SETS == 1 ) 1220 1221 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, 1222 const TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1223 MPU_xQueueSelectFromSet(QueueSetHandle_t xQueueSet,const TickType_t xTicksToWait)1224 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, 1225 const TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1226 { 1227 __asm volatile 1228 ( 1229 " .syntax unified \n" 1230 " .extern MPU_xQueueSelectFromSetImpl \n" 1231 " \n" 1232 " push {r0} \n" 1233 " mrs r0, control \n" 1234 " tst r0, #1 \n" 1235 " bne MPU_xQueueSelectFromSet_Unpriv \n" 1236 " MPU_xQueueSelectFromSet_Priv: \n" 1237 " pop {r0} \n" 1238 " b MPU_xQueueSelectFromSetImpl \n" 1239 " MPU_xQueueSelectFromSet_Unpriv: \n" 1240 " pop {r0} \n" 1241 " svc %0 \n" 1242 " \n" 1243 : : "i" ( SYSTEM_CALL_xQueueSelectFromSet ) : "memory" 1244 ); 1245 } 1246 1247 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ 1248 /*-----------------------------------------------------------*/ 1249 1250 #if ( configUSE_QUEUE_SETS == 1 ) 1251 1252 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, 1253 QueueSetHandle_t xQueueSet ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1254 MPU_xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore,QueueSetHandle_t xQueueSet)1255 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, 1256 QueueSetHandle_t xQueueSet ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1257 { 1258 __asm volatile 1259 ( 1260 " .syntax unified \n" 1261 " .extern MPU_xQueueAddToSetImpl \n" 1262 " \n" 1263 " push {r0} \n" 1264 " mrs r0, control \n" 1265 " tst r0, #1 \n" 1266 " bne MPU_xQueueAddToSet_Unpriv \n" 1267 " MPU_xQueueAddToSet_Priv: \n" 1268 " pop {r0} \n" 1269 " b MPU_xQueueAddToSetImpl \n" 1270 " MPU_xQueueAddToSet_Unpriv: \n" 1271 " pop {r0} \n" 1272 " svc %0 \n" 1273 " \n" 1274 : : "i" ( SYSTEM_CALL_xQueueAddToSet ) : "memory" 1275 ); 1276 } 1277 1278 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ 1279 /*-----------------------------------------------------------*/ 1280 1281 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 1282 1283 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, 1284 const char * pcName ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1285 MPU_vQueueAddToRegistry(QueueHandle_t xQueue,const char * pcName)1286 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, 1287 const char * pcName ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1288 { 1289 __asm volatile 1290 ( 1291 " .syntax unified \n" 1292 " .extern MPU_vQueueAddToRegistryImpl \n" 1293 " \n" 1294 " push {r0} \n" 1295 " mrs r0, control \n" 1296 " tst r0, #1 \n" 1297 " bne MPU_vQueueAddToRegistry_Unpriv \n" 1298 " MPU_vQueueAddToRegistry_Priv: \n" 1299 " pop {r0} \n" 1300 " b MPU_vQueueAddToRegistryImpl \n" 1301 " MPU_vQueueAddToRegistry_Unpriv: \n" 1302 " pop {r0} \n" 1303 " svc %0 \n" 1304 " \n" 1305 : : "i" ( SYSTEM_CALL_vQueueAddToRegistry ) : "memory" 1306 ); 1307 } 1308 1309 #endif /* if ( configQUEUE_REGISTRY_SIZE > 0 ) */ 1310 /*-----------------------------------------------------------*/ 1311 1312 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 1313 1314 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1315 MPU_vQueueUnregisterQueue(QueueHandle_t xQueue)1316 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1317 { 1318 __asm volatile 1319 ( 1320 " .syntax unified \n" 1321 " .extern MPU_vQueueUnregisterQueueImpl \n" 1322 " \n" 1323 " push {r0} \n" 1324 " mrs r0, control \n" 1325 " tst r0, #1 \n" 1326 " bne MPU_vQueueUnregisterQueue_Unpriv \n" 1327 " MPU_vQueueUnregisterQueue_Priv: \n" 1328 " pop {r0} \n" 1329 " b MPU_vQueueUnregisterQueueImpl \n" 1330 " MPU_vQueueUnregisterQueue_Unpriv: \n" 1331 " pop {r0} \n" 1332 " svc %0 \n" 1333 " \n" 1334 : : "i" ( SYSTEM_CALL_vQueueUnregisterQueue ) : "memory" 1335 ); 1336 } 1337 1338 #endif /* if ( configQUEUE_REGISTRY_SIZE > 0 ) */ 1339 /*-----------------------------------------------------------*/ 1340 1341 #if ( configQUEUE_REGISTRY_SIZE > 0 ) 1342 1343 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1344 MPU_pcQueueGetName(QueueHandle_t xQueue)1345 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1346 { 1347 __asm volatile 1348 ( 1349 " .syntax unified \n" 1350 " .extern MPU_pcQueueGetNameImpl \n" 1351 " \n" 1352 " push {r0} \n" 1353 " mrs r0, control \n" 1354 " tst r0, #1 \n" 1355 " bne MPU_pcQueueGetName_Unpriv \n" 1356 " MPU_pcQueueGetName_Priv: \n" 1357 " pop {r0} \n" 1358 " b MPU_pcQueueGetNameImpl \n" 1359 " MPU_pcQueueGetName_Unpriv: \n" 1360 " pop {r0} \n" 1361 " svc %0 \n" 1362 " \n" 1363 : : "i" ( SYSTEM_CALL_pcQueueGetName ) : "memory" 1364 ); 1365 } 1366 1367 #endif /* if ( configQUEUE_REGISTRY_SIZE > 0 ) */ 1368 /*-----------------------------------------------------------*/ 1369 1370 #if ( configUSE_TIMERS == 1 ) 1371 1372 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1373 MPU_pvTimerGetTimerID(const TimerHandle_t xTimer)1374 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1375 { 1376 __asm volatile 1377 ( 1378 " .syntax unified \n" 1379 " .extern MPU_pvTimerGetTimerIDImpl \n" 1380 " \n" 1381 " push {r0} \n" 1382 " mrs r0, control \n" 1383 " tst r0, #1 \n" 1384 " bne MPU_pvTimerGetTimerID_Unpriv \n" 1385 " MPU_pvTimerGetTimerID_Priv: \n" 1386 " pop {r0} \n" 1387 " b MPU_pvTimerGetTimerIDImpl \n" 1388 " MPU_pvTimerGetTimerID_Unpriv: \n" 1389 " pop {r0} \n" 1390 " svc %0 \n" 1391 " \n" 1392 : : "i" ( SYSTEM_CALL_pvTimerGetTimerID ) : "memory" 1393 ); 1394 } 1395 1396 #endif /* if ( configUSE_TIMERS == 1 ) */ 1397 /*-----------------------------------------------------------*/ 1398 1399 #if ( configUSE_TIMERS == 1 ) 1400 1401 void MPU_vTimerSetTimerID( TimerHandle_t xTimer, 1402 void * pvNewID ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1403 MPU_vTimerSetTimerID(TimerHandle_t xTimer,void * pvNewID)1404 void MPU_vTimerSetTimerID( TimerHandle_t xTimer, 1405 void * pvNewID ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1406 { 1407 __asm volatile 1408 ( 1409 " .syntax unified \n" 1410 " .extern MPU_vTimerSetTimerIDImpl \n" 1411 " \n" 1412 " push {r0} \n" 1413 " mrs r0, control \n" 1414 " tst r0, #1 \n" 1415 " bne MPU_vTimerSetTimerID_Unpriv \n" 1416 " MPU_vTimerSetTimerID_Priv: \n" 1417 " pop {r0} \n" 1418 " b MPU_vTimerSetTimerIDImpl \n" 1419 " MPU_vTimerSetTimerID_Unpriv: \n" 1420 " pop {r0} \n" 1421 " svc %0 \n" 1422 " \n" 1423 : : "i" ( SYSTEM_CALL_vTimerSetTimerID ) : "memory" 1424 ); 1425 } 1426 1427 #endif /* if ( configUSE_TIMERS == 1 ) */ 1428 /*-----------------------------------------------------------*/ 1429 1430 #if ( configUSE_TIMERS == 1 ) 1431 1432 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1433 MPU_xTimerIsTimerActive(TimerHandle_t xTimer)1434 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1435 { 1436 __asm volatile 1437 ( 1438 " .syntax unified \n" 1439 " .extern MPU_xTimerIsTimerActiveImpl \n" 1440 " \n" 1441 " push {r0} \n" 1442 " mrs r0, control \n" 1443 " tst r0, #1 \n" 1444 " bne MPU_xTimerIsTimerActive_Unpriv \n" 1445 " MPU_xTimerIsTimerActive_Priv: \n" 1446 " pop {r0} \n" 1447 " b MPU_xTimerIsTimerActiveImpl \n" 1448 " MPU_xTimerIsTimerActive_Unpriv: \n" 1449 " pop {r0} \n" 1450 " svc %0 \n" 1451 " \n" 1452 : : "i" ( SYSTEM_CALL_xTimerIsTimerActive ) : "memory" 1453 ); 1454 } 1455 1456 #endif /* if ( configUSE_TIMERS == 1 ) */ 1457 /*-----------------------------------------------------------*/ 1458 1459 #if ( configUSE_TIMERS == 1 ) 1460 1461 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1462 MPU_xTimerGetTimerDaemonTaskHandle(void)1463 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1464 { 1465 __asm volatile 1466 ( 1467 " .syntax unified \n" 1468 " .extern MPU_xTimerGetTimerDaemonTaskHandleImpl \n" 1469 " \n" 1470 " push {r0} \n" 1471 " mrs r0, control \n" 1472 " tst r0, #1 \n" 1473 " bne MPU_xTimerGetTimerDaemonTaskHandle_Unpriv \n" 1474 " MPU_xTimerGetTimerDaemonTaskHandle_Priv: \n" 1475 " pop {r0} \n" 1476 " b MPU_xTimerGetTimerDaemonTaskHandleImpl \n" 1477 " MPU_xTimerGetTimerDaemonTaskHandle_Unpriv: \n" 1478 " pop {r0} \n" 1479 " svc %0 \n" 1480 " \n" 1481 : : "i" ( SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle ) : "memory" 1482 ); 1483 } 1484 1485 #endif /* if ( configUSE_TIMERS == 1 ) */ 1486 /*-----------------------------------------------------------*/ 1487 1488 #if ( configUSE_TIMERS == 1 ) 1489 1490 BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1491 MPU_xTimerGenericCommandFromTaskEntry(const xTimerGenericCommandFromTaskParams_t * pxParams)1492 BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1493 { 1494 __asm volatile 1495 ( 1496 " .syntax unified \n" 1497 " .extern MPU_xTimerGenericCommandFromTaskImpl \n" 1498 " \n" 1499 " push {r0} \n" 1500 " mrs r0, control \n" 1501 " tst r0, #1 \n" 1502 " bne MPU_xTimerGenericCommandFromTask_Unpriv \n" 1503 " MPU_xTimerGenericCommandFromTask_Priv: \n" 1504 " pop {r0} \n" 1505 " b MPU_xTimerGenericCommandFromTaskImpl \n" 1506 " MPU_xTimerGenericCommandFromTask_Unpriv: \n" 1507 " pop {r0} \n" 1508 " svc %0 \n" 1509 " \n" 1510 : : "i" ( SYSTEM_CALL_xTimerGenericCommandFromTask ) : "memory" 1511 ); 1512 } 1513 1514 #endif /* if ( configUSE_TIMERS == 1 ) */ 1515 /*-----------------------------------------------------------*/ 1516 1517 #if ( configUSE_TIMERS == 1 ) 1518 1519 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1520 MPU_pcTimerGetName(TimerHandle_t xTimer)1521 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1522 { 1523 __asm volatile 1524 ( 1525 " .syntax unified \n" 1526 " .extern MPU_pcTimerGetNameImpl \n" 1527 " \n" 1528 " push {r0} \n" 1529 " mrs r0, control \n" 1530 " tst r0, #1 \n" 1531 " bne MPU_pcTimerGetName_Unpriv \n" 1532 " MPU_pcTimerGetName_Priv: \n" 1533 " pop {r0} \n" 1534 " b MPU_pcTimerGetNameImpl \n" 1535 " MPU_pcTimerGetName_Unpriv: \n" 1536 " pop {r0} \n" 1537 " svc %0 \n" 1538 " \n" 1539 : : "i" ( SYSTEM_CALL_pcTimerGetName ) : "memory" 1540 ); 1541 } 1542 1543 #endif /* if ( configUSE_TIMERS == 1 ) */ 1544 /*-----------------------------------------------------------*/ 1545 1546 #if ( configUSE_TIMERS == 1 ) 1547 1548 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, 1549 const BaseType_t uxAutoReload ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1550 MPU_vTimerSetReloadMode(TimerHandle_t xTimer,const BaseType_t uxAutoReload)1551 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, 1552 const BaseType_t uxAutoReload ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1553 { 1554 __asm volatile 1555 ( 1556 " .syntax unified \n" 1557 " .extern MPU_vTimerSetReloadModeImpl \n" 1558 " \n" 1559 " push {r0} \n" 1560 " mrs r0, control \n" 1561 " tst r0, #1 \n" 1562 " bne MPU_vTimerSetReloadMode_Unpriv \n" 1563 " MPU_vTimerSetReloadMode_Priv: \n" 1564 " pop {r0} \n" 1565 " b MPU_vTimerSetReloadModeImpl \n" 1566 " MPU_vTimerSetReloadMode_Unpriv: \n" 1567 " pop {r0} \n" 1568 " svc %0 \n" 1569 " \n" 1570 : : "i" ( SYSTEM_CALL_vTimerSetReloadMode ) : "memory" 1571 ); 1572 } 1573 1574 #endif /* if ( configUSE_TIMERS == 1 ) */ 1575 /*-----------------------------------------------------------*/ 1576 1577 #if ( configUSE_TIMERS == 1 ) 1578 1579 BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1580 MPU_xTimerGetReloadMode(TimerHandle_t xTimer)1581 BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1582 { 1583 __asm volatile 1584 ( 1585 " .syntax unified \n" 1586 " .extern MPU_xTimerGetReloadModeImpl \n" 1587 " \n" 1588 " push {r0} \n" 1589 " mrs r0, control \n" 1590 " tst r0, #1 \n" 1591 " bne MPU_xTimerGetReloadMode_Unpriv \n" 1592 " MPU_xTimerGetReloadMode_Priv: \n" 1593 " pop {r0} \n" 1594 " b MPU_xTimerGetReloadModeImpl \n" 1595 " MPU_xTimerGetReloadMode_Unpriv: \n" 1596 " pop {r0} \n" 1597 " svc %0 \n" 1598 " \n" 1599 : : "i" ( SYSTEM_CALL_xTimerGetReloadMode ) : "memory" 1600 ); 1601 } 1602 1603 #endif /* if ( configUSE_TIMERS == 1 ) */ 1604 /*-----------------------------------------------------------*/ 1605 1606 #if ( configUSE_TIMERS == 1 ) 1607 1608 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1609 MPU_uxTimerGetReloadMode(TimerHandle_t xTimer)1610 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1611 { 1612 __asm volatile 1613 ( 1614 " .syntax unified \n" 1615 " .extern MPU_uxTimerGetReloadModeImpl \n" 1616 " \n" 1617 " push {r0} \n" 1618 " mrs r0, control \n" 1619 " tst r0, #1 \n" 1620 " bne MPU_uxTimerGetReloadMode_Unpriv \n" 1621 " MPU_uxTimerGetReloadMode_Priv: \n" 1622 " pop {r0} \n" 1623 " b MPU_uxTimerGetReloadModeImpl \n" 1624 " MPU_uxTimerGetReloadMode_Unpriv: \n" 1625 " pop {r0} \n" 1626 " svc %0 \n" 1627 " \n" 1628 : : "i" ( SYSTEM_CALL_uxTimerGetReloadMode ) : "memory" 1629 ); 1630 } 1631 1632 #endif /* if ( configUSE_TIMERS == 1 ) */ 1633 /*-----------------------------------------------------------*/ 1634 1635 #if ( configUSE_TIMERS == 1 ) 1636 1637 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1638 MPU_xTimerGetPeriod(TimerHandle_t xTimer)1639 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1640 { 1641 __asm volatile 1642 ( 1643 " .syntax unified \n" 1644 " .extern MPU_xTimerGetPeriodImpl \n" 1645 " \n" 1646 " push {r0} \n" 1647 " mrs r0, control \n" 1648 " tst r0, #1 \n" 1649 " bne MPU_xTimerGetPeriod_Unpriv \n" 1650 " MPU_xTimerGetPeriod_Priv: \n" 1651 " pop {r0} \n" 1652 " b MPU_xTimerGetPeriodImpl \n" 1653 " MPU_xTimerGetPeriod_Unpriv: \n" 1654 " pop {r0} \n" 1655 " svc %0 \n" 1656 " \n" 1657 : : "i" ( SYSTEM_CALL_xTimerGetPeriod ) : "memory" 1658 ); 1659 } 1660 1661 #endif /* if ( configUSE_TIMERS == 1 ) */ 1662 /*-----------------------------------------------------------*/ 1663 1664 #if ( configUSE_TIMERS == 1 ) 1665 1666 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1667 MPU_xTimerGetExpiryTime(TimerHandle_t xTimer)1668 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1669 { 1670 __asm volatile 1671 ( 1672 " .syntax unified \n" 1673 " .extern MPU_xTimerGetExpiryTimeImpl \n" 1674 " \n" 1675 " push {r0} \n" 1676 " mrs r0, control \n" 1677 " tst r0, #1 \n" 1678 " bne MPU_xTimerGetExpiryTime_Unpriv \n" 1679 " MPU_xTimerGetExpiryTime_Priv: \n" 1680 " pop {r0} \n" 1681 " b MPU_xTimerGetExpiryTimeImpl \n" 1682 " MPU_xTimerGetExpiryTime_Unpriv: \n" 1683 " pop {r0} \n" 1684 " svc %0 \n" 1685 " \n" 1686 : : "i" ( SYSTEM_CALL_xTimerGetExpiryTime ) : "memory" 1687 ); 1688 } 1689 1690 #endif /* if ( configUSE_TIMERS == 1 ) */ 1691 /*-----------------------------------------------------------*/ 1692 1693 EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1694 MPU_xEventGroupWaitBitsEntry(const xEventGroupWaitBitsParams_t * pxParams)1695 EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1696 { 1697 __asm volatile 1698 ( 1699 " .syntax unified \n" 1700 " .extern MPU_xEventGroupWaitBitsImpl \n" 1701 " \n" 1702 " push {r0} \n" 1703 " mrs r0, control \n" 1704 " tst r0, #1 \n" 1705 " bne MPU_xEventGroupWaitBits_Unpriv \n" 1706 " MPU_xEventGroupWaitBits_Priv: \n" 1707 " pop {r0} \n" 1708 " b MPU_xEventGroupWaitBitsImpl \n" 1709 " MPU_xEventGroupWaitBits_Unpriv: \n" 1710 " pop {r0} \n" 1711 " svc %0 \n" 1712 " \n" 1713 : : "i" ( SYSTEM_CALL_xEventGroupWaitBits ) : "memory" 1714 ); 1715 } 1716 /*-----------------------------------------------------------*/ 1717 1718 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, 1719 const EventBits_t uxBitsToClear ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1720 MPU_xEventGroupClearBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear)1721 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, 1722 const EventBits_t uxBitsToClear ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1723 { 1724 __asm volatile 1725 ( 1726 " .syntax unified \n" 1727 " .extern MPU_xEventGroupClearBitsImpl \n" 1728 " \n" 1729 " push {r0} \n" 1730 " mrs r0, control \n" 1731 " tst r0, #1 \n" 1732 " bne MPU_xEventGroupClearBits_Unpriv \n" 1733 " MPU_xEventGroupClearBits_Priv: \n" 1734 " pop {r0} \n" 1735 " b MPU_xEventGroupClearBitsImpl \n" 1736 " MPU_xEventGroupClearBits_Unpriv: \n" 1737 " pop {r0} \n" 1738 " svc %0 \n" 1739 " \n" 1740 : : "i" ( SYSTEM_CALL_xEventGroupClearBits ) : "memory" 1741 ); 1742 } 1743 /*-----------------------------------------------------------*/ 1744 1745 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, 1746 const EventBits_t uxBitsToSet ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1747 MPU_xEventGroupSetBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet)1748 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, 1749 const EventBits_t uxBitsToSet ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1750 { 1751 __asm volatile 1752 ( 1753 " .syntax unified \n" 1754 " .extern MPU_xEventGroupSetBitsImpl \n" 1755 " \n" 1756 " push {r0} \n" 1757 " mrs r0, control \n" 1758 " tst r0, #1 \n" 1759 " bne MPU_xEventGroupSetBits_Unpriv \n" 1760 " MPU_xEventGroupSetBits_Priv: \n" 1761 " pop {r0} \n" 1762 " b MPU_xEventGroupSetBitsImpl \n" 1763 " MPU_xEventGroupSetBits_Unpriv: \n" 1764 " pop {r0} \n" 1765 " svc %0 \n" 1766 " \n" 1767 : : "i" ( SYSTEM_CALL_xEventGroupSetBits ) : "memory" 1768 ); 1769 } 1770 /*-----------------------------------------------------------*/ 1771 1772 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, 1773 const EventBits_t uxBitsToSet, 1774 const EventBits_t uxBitsToWaitFor, 1775 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1776 MPU_xEventGroupSync(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,const EventBits_t uxBitsToWaitFor,TickType_t xTicksToWait)1777 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup, 1778 const EventBits_t uxBitsToSet, 1779 const EventBits_t uxBitsToWaitFor, 1780 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1781 { 1782 __asm volatile 1783 ( 1784 " .syntax unified \n" 1785 " .extern MPU_xEventGroupSyncImpl \n" 1786 " \n" 1787 " push {r0} \n" 1788 " mrs r0, control \n" 1789 " tst r0, #1 \n" 1790 " bne MPU_xEventGroupSync_Unpriv \n" 1791 " MPU_xEventGroupSync_Priv: \n" 1792 " pop {r0} \n" 1793 " b MPU_xEventGroupSyncImpl \n" 1794 " MPU_xEventGroupSync_Unpriv: \n" 1795 " pop {r0} \n" 1796 " svc %0 \n" 1797 " \n" 1798 : : "i" ( SYSTEM_CALL_xEventGroupSync ) : "memory" 1799 ); 1800 } 1801 /*-----------------------------------------------------------*/ 1802 1803 #if ( configUSE_TRACE_FACILITY == 1 ) 1804 1805 UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1806 MPU_uxEventGroupGetNumber(void * xEventGroup)1807 UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1808 { 1809 __asm volatile 1810 ( 1811 " .syntax unified \n" 1812 " .extern MPU_uxEventGroupGetNumberImpl \n" 1813 " \n" 1814 " push {r0} \n" 1815 " mrs r0, control \n" 1816 " tst r0, #1 \n" 1817 " bne MPU_uxEventGroupGetNumber_Unpriv \n" 1818 " MPU_uxEventGroupGetNumber_Priv: \n" 1819 " pop {r0} \n" 1820 " b MPU_uxEventGroupGetNumberImpl \n" 1821 " MPU_uxEventGroupGetNumber_Unpriv: \n" 1822 " pop {r0} \n" 1823 " svc %0 \n" 1824 " \n" 1825 : : "i" ( SYSTEM_CALL_uxEventGroupGetNumber ) : "memory" 1826 ); 1827 } 1828 1829 #endif /*( configUSE_TRACE_FACILITY == 1 )*/ 1830 /*-----------------------------------------------------------*/ 1831 1832 #if ( configUSE_TRACE_FACILITY == 1 ) 1833 1834 void MPU_vEventGroupSetNumber( void * xEventGroup, 1835 UBaseType_t uxEventGroupNumber ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1836 MPU_vEventGroupSetNumber(void * xEventGroup,UBaseType_t uxEventGroupNumber)1837 void MPU_vEventGroupSetNumber( void * xEventGroup, 1838 UBaseType_t uxEventGroupNumber ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1839 { 1840 __asm volatile 1841 ( 1842 " .syntax unified \n" 1843 " .extern MPU_vEventGroupSetNumberImpl \n" 1844 " \n" 1845 " push {r0} \n" 1846 " mrs r0, control \n" 1847 " tst r0, #1 \n" 1848 " bne MPU_vEventGroupSetNumber_Unpriv \n" 1849 " MPU_vEventGroupSetNumber_Priv: \n" 1850 " pop {r0} \n" 1851 " b MPU_vEventGroupSetNumberImpl \n" 1852 " MPU_vEventGroupSetNumber_Unpriv: \n" 1853 " pop {r0} \n" 1854 " svc %0 \n" 1855 " \n" 1856 : : "i" ( SYSTEM_CALL_vEventGroupSetNumber ) : "memory" 1857 ); 1858 } 1859 1860 #endif /*( configUSE_TRACE_FACILITY == 1 )*/ 1861 /*-----------------------------------------------------------*/ 1862 1863 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, 1864 const void * pvTxData, 1865 size_t xDataLengthBytes, 1866 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1867 MPU_xStreamBufferSend(StreamBufferHandle_t xStreamBuffer,const void * pvTxData,size_t xDataLengthBytes,TickType_t xTicksToWait)1868 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, 1869 const void * pvTxData, 1870 size_t xDataLengthBytes, 1871 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1872 { 1873 __asm volatile 1874 ( 1875 " .syntax unified \n" 1876 " .extern MPU_xStreamBufferSendImpl \n" 1877 " \n" 1878 " push {r0} \n" 1879 " mrs r0, control \n" 1880 " tst r0, #1 \n" 1881 " bne MPU_xStreamBufferSend_Unpriv \n" 1882 " MPU_xStreamBufferSend_Priv: \n" 1883 " pop {r0} \n" 1884 " b MPU_xStreamBufferSendImpl \n" 1885 " MPU_xStreamBufferSend_Unpriv: \n" 1886 " pop {r0} \n" 1887 " svc %0 \n" 1888 " \n" 1889 : : "i" ( SYSTEM_CALL_xStreamBufferSend ) : "memory" 1890 ); 1891 } 1892 /*-----------------------------------------------------------*/ 1893 1894 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, 1895 void * pvRxData, 1896 size_t xBufferLengthBytes, 1897 TickType_t xTicksToWait ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1898 MPU_xStreamBufferReceive(StreamBufferHandle_t xStreamBuffer,void * pvRxData,size_t xBufferLengthBytes,TickType_t xTicksToWait)1899 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, 1900 void * pvRxData, 1901 size_t xBufferLengthBytes, 1902 TickType_t xTicksToWait ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1903 { 1904 __asm volatile 1905 ( 1906 " .syntax unified \n" 1907 " .extern MPU_xStreamBufferReceiveImpl \n" 1908 " \n" 1909 " push {r0} \n" 1910 " mrs r0, control \n" 1911 " tst r0, #1 \n" 1912 " bne MPU_xStreamBufferReceive_Unpriv \n" 1913 " MPU_xStreamBufferReceive_Priv: \n" 1914 " pop {r0} \n" 1915 " b MPU_xStreamBufferReceiveImpl \n" 1916 " MPU_xStreamBufferReceive_Unpriv: \n" 1917 " pop {r0} \n" 1918 " svc %0 \n" 1919 " \n" 1920 : : "i" ( SYSTEM_CALL_xStreamBufferReceive ) : "memory" 1921 ); 1922 } 1923 /*-----------------------------------------------------------*/ 1924 1925 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1926 MPU_xStreamBufferIsFull(StreamBufferHandle_t xStreamBuffer)1927 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1928 { 1929 __asm volatile 1930 ( 1931 " .syntax unified \n" 1932 " .extern MPU_xStreamBufferIsFullImpl \n" 1933 " \n" 1934 " push {r0} \n" 1935 " mrs r0, control \n" 1936 " tst r0, #1 \n" 1937 " bne MPU_xStreamBufferIsFull_Unpriv \n" 1938 " MPU_xStreamBufferIsFull_Priv: \n" 1939 " pop {r0} \n" 1940 " b MPU_xStreamBufferIsFullImpl \n" 1941 " MPU_xStreamBufferIsFull_Unpriv: \n" 1942 " pop {r0} \n" 1943 " svc %0 \n" 1944 " \n" 1945 : : "i" ( SYSTEM_CALL_xStreamBufferIsFull ) : "memory" 1946 ); 1947 } 1948 /*-----------------------------------------------------------*/ 1949 1950 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1951 MPU_xStreamBufferIsEmpty(StreamBufferHandle_t xStreamBuffer)1952 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1953 { 1954 __asm volatile 1955 ( 1956 " .syntax unified \n" 1957 " .extern MPU_xStreamBufferIsEmptyImpl \n" 1958 " \n" 1959 " push {r0} \n" 1960 " mrs r0, control \n" 1961 " tst r0, #1 \n" 1962 " bne MPU_xStreamBufferIsEmpty_Unpriv \n" 1963 " MPU_xStreamBufferIsEmpty_Priv: \n" 1964 " pop {r0} \n" 1965 " b MPU_xStreamBufferIsEmptyImpl \n" 1966 " MPU_xStreamBufferIsEmpty_Unpriv: \n" 1967 " pop {r0} \n" 1968 " svc %0 \n" 1969 " \n" 1970 : : "i" ( SYSTEM_CALL_xStreamBufferIsEmpty ) : "memory" 1971 ); 1972 } 1973 /*-----------------------------------------------------------*/ 1974 1975 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 1976 MPU_xStreamBufferSpacesAvailable(StreamBufferHandle_t xStreamBuffer)1977 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 1978 { 1979 __asm volatile 1980 ( 1981 " .syntax unified \n" 1982 " .extern MPU_xStreamBufferSpacesAvailableImpl \n" 1983 " \n" 1984 " push {r0} \n" 1985 " mrs r0, control \n" 1986 " tst r0, #1 \n" 1987 " bne MPU_xStreamBufferSpacesAvailable_Unpriv \n" 1988 " MPU_xStreamBufferSpacesAvailable_Priv: \n" 1989 " pop {r0} \n" 1990 " b MPU_xStreamBufferSpacesAvailableImpl \n" 1991 " MPU_xStreamBufferSpacesAvailable_Unpriv: \n" 1992 " pop {r0} \n" 1993 " svc %0 \n" 1994 " \n" 1995 : : "i" ( SYSTEM_CALL_xStreamBufferSpacesAvailable ) : "memory" 1996 ); 1997 } 1998 /*-----------------------------------------------------------*/ 1999 2000 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 2001 MPU_xStreamBufferBytesAvailable(StreamBufferHandle_t xStreamBuffer)2002 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 2003 { 2004 __asm volatile 2005 ( 2006 " .syntax unified \n" 2007 " .extern MPU_xStreamBufferBytesAvailableImpl \n" 2008 " \n" 2009 " push {r0} \n" 2010 " mrs r0, control \n" 2011 " tst r0, #1 \n" 2012 " bne MPU_xStreamBufferBytesAvailable_Unpriv \n" 2013 " MPU_xStreamBufferBytesAvailable_Priv: \n" 2014 " pop {r0} \n" 2015 " b MPU_xStreamBufferBytesAvailableImpl \n" 2016 " MPU_xStreamBufferBytesAvailable_Unpriv: \n" 2017 " pop {r0} \n" 2018 " svc %0 \n" 2019 " \n" 2020 : : "i" ( SYSTEM_CALL_xStreamBufferBytesAvailable ) : "memory" 2021 ); 2022 } 2023 /*-----------------------------------------------------------*/ 2024 2025 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, 2026 size_t xTriggerLevel ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 2027 MPU_xStreamBufferSetTriggerLevel(StreamBufferHandle_t xStreamBuffer,size_t xTriggerLevel)2028 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, 2029 size_t xTriggerLevel ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 2030 { 2031 __asm volatile 2032 ( 2033 " .syntax unified \n" 2034 " .extern MPU_xStreamBufferSetTriggerLevelImpl \n" 2035 " \n" 2036 " push {r0} \n" 2037 " mrs r0, control \n" 2038 " tst r0, #1 \n" 2039 " bne MPU_xStreamBufferSetTriggerLevel_Unpriv \n" 2040 " MPU_xStreamBufferSetTriggerLevel_Priv: \n" 2041 " pop {r0} \n" 2042 " b MPU_xStreamBufferSetTriggerLevelImpl \n" 2043 " MPU_xStreamBufferSetTriggerLevel_Unpriv: \n" 2044 " pop {r0} \n" 2045 " svc %0 \n" 2046 " \n" 2047 : : "i" ( SYSTEM_CALL_xStreamBufferSetTriggerLevel ) : "memory" 2048 ); 2049 } 2050 /*-----------------------------------------------------------*/ 2051 2052 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) __attribute__( ( naked ) ) FREERTOS_SYSTEM_CALL; 2053 MPU_xStreamBufferNextMessageLengthBytes(StreamBufferHandle_t xStreamBuffer)2054 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* __attribute__ (( naked )) FREERTOS_SYSTEM_CALL */ 2055 { 2056 __asm volatile 2057 ( 2058 " .syntax unified \n" 2059 " .extern MPU_xStreamBufferNextMessageLengthBytesImpl \n" 2060 " \n" 2061 " push {r0} \n" 2062 " mrs r0, control \n" 2063 " tst r0, #1 \n" 2064 " bne MPU_xStreamBufferNextMessageLengthBytes_Unpriv \n" 2065 " MPU_xStreamBufferNextMessageLengthBytes_Priv: \n" 2066 " pop {r0} \n" 2067 " b MPU_xStreamBufferNextMessageLengthBytesImpl \n" 2068 " MPU_xStreamBufferNextMessageLengthBytes_Unpriv: \n" 2069 " pop {r0} \n" 2070 " svc %0 \n" 2071 " \n" 2072 : : "i" ( SYSTEM_CALL_xStreamBufferNextMessageLengthBytes ) : "memory" 2073 ); 2074 } 2075 /*-----------------------------------------------------------*/ 2076 2077 #endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */ 2078