Skip to content

Commit bbf2799

Browse files
committed
Move mcycle entirely into controller
1 parent d8b7d6a commit bbf2799

File tree

2 files changed

+13
-27
lines changed

2 files changed

+13
-27
lines changed

src/cpu/controller.mlog.jinja

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,10 @@ end_slow_init:
154154
set csr_mtimeh 0
155155
set csr_mtimecmp 0
156156
set csr_mtimecmph 0
157-
set csr_mcycle 0
158-
set csr_mcycleh 0
159157
set csr_minstret 0
160158
set csr_minstreth 0
159+
write 0 {{CSRS}} "{{ 'mcycle'|csr }}"
160+
write 0 {{CSRS}} "{{ 'mcycleh'|csr }}"
161161

162162
# clear pending/enabled interrupts
163163
set csr_mip 0
@@ -217,8 +217,6 @@ next_tick:
217217
read csr_mtimeh prev_proc "csr_mtimeh"
218218
read csr_mtimecmp prev_proc "csr_mtimecmp"
219219
read csr_mtimecmph prev_proc "csr_mtimecmph"
220-
read csr_mcycle prev_proc "csr_mcycle"
221-
read csr_mcycleh prev_proc "csr_mcycleh"
222220
read csr_minstret prev_proc "csr_minstret"
223221
read csr_minstreth prev_proc "csr_minstreth"
224222
read csr_mstatus prev_proc "csr_mstatus"
@@ -265,6 +263,9 @@ end_pause:
265263
# we define the rate of increase of cycle as "@ipt * ticks"
266264
# this should be a decent estimation of the number of mlog instructions executed
267265

266+
read csr_mcycle {{CSRS}} "{{ 'mcycle'|csr }}"
267+
read csr_mcycleh {{CSRS}} "{{ 'mcycleh'|csr }}"
268+
268269
op sub delta_cycles @tick last_cycle_update
269270
op mul delta_cycles delta_cycles @ipt
270271

@@ -276,6 +277,11 @@ end_pause:
276277

277278
op mod csr_mcycle csr_mcycle 0x100000000
278279

280+
write csr_mcycle {{CSRS}} "{{ 'mcycle'|csr }}"
281+
write csr_mcycleh {{CSRS}} "{{ 'mcycleh'|csr }}"
282+
write csr_mcycle {{CSRS}} "{{ 'cycle'|csr }}"
283+
write csr_mcycleh {{CSRS}} "{{ 'cycleh'|csr }}"
284+
279285
set last_time_update @time
280286
set last_cycle_update @tick
281287

src/cpu/worker.mlog.jinja

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,6 @@ next_tick_no_check_overrun:
9494
read csr_mtimeh prev_proc "csr_mtimeh"
9595
read csr_mtimecmp prev_proc "csr_mtimecmp"
9696
read csr_mtimecmph prev_proc "csr_mtimecmph"
97-
read csr_mcycle prev_proc "csr_mcycle"
98-
read csr_mcycleh prev_proc "csr_mcycleh"
9997
read csr_minstret prev_proc "csr_minstret"
10098
read csr_minstreth prev_proc "csr_minstreth"
10199
read csr_mstatus prev_proc "csr_mstatus"
@@ -113,7 +111,7 @@ next_tick_no_check_overrun:
113111
jump reset notEqual state "running"
114112

115113
set current_tick @tick
116-
op sub accumulator @ipt 32
114+
op sub accumulator @ipt 30
117115
jump main notEqual interrupts_pending true
118116

119117
check_interrupts:
@@ -1981,11 +1979,11 @@ modify_csr__read__not_machine:
19811979
# mcounteren is hardwired zero, so now that we know it's a timer, trap if we're not in M-mode
19821980
jump ILLEGAL_OP lessThan privilege_mode 0b11
19831981

1984-
jump modify_csr__mcycle equal csr_7_0 0x00
1982+
jump modify_csr__read__not_timer equal csr_7_0 0x00 # mcycle
19851983
jump modify_csr__time equal imm 0xc01 # mtime doesn't exist
19861984
jump modify_csr__minstret equal csr_7_0 0x02
19871985

1988-
jump modify_csr__mcycleh equal csr_7_0 0x80
1986+
jump modify_csr__read__not_timer equal csr_7_0 0x80 # mcycleh
19891987
jump modify_csr__timeh equal imm 0xc81
19901988
jump modify_csr__minstreth equal csr_7_0 0x82
19911989

@@ -2080,24 +2078,6 @@ modify_csr__mie:
20802078

20812079
jump end_instruction_with_rd_and_interrupts always
20822080

2083-
modify_csr__mcycle:
2084-
set rd csr_mcycle
2085-
2086-
op add modify_csr_write @counter 1
2087-
set @counter modify_csr_op
2088-
2089-
set csr_mcycle new_value
2090-
jump end_instruction_with_rd_and_interrupts always
2091-
2092-
modify_csr__mcycleh:
2093-
set rd csr_mcycleh
2094-
2095-
op add modify_csr_write @counter 1
2096-
set @counter modify_csr_op
2097-
2098-
set csr_mcycleh new_value
2099-
jump end_instruction_with_rd_and_interrupts always
2100-
21012081
modify_csr__minstret:
21022082
set rd csr_minstret
21032083

0 commit comments

Comments
 (0)