mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	added premilinary boundary ccrossing cases
This commit is contained in:
		
							parent
							
								
									6eae7dda14
								
							
						
					
					
						commit
						3ce82f93c0
					
				@ -1,6 +1,6 @@
 | 
			
		||||
0fffffff # Test 12.3.2.2.1: writeback of value written to PMPADDR0
 | 
			
		||||
00000000 
 | 
			
		||||
20040000 # writeback of value written to PMPADDR1
 | 
			
		||||
20040001 # writeback of value written to PMPADDR1
 | 
			
		||||
00000000
 | 
			
		||||
2004003f # writeback of value written to PMPADDR2
 | 
			
		||||
00000000
 | 
			
		||||
@ -26,6 +26,12 @@
 | 
			
		||||
00000000
 | 
			
		||||
00000bad
 | 
			
		||||
00000000
 | 
			
		||||
00000005 # read test with access fault when access begins in allowed region and ends in protected NA region
 | 
			
		||||
00000000
 | 
			
		||||
00000bad
 | 
			
		||||
00000000
 | 
			
		||||
00000007 # write test with access fault when access begins in allowed region and ends in protected TOR region
 | 
			
		||||
00000000
 | 
			
		||||
00600dbb # read test success from region with L=X=W=R=0
 | 
			
		||||
00000000
 | 
			
		||||
0000000b # Test 12.3.2.2.3: ecall from going to S mode from M mode
 | 
			
		||||
 | 
			
		||||
@ -60,18 +60,19 @@ test_cases:
 | 
			
		||||
 | 
			
		||||
# write pmpaddr regs. Each of these should output the value of the pmpaddr after being written.
 | 
			
		||||
#                                          | Reg   | pmpaddr     | pmpcfg    | L | A     | X | W | R | Comments 		                |
 | 
			
		||||
.8byte 0x0, 0x0FFFFFFF, write_pmpaddr_0  # | 0     | 0x0FFFFFFF  | 1F        | 0 | NAPOT | 0 | 1 | 1 | I/O 00000000-7FFFFFFF RW 		|
 | 
			
		||||
.8byte 0x1, 0x20040000, write_pmpaddr_1  # | 1     | 0x20040000  | 00        | 0 | OFF   | 0 | 0 | 0 |    		                    |
 | 
			
		||||
.8byte 0x2, 0x2004003F, write_pmpaddr_2  # | 2     | 0x2004003F  | 09        | 0 | TOR   | 0 | 0 | 1 | 80100000-801000FF R 		    |
 | 
			
		||||
.8byte 0x3, 0x20040080, write_pmpaddr_3  # | 3     | 0x20040080  | 00        | 0 | OFF   | 0 | 0 | 0 |    		                    |
 | 
			
		||||
.8byte 0x4, 0x20040084, write_pmpaddr_4  # | 4     | 0x20040084  | 0C        | 0 | TOR   | 1 | 0 | 0 | 80100200-80100210 X 		    |
 | 
			
		||||
.8byte 0x5, 0x200400C0, write_pmpaddr_5  # | 5     | 0x200400C0  | 90        | 1 | NA4   | 0 | 0 | 0 | 80100300-80100303 locked out 	|
 | 
			
		||||
.8byte 0x6, 0x2004013F, write_pmpaddr_6  # | 6     | 0x2004013F  | 18        | 0 | NAPOT | 0 | 0 | 0 | 80100400-801004FF no access 	|
 | 
			
		||||
.8byte 0x0, 0x0FFFFFFF, write_pmpaddr_0  # | 0     | 0x0FFFFFFF  | 1B        | 0 | NAPOT | 0 | 1 | 1 | I/O 00000000-7FFFFFFF RW 		|
 | 
			
		||||
.8byte 0x1, 0x20040001, write_pmpaddr_1  # | 1     | 0x20040001  | 00        | 0 | OFF   | 0 | 0 | 0 |    		                    |
 | 
			
		||||
.8byte 0x2, 0x2004003F, write_pmpaddr_2  # | 2     | 0x2004003F  | 09        | 0 | TOR   | 0 | 0 | 1 | 80100004-801000FF R 		    |
 | 
			
		||||
.8byte 0x3, 0x20040080, write_pmpaddr_3  # | 3     | 0x20040080  | 16        | 0 | NA4   | 1 | 1 | 0 | 80100200-80100203 XW 		    |
 | 
			
		||||
.8byte 0x4, 0x20040081, write_pmpaddr_4  # | 4     | 0x20040081  | 00        | 0 | OFF   | 0 | 0 | 0 |    		                    |
 | 
			
		||||
.8byte 0x5, 0x20040084, write_pmpaddr_5  # | 5     | 0x20040084  | 0C        | 0 | TOR   | 1 | 0 | 0 | 80100204-80100210 X 		    |
 | 
			
		||||
.8byte 0x5, 0x200400C1, write_pmpaddr_6  # | 6     | 0x200400C1  | 90        | 1 | NA4   | 0 | 0 | 0 | 80100304-80100307 locked out 	|
 | 
			
		||||
.8byte 0x6, 0x2004013F, write_pmpaddr_7  # | 7     | 0x2004013F  | 18        | 0 | NAPOT | 0 | 0 | 0 | 80100400-801004FF no access 	|
 | 
			
		||||
# Pmpaddr 7-14 are all zeroed out in this test, so they don't need writes.
 | 
			
		||||
.8byte 0xF, 0x2FFFFFFF, write_pmpaddr_15 # | 15    | 0x2FFFFFFF  | 1F        | 0 | NAPOT | 1 | 1 | 1 | Main mem 80000000-FFFFFFFF RWX|
 | 
			
		||||
 | 
			
		||||
# write pmpcfg regs with the information in the table above. this should also write the value of these registers to the output.
 | 
			
		||||
.8byte 0x0, 0x0018900C0009001F, write_pmpcfg_0 # write pmpcfg0, output 0x0018900C0009001F
 | 
			
		||||
.8byte 0x0, 0x0018900C0009001F, write_pmpcfg_0 # write pmpcfg0, output 0x0018900C0009001B
 | 
			
		||||
.8byte 0x2, 0x1F00000000000000, write_pmpcfg_2 # write pmpcfg2, output 0x1F00000000000000
 | 
			
		||||
 | 
			
		||||
# write known values to memory where W=0. This should be possible since we're in machine mode.
 | 
			
		||||
@ -90,7 +91,14 @@ test_cases:
 | 
			
		||||
 | 
			
		||||
# Test 12.3.2.2.2 Machine mode access
 | 
			
		||||
 | 
			
		||||
.8byte 0x80100300, 0x0, read64_test # access fault to region with L=1, R=0
 | 
			
		||||
.8byte 0x80100304, 0x0, read32_test # access fault to region with L=1, R=0
 | 
			
		||||
 | 
			
		||||
# accesses across PMP region boundaries
 | 
			
		||||
.8byte 0x80100300, 0x0, read64_test # access fault when access begins in allowed NA region and goes into protected region.
 | 
			
		||||
 | 
			
		||||
.8byte 0x80100000, 0xbad, write64_test # access fault when access begins in allowed TOR region and goes into protected region.
 | 
			
		||||
.8byte 0x80100000, 0xbad, write64_test # access fault when access begins in allowed TOR region and goes into protected region.
 | 
			
		||||
 | 
			
		||||
.8byte 0x80100400, 0x0, read64_test # successful access to region with L=X=W=R=0
 | 
			
		||||
 | 
			
		||||
# Test 12.3.2.2.3 System mode access
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user