Lines Matching +full:- +full:s
3 * Copyright (C) 2015-2019 Cadence Design Systems, Inc.
6 * SPDX-License-Identifier: MIT
83 * Implements the Xtensa RTOS porting layer's XT_RTOS_INT_ENTER function for
96 /* Save a12-13 in the stack frame as required by _xt_context_save. */
103 /* Save the rest of the interrupted context (preserves A12-13). */
107 Save interrupted task's SP in TCB only if not nesting.
123 s32i a1, a2, TOPOFSTACK_OFFS /* pxCurrentTCB->pxTopOfStack = SP */
136 * Implements the Xtensa RTOS porting layer's XT_RTOS_INT_EXIT function for
138 * switching, restore the (possibly) new task's context, and return to the
139 * exit dispatcher saved in the task's stack frame at XT_STK_EXIT.
157 addi a2, a2, -1 /* decrement nesting count */
164 l32i a1, a2, TOPOFSTACK_OFFS /* SP = pxCurrentTCB->pxTopOfStack */
174 Call0 ABI callee-saved regs a12-15 need to be saved before possible preemption.
175 However a12-13 were already saved by _frxt_int_enter().
186 call0 _frxt_dispatch /* tail-call dispatcher */
199 In either case there's no need to load the SP.
207 this was called. Interruptee's A0, A1, PS, PC are restored and the interrupt
219 * Implements the Xtensa RTOS porting layer's XT_RTOS_TIMER_INT function for FreeRTOS.
247 diff = read_ccount() - old_ccompare;
289 sub a4, a4, a3 /* diff = ccount - old comparator */
344 * including vPortYield() and vPortYieldFromInt(), all of which tail-call this dispatcher
350 * If restoring a task that was preempted, restores all state including the task's CPENABLE.
354 * Because it is tail-called without a true function entrypoint, it needs no 'entry' instruction.
375 l32i sp, a3, TOPOFSTACK_OFFS /* SP = next_TCB->pxTopOfStack; */
409 /* Restore CPENABLE from task's co-processor save area. */
413 l16ui a3, a2, XT_CPENABLE /* CPENABLE = cp_state->cpenable; */
420 /* In Call0 ABI, restore callee-saved regs (A12, A13 already restored). */
433 this was called. Interruptee's A0, A1, PS, PC are restored and the interrupt
446 * then tail-calls the dispatcher _frxt_dispatch() to perform the actual context switch
462 addi sp, sp, -XT_SOL_FRMSZ
471 s32i a12, sp, XT_SOL_A12 /* save callee-saved registers */
479 movi a6, ~(PS_WOE_MASK|PS_INTLEVEL_MASK) /* spills a4-a7 if needed */
492 /* Save coprocessor callee-saved state (if any). At this point CPENABLE */
501 s32i sp, a2, TOPOFSTACK_OFFS /* pxCurrentTCB->pxTopOfStack = SP */
504 /* Clear CPENABLE, also in task's co-processor state save area. */
505 l32i a2, a2, CP_TOPOFSTACK_OFFS /* a2 = pxCurrentTCB->cp_state */
513 /* Tail-call dispatcher. */
523 * This calls the context switch hook (removed), saves and clears CPENABLE, then tail-calls the disp…
527 * Interrupted task context has been saved in an interrupt stack frame at pxCurrentTCB->pxTopOfSta…
533 * Call0 ABI tail-calls the dispatcher directly (no need to unwind) so does not return to caller.
545 /* Save CPENABLE in task's co-processor save area, and clear CPENABLE. */
551 s16i a3, a2, XT_CPENABLE /* cp_state->cpenable = CPENABLE; */
553 wsr a3, CPENABLE /* disable all co-processors */
557 /* Tail-call dispatcher. */
569 * Implements the Xtensa RTOS porting layer's XT_RTOS_CP_STATE function for FreeRTOS.
573 * Returns in A15 a pointer to the base of the co-processor state save area for the current task.