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