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