From e04605d2fdf09aa455fc48957131d37034e24eef Mon Sep 17 00:00:00 2001 From: cxy004 Date: Mon, 16 Aug 2021 07:01:40 +0800 Subject: [PATCH] game fix --- resources/ping-pong-mips32/game/game/init.S | 2 +- resources/ping-pong-mips32/game/game/trap.S | 30 +++++++++------------ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/resources/ping-pong-mips32/game/game/init.S b/resources/ping-pong-mips32/game/game/init.S index 7bc6c48..dba2116 100644 --- a/resources/ping-pong-mips32/game/game/init.S +++ b/resources/ping-pong-mips32/game/game/init.S @@ -66,7 +66,7 @@ SUPV_TCB: // Count .word 0 // Compare - .word 0 + .word -1 // STATUS .word STATUSF_IP5 | STATUSF_IP4 | ST0_IE // EPC diff --git a/resources/ping-pong-mips32/game/game/trap.S b/resources/ping-pong-mips32/game/game/trap.S index fb325bc..ef3fed3 100644 --- a/resources/ping-pong-mips32/game/game/trap.S +++ b/resources/ping-pong-mips32/game/game/trap.S @@ -25,62 +25,56 @@ nop mfc0 k1, CP0_STATUS and k0, k0, k1 -7: andi k1, k0, C_IRQ5 +7: beqz k1, 6f - nop + andi k1, k0, C_IRQ4 lui k0, %hi(current_thread) lw k0, %lo(current_thread)(k0) lw k1, TF_INTHDL7(k0) jr k1 nop 6: - andi k1, k0, C_IRQ4 beqz k1, 5f - nop + andi k1, k0, C_IRQ3 lui k0, %hi(current_thread) lw k0, %lo(current_thread)(k0) lw k1, TF_INTHDL6(k0) jr k1 nop 5: - andi k1, k0, C_IRQ3 beqz k1, 4f - nop + andi k1, k0, C_IRQ2 lui k0, %hi(current_thread) lw k0, %lo(current_thread)(k0) lw k1, TF_INTHDL5(k0) jr k1 nop 4: - andi k1, k0, C_IRQ2 beqz k1, 3f - nop + andi k1, k0, C_IRQ1 lui k0, %hi(current_thread) lw k0, %lo(current_thread)(k0) lw k1, TF_INTHDL4(k0) jr k1 nop 3: - andi k1, k0, C_IRQ1 beqz k1, 2f - nop + andi k1, k0, C_IRQ0 lui k0, %hi(current_thread) lw k0, %lo(current_thread)(k0) lw k1, TF_INTHDL3(k0) jr k1 nop 2: - andi k1, k0, C_IRQ0 beqz k1, 1f - nop + andi k1, k0, C_SW1 lui k0, %hi(current_thread) lw k0, %lo(current_thread)(k0) lw k1, TF_INTHDL2(k0) jr k1 nop 1: - andi k1, k0, C_SW1 beqz k1, 0f nop lui k0, %hi(current_thread) @@ -168,21 +162,21 @@ RESTART_LOAD: lw s1, TF_s1(k0) lw s2, TF_s2(k0) lw s3, TF_s3(k0) + lw k1, TF_COUNT(k0) lw s4, TF_s4(k0) lw s5, TF_s5(k0) + mtc0 k1, CP0_COUNT lw s6, TF_s6(k0) lw s7, TF_s7(k0) + lw k1, TF_COMPARE(k0) lw t8, TF_t8(k0) lw t9, TF_t9(k0) + mtc0 k1, CP0_COMPARE lw gp, TF_gp(k0) lw sp, TF_sp(k0) + lw k1, TF_EPC(k0) lw fp, TF_fp(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 .global RESTART