Skip to content

Commit 9178109

Browse files
committed
Implement machine level ISA reset
1 parent 0c08fb8 commit 9178109

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

src/main.mlog.jinja

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ reset__find_lookup_start:
5858

5959
set LOOKUP_START i
6060

61-
# clear LR/SC reservation set
62-
set reservation_set null
63-
6461
# read initial CSR values
6562
read mtime {{CSRS}} "{{ 'time'|csr }}"
6663
read mtimeh {{CSRS}} "{{ 'timeh'|csr }}"
@@ -69,17 +66,35 @@ reset__find_lookup_start:
6966
read minstret {{CSRS}} "{{ 'minstret'|csr }}"
7067
read minstreth {{CSRS}} "{{ 'minstreth'|csr }}"
7168

72-
# start executing code at address 0
73-
set pc 0
74-
set icache_var null
75-
set __etext 0
76-
set STATE "running"
77-
78-
# schedule time update
69+
# reset time/cycle reference point
7970
set last_time_update @time
8071
set last_cycle_update @tick
8172
set next_time_update @time
8273

74+
# reset icache
75+
set icache_var null
76+
set __etext 0
77+
78+
# reset hart state as per machine-level ISA
79+
80+
# reset MIE and MPRV to 0
81+
read mstatus {{CSRS}} "{{ 'mstatus'|csr }}"
82+
# MPRV -
83+
# MIE -
84+
op and mstatus mstatus 0b11111111111111011111111111110111
85+
write mstatus {{CSRS}} "{{ 'mstatus'|csr }}"
86+
87+
# set pc to reset vector
88+
set pc 0
89+
90+
# set mcause to 0, since we don't distinguish different reset conditions
91+
write 0 {{CSRS}} "{{ 'mcause'|csr }}"
92+
93+
# clear LR/SC reservation set
94+
set reservation_set null
95+
96+
set STATE "running"
97+
8398
main:
8499
jump main__skip_time_update lessThan @time next_time_update
85100

0 commit comments

Comments
 (0)