1 /* 2 * FreeRTOS Kernel V11.1.0 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 #ifndef PORT_ASM_H 30 #define PORT_ASM_H 31 32 portSAVE_CONTEXT macro 33 /* Save the remaining registers. */ 34 push r4 35 push r5 36 push r6 37 push r7 38 push r8 39 push r9 40 push r10 41 push r11 42 push r12 43 push r13 44 push r14 45 push r15 46 mov.w &_usCriticalNesting, r14 47 push r14 48 mov.w &_pxCurrentTCB, r12 49 mov.w r1, @r12 50 endm 51 /*-----------------------------------------------------------*/ 52 53 portRESTORE_CONTEXT macro 54 mov.w &_pxCurrentTCB, r12 55 mov.w @r12, r1 56 pop r15 57 mov.w r15, &_usCriticalNesting 58 pop r15 59 pop r14 60 pop r13 61 pop r12 62 pop r11 63 pop r10 64 pop r9 65 pop r8 66 pop r7 67 pop r6 68 pop r5 69 pop r4 70 71 /* The last thing on the stack will be the status register. 72 Ensure the power down bits are clear ready for the next 73 time this power down register is popped from the stack. */ 74 bic.w #0xf0,0(SP) 75 76 reti 77 endm 78 /*-----------------------------------------------------------*/ 79 80 #endif 81