Skip to content

Commit a4b9e54

Browse files
committed
Add basic jal misalign test
1 parent 9292b98 commit a4b9e54

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

test/first_party/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ set(common_deps
8282
set(tests
8383
"test_hello_world.c"
8484
"test_minstret.S"
85+
"test_jal_misaligned.S"
8586
)
8687

8788
foreach (xlen IN ITEMS 32 64)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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

0 commit comments

Comments
 (0)