Skip to content

Commit 769fc0f

Browse files
committed
Move mcycle out of CSRS
1 parent 6756cc6 commit 769fc0f

File tree

5 files changed

+22
-18
lines changed

5 files changed

+22
-18
lines changed

mod/src/main/kotlin/gay/object/mlogv32/ProcessorAccess.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ class ProcessorAccess(
174174
mstatus = getUIntVar("csr_mstatus"),
175175
mip = getUIntVar("csr_mip"),
176176
mie = getUIntVar("csr_mie"),
177-
mcycle = (getCSR(0xB80).toULong() shl 32) or getCSR(0xB00).toULong(),
177+
mcycle = (getCSR(0xB80).toULong() shl 32) or getUIntVar("csr_mcycle").toULong(),
178178
minstret = (getCSR(0xB82).toULong() shl 32) or getUIntVar("csr_minstret").toULong(),
179179
mtime = (getUIntVar("csr_mtimeh").toULong() shl 32) or getUIntVar("csr_mtime").toULong(),
180180
)

src/cpu/controller.mlog.jinja

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ end_slow_init:
202202
set csr_stimecmph 0
203203
set csr_minstret 0
204204
write 0 {{CSRS}} "{{ 'minstreth'|csr }}"
205-
write 0 {{CSRS}} "{{ 'mcycle'|csr }}"
205+
set csr_mcycle 0
206206
write 0 {{CSRS}} "{{ 'mcycleh'|csr }}"
207207

208208
# clear delegated traps
@@ -407,6 +407,7 @@ set _ __etext
407407
set _ privilege_mode
408408
set _ effective_privilege_mode
409409
set _ reservation_set
410+
set _ csr_mcycle
410411
set _ csr_mtime
411412
set _ csr_mtimeh
412413
set _ csr_mtimecmp

src/cpu/cpu.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ csrs:
169169

170170
# counter/timers
171171
cycle:
172-
read: LABEL
172+
read: mcycle
173173
time:
174174
read: LABEL
175175
instret:
@@ -345,8 +345,8 @@ csrs:
345345

346346
# counter/timers
347347
mcycle:
348-
read: csrs
349-
write: csrs
348+
read: LABEL
349+
write: LABEL
350350
minstret:
351351
read: LABEL
352352
write: LABEL

src/cpu/worker.mlog.jinja

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
#% set labels.next_tick = 14
2929

30-
#% set labels.end_instruction_with_rd_and_poll_interrupts = 152
30+
#% set labels.end_instruction_with_rd_and_poll_interrupts = 151
3131
#% set labels.end_instruction_with_rd_and_fire_interrupts = _labels_vals|last + 1
3232
#% set labels.end_instruction_with_rd = _labels_vals|last + 1
3333
#% set labels.end_instruction = _labels_vals|last + 2
@@ -86,6 +86,7 @@ reset:
8686
read _address prev_proc "_address"
8787
read address prev_proc "address"
8888
read breakpoint_address prev_proc "breakpoint_address"
89+
read csr_mcycle prev_proc "csr_mcycle"
8990
read csr_mie prev_proc "csr_mie"
9091
read csr_minstret prev_proc "csr_minstret"
9192
read csr_mip prev_proc "csr_mip"
@@ -136,22 +137,19 @@ reset:
136137

137138
# these variables don't need to be saved because this should only ever run at the start of a tick
138139

139-
#directive push_saved __mcycle __mcycleh
140140
# increment mcycle
141-
read __mcycle {{CSRS}} "{{ 'mcycle'|csr }}"
142-
op add __mcycle __mcycle 1
143-
jump reset__no_overflow lessThan __mcycle 0x100000000
141+
op add csr_mcycle csr_mcycle 1
142+
jump reset__no_overflow lessThan csr_mcycle 0x100000000
144143

145144
# overflow mcycle into mcycleh
146145
# TODO: handle mcycleh overflow
147-
set __mcycle 0
146+
set csr_mcycle 0
147+
#directive push_saved __mcycleh
148148
read __mcycleh {{CSRS}} "{{ 'mcycleh'|csr }}"
149149
op add __mcycleh __mcycleh 1
150150
write __mcycleh {{CSRS}} "{{ 'mcycleh'|csr }}"
151-
151+
#directive pop_saved __mcycleh
152152
reset__no_overflow:
153-
write __mcycle {{CSRS}} "{{ 'mcycle'|csr }}"
154-
#directive pop_saved __mcycle __mcycleh
155153

156154
# if we just started executing, don't restore @counter
157155
jump poll_interrupts equal prev_proc {{CONTROLLER}}
@@ -2569,11 +2567,15 @@ csr_write_stimecmph:
25692567
set csr_stimecmph result
25702568
jump end_instruction_with_rd_and_poll_interrupts always
25712569

2572-
csr_read_cycle:
2570+
csr_read_mcycle:
25732571
#% do declare_locals(modify_csr_locals)
2574-
read rd {{CSRS}} "{{ 'mcycle'|csr }}"
2572+
set rd csr_mcycle
25752573
jump check_xcounteren always
25762574

2575+
csr_write_mcycle:
2576+
set csr_mcycle result
2577+
jump end_instruction_with_rd always
2578+
25772579
csr_read_cycleh:
25782580
#% do declare_locals(modify_csr_locals)
25792581
read rd {{CSRS}} "{{ 'mcycleh'|csr }}"
@@ -2787,7 +2789,7 @@ jump decode_JALR always
27872789
jump decode_JAL always
27882790
jump decode_SYSTEM always
27892791
jump csr_read_csrs always
2790-
jump csr_read_cycle always
2792+
jump csr_read_mcycle always
27912793
jump csr_read_cycleh always
27922794
jump csr_read_hpmcounter always
27932795
jump csr_read_mie always
@@ -2805,6 +2807,7 @@ jump csr_read_time always
28052807
jump csr_read_timeh always
28062808
jump csr_read_zero always
28072809
jump csr_write_csrs always
2810+
jump csr_write_mcycle always
28082811
jump csr_write_mie always
28092812
jump csr_write_minstret always
28102813
jump csr_write_minstreth always

src/peripherals/debugger.mlog.jinja

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ loop:
169169
set ICACHE_START RAM_END
170170
op add ICACHE_END ICACHE_START ICACHE_SIZE
171171

172-
read mcycle {{CSRS}} "{{ 'mcycle'|csr }}"
172+
read mcycle {{CPU}} "csr_mcycle"
173173
read mcycleh {{CSRS}} "{{ 'mcycleh'|csr }}"
174174
op shl mcycleh mcycleh 32
175175
op add mcycle mcycle mcycleh

0 commit comments

Comments
 (0)