From c6c42ec6b62e15b31f44d02885356ad320c6f189 Mon Sep 17 00:00:00 2001 From: Roberto Hexsel <roberto@inf.ufpr.br> Date: Fri, 14 Oct 2016 17:54:14 -0300 Subject: [PATCH] CAUSE always updated -- except if STATUS.EXL=1 --- cMIPS/include/start.s | 1 - cMIPS/tests/badVAddr.s | 2 +- cMIPS/tests/interr_x2.s | 2 +- cMIPS/tests/mmu_inval.s | 2 +- cMIPS/tests/mmu_inval2.s | 2 +- cMIPS/tests/mmu_refill.s | 2 +- cMIPS/tests/mmu_refill2.s | 2 +- cMIPS/tests/mmu_refill3.s | 2 +- cMIPS/tests/pt_walk.c | 4 ++-- 9 files changed, 9 insertions(+), 10 deletions(-) diff --git a/cMIPS/include/start.s b/cMIPS/include/start.s index 5f2ca43..ac090a7 100644 --- a/cMIPS/include/start.s +++ b/cMIPS/include/start.s @@ -169,7 +169,6 @@ _excp_0000: mtc0 $k1, c0_entrylo1 # EntryLo1 <- k1 = odd element ehb tlbwr # update TLB - mfc0 $zero, c0_cause # clear excCode in Cause eret .end _excp_0000 diff --git a/cMIPS/tests/badVAddr.s b/cMIPS/tests/badVAddr.s index 81d611c..74b6d95 100644 --- a/cMIPS/tests/badVAddr.s +++ b/cMIPS/tests/badVAddr.s @@ -62,7 +62,7 @@ excp_180: mfc0 $k0, c0_cause sw $k0, 0($14) # print CAUSE - mfc0 $k0, c0_epc # fix return address + mfc0 $k0, c0_epc # fix return address sw $k0, 0($14) # print EPC addiu $k1, $zero, -4 # -4 = 0xffff.fffc and $k1, $k1, $k0 # fix the invalid address diff --git a/cMIPS/tests/interr_x2.s b/cMIPS/tests/interr_x2.s index 380b84b..72bdfe1 100644 --- a/cMIPS/tests/interr_x2.s +++ b/cMIPS/tests/interr_x2.s @@ -139,7 +139,7 @@ lo_pri: lui $k0, %hi(ext_restart) rf_irq: sw $k1, 0x20($15) # print IRQ source sw $13, 0x20($15) - li $k0, 0x1000f003 # CP0active, enable COUNT irq, EXL=1 + li $k0, 0x1000f001 # CP0active, enable COUNT irq, EXL=0, IE=1 mtc0 $k0, c0_status eret # diff --git a/cMIPS/tests/mmu_inval.s b/cMIPS/tests/mmu_inval.s index b9099eb..5c43a7c 100644 --- a/cMIPS/tests/mmu_inval.s +++ b/cMIPS/tests/mmu_inval.s @@ -36,7 +36,7 @@ .globl _start,_exit .ent _start - ## set STATUS, cop0, no interrupts enabled + ## set STATUS, cop0, no interrupts enabled, EXL=0 _start: li $k0, 0x10000000 mtc0 $k0, cop0_STATUS diff --git a/cMIPS/tests/mmu_inval2.s b/cMIPS/tests/mmu_inval2.s index e171c0d..5187383 100644 --- a/cMIPS/tests/mmu_inval2.s +++ b/cMIPS/tests/mmu_inval2.s @@ -36,7 +36,7 @@ .globl _start,_exit .ent _start - ## set STATUS, cop0, no interrupts enabled + ## set STATUS, cop0, no interrupts enabled, UM=0, EXL=0 _start: li $k0, 0x10000000 mtc0 $k0, cop0_STATUS diff --git a/cMIPS/tests/mmu_refill.s b/cMIPS/tests/mmu_refill.s index 9958c11..207a594 100644 --- a/cMIPS/tests/mmu_refill.s +++ b/cMIPS/tests/mmu_refill.s @@ -40,7 +40,7 @@ .globl _start .ent _start - ## set STATUS, cop0, no interrupts enabled + ## set STATUS, cop0, no interrupts enabled, EXL=0 _start: li $k0, 0x10000000 mtc0 $k0, cop0_STATUS diff --git a/cMIPS/tests/mmu_refill2.s b/cMIPS/tests/mmu_refill2.s index 1d47ed8..225978d 100644 --- a/cMIPS/tests/mmu_refill2.s +++ b/cMIPS/tests/mmu_refill2.s @@ -21,7 +21,7 @@ .globl _start, _exit .ent _start - ## set STATUS, cop0, no interrupts enabled, kernel mode + ## set STATUS, cop0, no interrupts enabled, UM=0, EXL=0 _start: li $k0, 0x10000000 mtc0 $k0, cop0_STATUS diff --git a/cMIPS/tests/mmu_refill3.s b/cMIPS/tests/mmu_refill3.s index 3e7f29b..d3fbc06 100644 --- a/cMIPS/tests/mmu_refill3.s +++ b/cMIPS/tests/mmu_refill3.s @@ -37,7 +37,7 @@ .globl _start,_exit .ent _start - ## set STATUS, cop0, no interrupts enabled + ## set STATUS, cop0, no interrupts enabled, UM=0, EXL=0 _start: li $k0, 0x10000000 mtc0 $k0, cop0_STATUS diff --git a/cMIPS/tests/pt_walk.c b/cMIPS/tests/pt_walk.c index fd3a2d7..42bd705 100644 --- a/cMIPS/tests/pt_walk.c +++ b/cMIPS/tests/pt_walk.c @@ -17,8 +17,8 @@ //----------------------------------------------------------------------- // decide on the tests to run -#define WALK_THE_PT 0 -#define TLB_MODIFIED 1 +#define WALK_THE_PT 1 +#define TLB_MODIFIED 0 #define DOUBLE_FAULT 0 // these will abort the simulation when the fault is detected/handled -- GitLab