diff --git a/cMIPS/tests/doTests.sh b/cMIPS/tests/doTests.sh index 1375893d1d216e3f57a515268a98718f5562fa7b..bd027c7d8d184fac90249cf399b329c038a8347e 100755 --- a/cMIPS/tests/doTests.sh +++ b/cMIPS/tests/doTests.sh @@ -81,6 +81,10 @@ a_EXC="mmu_refill mmu_refill2 mmu_refill3 mmu_inval mmu_inval2 mmu_mod mmu_mod2 ## these tests are timing dependent and MUST be run with memory latency=0 # a_TIM="counter" + +## force an update of all include files with edMemory.sh +touch -t 201501010000.00 ../include/cMIPS.* + (cd $tree ; $bin/build.sh) || exit 1 rm -f *.simout *.elf diff --git a/cMIPS/tests/teq_tne.s b/cMIPS/tests/teq_tne.s index b7eb0a35b2da20d1cb900cb016dfa0415b0dd95a..9ba4c38845abf28f414aa720f524f05ec7ffc04a 100644 --- a/cMIPS/tests/teq_tne.s +++ b/cMIPS/tests/teq_tne.s @@ -3,16 +3,15 @@ .text .align 2 .set noreorder # assembler should not reorder instructions - .global _start - .global _exit - .global exit - .ent _start + .global _start,_exit + + .ent _start ## ## reset leaves processor in kernel mode, all else disabled ## _start: nop - li $sp,(x_DATA_BASE_ADDR+x_DATA_MEM_SZ-8) # initialize SP: ramTop-8 + li $sp,(x_DATA_BASE_ADDR+4096-8) # initialize SP: fstPageTop-8 ## set STATUS, cop0, no interrupts enabled li $k0, 0x10000000 @@ -34,10 +33,9 @@ _exit: nop # flush pipeline .org x_EXCEPTION_0180,0 # exception vector_180 .ent _excp_180 -excp_180: _excp_180: ## - ## print CAUSE, reset counter, decrement iteration control + ## print CAUSE, skip over TRAP instruction ## mfc0 $k0, cop0_CAUSE andi $k1, $k0, 0x0030 @@ -60,20 +58,19 @@ _excp_180: li $k1, -16 # ffff.fff0 and $k0, $k0, $k1 mtc0 $k0, cop0_STATUS -excp_180ret: + eret .end _excp_180 .org x_EXCEPTION_0200,0 .ent _excp_200 -excp_200: _excp_200: ## ## this exception should not happen ## li $28,-1 - sw $28, 0($15) # signal exception to std_out + sw $28, 0($15) # signal WRONG exception to std_out mfc0 $k0, cop0_CAUSE li $k1, 'e' sw $k1, x_IO_ADDR_RANGE($15) @@ -84,6 +81,11 @@ _excp_200: li $k1, '\n' sw $k1, x_IO_ADDR_RANGE($15) sw $k0, 0($15) # print CAUSE + + mfc0 $k1, cop0_EPC # move EPC forward to next instruction + addi $k1, $k1, 4 + mtc0 $k1, cop0_EPC + eret # and return nop .end _excp_200 @@ -151,7 +153,5 @@ then2: sw $7, 0($15) # print out values: (5,34,4,34,3,34,2,34,1,34) bnez $7, then2 nop - j exit + j _exit nop - -