Skip to content

Commit 2565f71

Browse files
committed
[sw-sysemu] Erbium ESR defaults
Set Erbium ESR defaults on reset.
1 parent bc4c3b8 commit 2565f71

File tree

1 file changed

+31
-10
lines changed

1 file changed

+31
-10
lines changed

sw-sysemu/esrs_er.cpp

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -151,49 +151,70 @@ namespace bemu {
151151
#define THREAD(hart) ((hart) % EMU_THREADS_PER_MINION)
152152

153153

154-
// TODO: Reset value constants
155-
156-
157154
void neigh_esrs_t::debug_reset()
158155
{
159-
// TODO: Implement for ERBIUM
156+
hactrl = 0;
157+
hastatus0 = 0;
158+
hastatus1 = 0;
160159
}
161160

162161

163162
void neigh_esrs_t::warm_reset()
164163
{
165-
// TODO: Implement for ERBIUM
164+
ipi_redirect_pc = 0;
165+
pmu_ctrl = false;
166166
}
167167

168168

169169
void neigh_esrs_t::cold_reset()
170170
{
171-
// TODO: Implement for ERBIUM
171+
minion_boot = 0x0200a000; // boot rom
172+
mprot = 0;
173+
dummy0 = 0;
174+
dummy2 = false;
175+
neigh_chicken = 0;
176+
icache_err_log_ctl = 0;
177+
icache_err_log_info = 0;
178+
icache_sbe_dbe_counts = 0;
172179
}
173180

174181

175182
void shire_cache_esrs_t::cold_reset()
176183
{
177-
// TODO: Implement for ERBIUM
184+
// No shire cache registers for Erbium
178185
}
179186

180187

181188
void shire_other_esrs_t::warm_reset()
182189
{
183-
// TODO: Implement for ERBIUM
190+
for (int i = 0; i < 32; ++i) {
191+
fast_local_barrier[i] = 0;
192+
}
193+
ipi_redirect_filter = 0;
194+
ipi_trigger = 0;
195+
shire_coop_mode = false;
196+
icache_prefetch_active = false;
184197
}
185198

186199

187200
void shire_other_esrs_t::cold_reset(unsigned shireid)
188201
{
189202
(void) shireid;
190-
// TODO: Implement for ERBIUM
203+
minion_feature = 0x01;
204+
thread0_disable = 0xfe; // Can be overriden by OTP(?)
205+
thread1_disable = 0xff;
206+
mtime_local_target = 0;
207+
clk_gate_ctrl = 0;
208+
// TODO: no implemented yet
209+
// debug_clk_gate_ctrl = 0;
210+
// time_config = 0x28;
211+
// sm_config = 0;
191212
}
192213

193214

194215
void mem_shire_esrs_t::cold_reset()
195216
{
196-
// TODO: Implement for ERBIUM
217+
// No mem shire registers for Erbium
197218
}
198219

199220

0 commit comments

Comments
 (0)