Lines Matching +full:pico +full:- +full:sdk
6 * SPDX-License-Identifier: MIT AND BSD-3-Clause
30 /*----------------------------------------------------------------------
32 *----------------------------------------------------------------------*/
43 * use this flag to determine if we need multi-core functionality.
46 #include "pico/multicore.h"
70 /* The systick is a 24-bit counter. */
80 /* Let the user override the pre-loading of the initial LR with the address of
113 /*-----------------------------------------------------------*/
124 /*-----------------------------------------------------------*/
127 #include "pico/lock_core.h"
167 /*-----------------------------------------------------------*/
189 …pxTopOfStack--; /* Offset added to account for the way th… in pxPortInitialiseStack()
191 pxTopOfStack--; in pxPortInitialiseStack()
193 pxTopOfStack--; in pxPortInitialiseStack()
195 pxTopOfStack -= 5; /* R12, R3, R2 and R1. */ in pxPortInitialiseStack()
197 pxTopOfStack -= 8; /* R11..R4. */ in pxPortInitialiseStack()
201 /*-----------------------------------------------------------*/
210 /*-----------------------------------------------------------*/
217 /*-----------------------------------------------------------*/
232 … " pop {r0-r5} \n" /* Pop the registers that are saved automatically. */ in vPortStartFirstTask()
266 … " pop {r0-r5} \n" /* Pop the registers that are saved automatically. */ in vPortStartFirstTask()
282 /*-----------------------------------------------------------*/
444 /*-----------------------------------------------------------*/
451 /*-----------------------------------------------------------*/
458 * cleared when interrupts are re-enabled, so should be NULL */ in vPortYield()
471 /*-----------------------------------------------------------*/
482 /*-----------------------------------------------------------*/
488 uxCriticalNesting--; in vPortExitCritical()
512 /*-----------------------------------------------------------*/
523 /*-----------------------------------------------------------*/
534 /*-----------------------------------------------------------*/
539 …* xCoreID is not used in this function due to this is a dual-core system. The yielding core must b… in vYieldCore()
548 sio_hw->fifo_wr = 0; in vYieldCore()
552 /*-----------------------------------------------------------*/
568 …" stmia r0!, {r4-r7} \n" /* Store the low registers that are not saved automati… in xPortPendSVHandler()
573 " stmia r0!, {r4-r7} \n" in xPortPendSVHandler()
582 * b) if we were interrupted in the interim, then any "safe" - i.e. in xPortPendSVHandler()
583 * does the right thing in an IRQ - use of the divider should in xPortPendSVHandler()
584 * have waited for any in-process divide to complete, saved and in xPortPendSVHandler()
594 * frame expected by debuggers - this is addressed by in xPortPendSVHandler()
597 " stmia r0!, {r4-r7} \n" in xPortPendSVHandler()
608 " ldmia r0!, {r4-r7} \n" /* Pop the high registers. */ in xPortPendSVHandler()
620 " ldmia r0!, {r4-r7} \n" /* Pop the divider state. */ in xPortPendSVHandler()
633 " ldmia r0!, {r4-r7} \n" /* Pop low registers. */ in xPortPendSVHandler()
658 …" stmia r1!, {r4-r7} \n" /* Store the low registers that are not saved automati… in xPortPendSVHandler()
663 " stmia r1!, {r4-r7} \n" in xPortPendSVHandler()
670 * b) if we were interrupted in the interim, then any "safe" - i.e. in xPortPendSVHandler()
671 * does the right thing in an IRQ - use of the divider should in xPortPendSVHandler()
672 * have waited for any in-process divide to complete, saved and in xPortPendSVHandler()
682 * frame expected by debuggers - this is addressed by in xPortPendSVHandler()
685 " stmia r1!, {r4-r7} \n" in xPortPendSVHandler()
701 " ldmia r0!, {r4-r7} \n" /* Pop the high registers. */ in xPortPendSVHandler()
713 " ldmia r0!, {r4-r7} \n" /* Pop the divider state. */ in xPortPendSVHandler()
726 " ldmia r0!, {r4-r7} \n" /* Pop low registers. */ in xPortPendSVHandler()
737 /*-----------------------------------------------------------*/
760 /*-----------------------------------------------------------*/
782 portNVIC_SYSTICK_LOAD_REG = ( clock_get_hz( clk_sys ) / configTICK_RATE_HZ ) - 1UL; in vPortSetupTimerInterrupt()
785 /*-----------------------------------------------------------*/
807 * tick periods. -1 is used because this code will execute part way in vPortSuppressTicksAndSleep()
809 …e = portNVIC_SYSTICK_CURRENT_VALUE_REG + ( ulTimerCountsForOneTick * ( xExpectedIdleTime - 1UL ) ); in vPortSuppressTicksAndSleep()
813 ulReloadValue -= ulStoppedTimerCompensation; in vPortSuppressTicksAndSleep()
835 portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL; in vPortSuppressTicksAndSleep()
837 /* Re-enable interrupts - see comments above the cpsid instruction() in vPortSuppressTicksAndSleep()
870 /* Re-enable interrupts to allow the interrupt that brought the MCU in vPortSuppressTicksAndSleep()
907 …ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CUR… in vPortSuppressTicksAndSleep()
914 ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ); in vPortSuppressTicksAndSleep()
922 ulCompleteTickPeriods = xExpectedIdleTime - 1UL; in vPortSuppressTicksAndSleep()
930 …ulCompletedSysTickDecrements = ( xExpectedIdleTime * ulTimerCountsForOneTick ) - portNVIC_SYSTICK_… in vPortSuppressTicksAndSleep()
938 …CK_LOAD_REG = ( ( ulCompleteTickPeriods + 1UL ) * ulTimerCountsForOneTick ) - ulCompletedSysTickDe… in vPortSuppressTicksAndSleep()
947 portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL; in vPortSuppressTicksAndSleep()
962 xDelay -= ulTickPeriod; in prvGetTicksToWaitBefore()
1004 /* reduce to range 0-24 */ in prvGetEventGroupBit()
1028 spin_unlock( pxLock->spin_lock, ulSave ); in vPortLockInternalSpinUnlockWithWait()
1038 configASSERT( pxLock->spin_lock ); in vPortLockInternalSpinUnlockWithWait()
1040 pxYieldSpinLock[ xCoreID ] = pxLock->spin_lock; in vPortLockInternalSpinUnlockWithWait()
1042 xEventGroupWaitBits( xEventGroup, prvGetEventGroupBit( pxLock->spin_lock ), in vPortLockInternalSpinUnlockWithWait()
1050 EventBits_t uxBits = prvGetEventGroupBit( pxLock->spin_lock ); in vPortLockInternalSpinUnlockWithNotify()
1058 spin_unlock( pxLock->spin_lock, ulSave ); in vPortLockInternalSpinUnlockWithNotify()
1079 if( pxCrossCoreSpinLock != pxLock->spin_lock ) in vPortLockInternalSpinUnlockWithNotify()
1091 sio_hw->fifo_wr = 0; in vPortLockInternalSpinUnlockWithNotify()
1093 spin_unlock( pxLock->spin_lock, ulSave ); in vPortLockInternalSpinUnlockWithNotify()
1106 spin_unlock( pxLock->spin_lock, ulSave ); in xPortLockInternalSpinUnlockWithBestEffortWaitOrTimeout()
1121 configASSERT( pxLock->spin_lock ); in xPortLockInternalSpinUnlockWithBestEffortWaitOrTimeout()
1123 pxYieldSpinLock[ xCoreID ] = pxLock->spin_lock; in xPortLockInternalSpinUnlockWithBestEffortWaitOrTimeout()
1126 prvGetEventGroupBit( pxLock->spin_lock ), pdTRUE, in xPortLockInternalSpinUnlockWithBestEffortWaitOrTimeout()
1131 spin_unlock( pxLock->spin_lock, ulSave ); in xPortLockInternalSpinUnlockWithBestEffortWaitOrTimeout()
1153 * is used by the overrides of the SDK wait/notify primitives */ in prvRuntimeInitializer()