1 /* 2 * Copyright (c) 2006-2023, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2022-07-27 Emuzit first version 9 */ 10 #ifndef __ISR_SP_H__ 11 #define __ISR_SP_H__ 12 13 /* usrstack is no more in use right after rt_system_scheduler_start(). 14 * It is also the time global interrupt is enabled. 15 */ 16 #define isr_sp_enter() \ 17 asm("la t0, rt_interrupt_nest"); \ 18 asm("bnez t0, 1f"); \ 19 asm("la t0, _eusrstack"); \ 20 asm("sw sp, -4(t0)"); \ 21 asm("addi sp, t0, -4"); \ 22 asm("1:") 23 24 #define isr_sp_leave() \ 25 asm("la t0, rt_interrupt_nest"); \ 26 asm("bnez t0, 1f"); \ 27 asm("la t0, _eusrstack"); \ 28 asm("lw sp, -4(t0)"); \ 29 asm("1:") 30 31 #endif 32