File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -82,6 +82,7 @@ set(common_deps
82
82
set (tests
83
83
"test_hello_world.c"
84
84
"test_minstret.S"
85
+ "test_jal_misaligned.S"
85
86
)
86
87
87
88
foreach (xlen IN ITEMS 32 64 )
Original file line number Diff line number Diff line change
1
+ .global main
2
+ .align 4
3
+ main:
4
+ mv t6, ra
5
+ # install custom trap handler to catch misalign jal target address
6
+ la t0, trap_handler
7
+ csrw mtvec, t0
8
+
9
+ # set test pass count to 0
10
+ li t5, 0
11
+
12
+ # TODO: disable zca extension which is enabled by default
13
+ jal misalign
14
+ li t4, 1
15
+ bne t5, t4, fail
16
+
17
+ la t0, misalign
18
+ jalr x1, 3 (t0)
19
+ li t4, 1
20
+ bne t5, t4, fail
21
+
22
+ pass:
23
+ li a0, 0
24
+ j finish
25
+ fail:
26
+ li a0, 1
27
+ j finish
28
+ finish:
29
+ mv ra, t6
30
+ # uninstall custom trap handler
31
+ csrwi mtvec, 0
32
+ ret
33
+
34
+ .space 2
35
+ misalign:
36
+ .space 2
37
+ ret
38
+
39
+ trap_handler:
40
+ csrr t0, mcause
41
+ li t1, 0 # E_Fetch_Addr_Align
42
+ bne t0, t1, trap_exit
43
+
44
+ # test pass count
45
+ addi t5, t5, 1
46
+
47
+ li a0, 0
48
+ csrr t0, mepc
49
+ addi t0, t0, 4
50
+ csrw mepc, t0
51
+ trap_exit:
52
+ mret
You can’t perform that action at this time.
0 commit comments