Rev 314 | Rev 319 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 314 | Rev 317 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | #define __ASM__ |
29 | #define __ASM__ |
30 | 30 | ||
31 | #include <arch/asm/regname.h> |
31 | #include <arch/asm/regname.h> |
32 | #include <arch/mm/page.h> |
32 | #include <arch/mm/page.h> |
33 | #include <arch/asm/boot.h> |
33 | #include <arch/asm/boot.h> |
34 | #include <arch/context.h> |
34 | #include <arch/context_offset.h> |
35 | 35 | ||
36 | .text |
36 | .text |
37 | 37 | ||
38 | .set noat |
38 | .set noat |
39 | .set noreorder |
39 | .set noreorder |
Line 53... | Line 53... | ||
53 | sw $v1,EOFFSET_V1(\r) |
53 | sw $v1,EOFFSET_V1(\r) |
54 | sw $a0,EOFFSET_A0(\r) |
54 | sw $a0,EOFFSET_A0(\r) |
55 | sw $a1,EOFFSET_A1(\r) |
55 | sw $a1,EOFFSET_A1(\r) |
56 | sw $a2,EOFFSET_A2(\r) |
56 | sw $a2,EOFFSET_A2(\r) |
57 | sw $a3,EOFFSET_A3(\r) |
57 | sw $a3,EOFFSET_A3(\r) |
58 | sw $t0,EOFFSET_A4(\r) |
58 | sw $t0,EOFFSET_T0(\r) |
59 | sw $t1,EOFFSET_T1(\r) |
59 | sw $t1,EOFFSET_T1(\r) |
60 | sw $t2,EOFFSET_T2(\r) |
60 | sw $t2,EOFFSET_T2(\r) |
61 | sw $t3,EOFFSET_T3(\r) |
61 | sw $t3,EOFFSET_T3(\r) |
62 | sw $t4,EOFFSET_T4(\r) |
62 | sw $t4,EOFFSET_T4(\r) |
63 | sw $t5,EOFFSET_T5(\r) |
63 | sw $t5,EOFFSET_T5(\r) |
Line 84... | Line 84... | ||
84 | sw $ra,EOFFSET_RA(\r) |
84 | sw $ra,EOFFSET_RA(\r) |
85 | sw $sp,EOFFSET_SP(\r) |
85 | sw $sp,EOFFSET_SP(\r) |
86 | 86 | ||
87 | mfc0 $at, $status |
87 | mfc0 $at, $status |
88 | sw $at,EOFFSET_STATUS(\r) |
88 | sw $at,EOFFSET_STATUS(\r) |
- | 89 | mfc0 $at, $epc |
|
- | 90 | sw $at,EOFFSET_EPC(\r) |
|
89 | .endm |
91 | .endm |
90 | 92 | ||
91 | .macro REGISTERS_LOAD r |
93 | .macro REGISTERS_LOAD r |
92 | lw $v0,EOFFSET_V0(\r) |
94 | lw $v0,EOFFSET_V0(\r) |
93 | lw $v1,EOFFSET_V1(\r) |
95 | lw $v1,EOFFSET_V1(\r) |
94 | lw $a0,EOFFSET_A0(\r) |
96 | lw $a0,EOFFSET_A0(\r) |
95 | lw $a1,EOFFSET_A1(\r) |
97 | lw $a1,EOFFSET_A1(\r) |
96 | lw $a2,EOFFSET_A2(\r) |
98 | lw $a2,EOFFSET_A2(\r) |
97 | lw $a3,EOFFSET_A3(\r) |
99 | lw $a3,EOFFSET_A3(\r) |
98 | lw $t0,EOFFSET_A4(\r) |
100 | lw $t0,EOFFSET_T0(\r) |
99 | lw $t1,EOFFSET_T1(\r) |
101 | lw $t1,EOFFSET_T1(\r) |
100 | lw $t2,EOFFSET_T2(\r) |
102 | lw $t2,EOFFSET_T2(\r) |
101 | lw $t3,EOFFSET_T3(\r) |
103 | lw $t3,EOFFSET_T3(\r) |
102 | lw $t4,EOFFSET_T4(\r) |
104 | lw $t4,EOFFSET_T4(\r) |
103 | lw $t5,EOFFSET_T5(\r) |
105 | lw $t5,EOFFSET_T5(\r) |
Line 122... | Line 124... | ||
122 | lw $at,EOFFSET_HI(\r) |
124 | lw $at,EOFFSET_HI(\r) |
123 | mthi $at |
125 | mthi $at |
124 | 126 | ||
125 | lw $at,EOFFSET_STATUS(\r) |
127 | lw $at,EOFFSET_STATUS(\r) |
126 | mtc0 $at, $status |
128 | mtc0 $at, $status |
- | 129 | lw $at,EOFFSET_EPC(\r) |
|
- | 130 | mtc0 $at, $epc |
|
127 | 131 | ||
128 | lw $at,EOFFSET_AT(\r) |
132 | lw $at,EOFFSET_AT(\r) |
129 | lw $sp,EOFFSET_SP(\r) |
133 | lw $sp,EOFFSET_SP(\r) |
130 | .endm |
134 | .endm |
131 | 135 | ||
Line 189... | Line 193... | ||
189 | KERNEL_STACK_TO_K0 |
193 | KERNEL_STACK_TO_K0 |
190 | sub $k0, REGISTER_SPACE |
194 | sub $k0, REGISTER_SPACE |
191 | REGISTERS_STORE $k0 |
195 | REGISTERS_STORE $k0 |
192 | add $sp, $k0, 0 |
196 | add $sp, $k0, 0 |
193 | 197 | ||
194 | jal exception |
198 | add $a0, $sp, 0 |
- | 199 | jal exception /* exception(register_space) */ |
|
195 | nop |
200 | nop |
196 | 201 | ||
197 | REGISTERS_LOAD $sp |
202 | REGISTERS_LOAD $sp |
198 | # The $sp is automatically restored to former value |
203 | # The $sp is automatically restored to former value |
199 | eret |
204 | eret |
Line 203... | Line 208... | ||
203 | KERNEL_STACK_TO_K0 |
208 | KERNEL_STACK_TO_K0 |
204 | sub $k0, REGISTER_SPACE |
209 | sub $k0, REGISTER_SPACE |
205 | REGISTERS_STORE $k0 |
210 | REGISTERS_STORE $k0 |
206 | add $sp, $k0, 0 |
211 | add $sp, $k0, 0 |
207 | 212 | ||
208 | jal tlb_refill |
213 | add $a0, $sp, 0 |
- | 214 | jal tlb_refill /* tlb_refill(register_space) */ |
|
209 | nop |
215 | nop |
210 | 216 | ||
211 | REGISTERS_LOAD $sp |
217 | REGISTERS_LOAD $sp |
212 | 218 | ||
213 | eret |
219 | eret |