xref: /nrf52832-nimble/rt-thread/libcpu/nios/nios_ii/vector.S (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero.set noat
2*10465441SEvalZero
3*10465441SEvalZero.globl .Lexception_exit
4*10465441SEvalZero
5*10465441SEvalZero.section .exceptions.exit.label
6*10465441SEvalZero.Lexception_exit:
7*10465441SEvalZero.section .exceptions.exit, "xa"
8*10465441SEvalZero        ldw r5, 68(sp)
9*10465441SEvalZero
10*10465441SEvalZero        /* get exception back */
11*10465441SEvalZero        ldw ea, 72(sp)
12*10465441SEvalZero
13*10465441SEvalZero        /* if(rt_thread_switch_interrupt_flag == 0) goto no_need_context */
14*10465441SEvalZero        ldw r4,%gprel(rt_thread_switch_interrupt_flag)(gp)
15*10465441SEvalZero        beq r4,zero,no_need_context
16*10465441SEvalZero
17*10465441SEvalZeroneed_context:
18*10465441SEvalZero        movia ea, rt_hw_context_switch_interrupt_do
19*10465441SEvalZero        /* disable interrupt */
20*10465441SEvalZero        mov r5, zero
21*10465441SEvalZero
22*10465441SEvalZerono_need_context:
23*10465441SEvalZero        ldw ra,  0(sp)
24*10465441SEvalZero
25*10465441SEvalZero        wrctl estatus, r5
26*10465441SEvalZero
27*10465441SEvalZero        /*
28*10465441SEvalZero         * Leave a gap in the stack frame at 4(sp) for the muldiv handler to
29*10465441SEvalZero         * store zero into.
30*10465441SEvalZero         */
31*10465441SEvalZero
32*10465441SEvalZero        ldw   r1,   8(sp)
33*10465441SEvalZero        ldw   r2,  12(sp)
34*10465441SEvalZero        ldw   r3,  16(sp)
35*10465441SEvalZero        ldw   r4,  20(sp)
36*10465441SEvalZero        ldw   r5,  24(sp)
37*10465441SEvalZero        ldw   r6,  28(sp)
38*10465441SEvalZero        ldw   r7,  32(sp)
39*10465441SEvalZero        ldw   r8,  36(sp)
40*10465441SEvalZero        ldw   r9,  40(sp)
41*10465441SEvalZero        ldw   r10, 44(sp)
42*10465441SEvalZero        ldw   r11, 48(sp)
43*10465441SEvalZero        ldw   r12, 52(sp)
44*10465441SEvalZero        ldw   r13, 56(sp)
45*10465441SEvalZero        ldw   r14, 60(sp)
46*10465441SEvalZero        ldw   r15, 64(sp)
47*10465441SEvalZero
48*10465441SEvalZero        addi  sp, sp, 76
49*10465441SEvalZero
50*10465441SEvalZero        eret
51*10465441SEvalZero
52