@@ -20,14 +20,16 @@ class SimpleSystemCosim : public SimpleSystem {
2020 ~SimpleSystemCosim () {}
2121
2222 void CreateCosim (bool secure_ibex, bool icache_en, uint32_t pmp_num_regions,
23- uint32_t pmp_granularity, uint32_t mhpm_counter_num) {
23+ uint32_t pmp_granularity, uint32_t mhpm_counter_num,
24+ uint32_t DmStartAddr, uint32_t DmEndAddr) {
2425 _cosim = std::make_unique<SpikeCosim>(
2526 GetIsaString (), 0x100080 , 0x100001 , " simple_system_cosim.log" ,
2627 secure_ibex, icache_en, pmp_num_regions, pmp_granularity,
27- mhpm_counter_num);
28+ mhpm_counter_num, DmStartAddr, DmEndAddr );
2829
29- _cosim->add_memory (0x100000 , 1024 * 1024 );
30- _cosim->add_memory (0x20000 , 4096 );
30+ // Add a memory device that covers the entire address space.
31+ // This will only be sparsely populated.
32+ _cosim->add_memory (0x00000000 , 0xFFFF0000 );
3133
3234 CopyMemAreaToCosim (&_ram, 0x100000 );
3335 }
@@ -70,10 +72,13 @@ void *get_spike_cosim() {
7072void create_cosim (svBit secure_ibex, svBit icache_en,
7173 const svBitVecVal *pmp_num_regions,
7274 const svBitVecVal *pmp_granularity,
73- const svBitVecVal *mhpm_counter_num) {
75+ const svBitVecVal *mhpm_counter_num,
76+ const svBitVecVal *DmStartAddr,
77+ const svBitVecVal *DmEndAddr) {
7478 assert (simple_system_cosim);
7579 simple_system_cosim->CreateCosim (secure_ibex, icache_en, pmp_num_regions[0 ],
76- pmp_granularity[0 ], mhpm_counter_num[0 ]);
80+ pmp_granularity[0 ], mhpm_counter_num[0 ],
81+ DmStartAddr[0 ], DmEndAddr[0 ]);
7782}
7883}
7984
0 commit comments