This commit is contained in:
cxy004 2021-08-16 07:01:40 +08:00
parent f8dee74f7c
commit e04605d2fd
2 changed files with 13 additions and 19 deletions

View File

@ -66,7 +66,7 @@ SUPV_TCB:
// Count // Count
.word 0 .word 0
// Compare // Compare
.word 0 .word -1
// STATUS // STATUS
.word STATUSF_IP5 | STATUSF_IP4 | ST0_IE .word STATUSF_IP5 | STATUSF_IP4 | ST0_IE
// EPC // EPC

View File

@ -25,62 +25,56 @@
nop nop
mfc0 k1, CP0_STATUS mfc0 k1, CP0_STATUS
and k0, k0, k1 and k0, k0, k1
7:
andi k1, k0, C_IRQ5 andi k1, k0, C_IRQ5
7:
beqz k1, 6f beqz k1, 6f
nop andi k1, k0, C_IRQ4
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
lw k0, %lo(current_thread)(k0) lw k0, %lo(current_thread)(k0)
lw k1, TF_INTHDL7(k0) lw k1, TF_INTHDL7(k0)
jr k1 jr k1
nop nop
6: 6:
andi k1, k0, C_IRQ4
beqz k1, 5f beqz k1, 5f
nop andi k1, k0, C_IRQ3
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
lw k0, %lo(current_thread)(k0) lw k0, %lo(current_thread)(k0)
lw k1, TF_INTHDL6(k0) lw k1, TF_INTHDL6(k0)
jr k1 jr k1
nop nop
5: 5:
andi k1, k0, C_IRQ3
beqz k1, 4f beqz k1, 4f
nop andi k1, k0, C_IRQ2
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
lw k0, %lo(current_thread)(k0) lw k0, %lo(current_thread)(k0)
lw k1, TF_INTHDL5(k0) lw k1, TF_INTHDL5(k0)
jr k1 jr k1
nop nop
4: 4:
andi k1, k0, C_IRQ2
beqz k1, 3f beqz k1, 3f
nop andi k1, k0, C_IRQ1
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
lw k0, %lo(current_thread)(k0) lw k0, %lo(current_thread)(k0)
lw k1, TF_INTHDL4(k0) lw k1, TF_INTHDL4(k0)
jr k1 jr k1
nop nop
3: 3:
andi k1, k0, C_IRQ1
beqz k1, 2f beqz k1, 2f
nop andi k1, k0, C_IRQ0
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
lw k0, %lo(current_thread)(k0) lw k0, %lo(current_thread)(k0)
lw k1, TF_INTHDL3(k0) lw k1, TF_INTHDL3(k0)
jr k1 jr k1
nop nop
2: 2:
andi k1, k0, C_IRQ0
beqz k1, 1f beqz k1, 1f
nop andi k1, k0, C_SW1
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
lw k0, %lo(current_thread)(k0) lw k0, %lo(current_thread)(k0)
lw k1, TF_INTHDL2(k0) lw k1, TF_INTHDL2(k0)
jr k1 jr k1
nop nop
1: 1:
andi k1, k0, C_SW1
beqz k1, 0f beqz k1, 0f
nop nop
lui k0, %hi(current_thread) lui k0, %hi(current_thread)
@ -168,21 +162,21 @@ RESTART_LOAD:
lw s1, TF_s1(k0) lw s1, TF_s1(k0)
lw s2, TF_s2(k0) lw s2, TF_s2(k0)
lw s3, TF_s3(k0) lw s3, TF_s3(k0)
lw k1, TF_COUNT(k0)
lw s4, TF_s4(k0) lw s4, TF_s4(k0)
lw s5, TF_s5(k0) lw s5, TF_s5(k0)
mtc0 k1, CP0_COUNT
lw s6, TF_s6(k0) lw s6, TF_s6(k0)
lw s7, TF_s7(k0) lw s7, TF_s7(k0)
lw k1, TF_COMPARE(k0)
lw t8, TF_t8(k0) lw t8, TF_t8(k0)
lw t9, TF_t9(k0) lw t9, TF_t9(k0)
mtc0 k1, CP0_COMPARE
lw gp, TF_gp(k0) lw gp, TF_gp(k0)
lw sp, TF_sp(k0) lw sp, TF_sp(k0)
lw k1, TF_EPC(k0)
lw fp, TF_fp(k0) lw fp, TF_fp(k0)
lw ra, TF_ra(k0) lw ra, TF_ra(k0)
lw k1, TF_COUNT(k0)
mtc0 k1, CP0_COUNT
lw k1, TF_COMPARE(k0)
mtc0 k1, CP0_COMPARE
lw k1, TF_EPC(k0)
mtc0 k1, CP0_EPC mtc0 k1, CP0_EPC
.global RESTART .global RESTART