Adapted namespace changes in sc-components
This commit is contained in:
		@@ -76,7 +76,7 @@
 | 
				
			|||||||
						</toolChain>
 | 
											</toolChain>
 | 
				
			||||||
					</folderInfo>
 | 
										</folderInfo>
 | 
				
			||||||
					<sourceEntries>
 | 
										<sourceEntries>
 | 
				
			||||||
						<entry excluding="riscv/src-gen|sysc|blink.S|flash.s" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
 | 
											<entry excluding="riscv/src-gen|blink.S|scc|flash.s" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
 | 
				
			||||||
					</sourceEntries>
 | 
										</sourceEntries>
 | 
				
			||||||
				</configuration>
 | 
									</configuration>
 | 
				
			||||||
			</storageModule>
 | 
								</storageModule>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@
 | 
				
			|||||||
#ifndef _AON_H_
 | 
					#ifndef _AON_H_
 | 
				
			||||||
#define _AON_H_
 | 
					#define _AON_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class aon_regs;
 | 
					class aon_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class aon : public sc_core::sc_module, public tlm_target<> {
 | 
					class aon : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(aon);
 | 
					    SC_HAS_PROCESS(aon);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
#ifndef _CLINT_H_
 | 
					#ifndef _CLINT_H_
 | 
				
			||||||
#define _CLINT_H_
 | 
					#define _CLINT_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace iss {
 | 
					namespace iss {
 | 
				
			||||||
namespace arch {
 | 
					namespace arch {
 | 
				
			||||||
@@ -32,7 +32,7 @@ namespace SiFive {
 | 
				
			|||||||
class core_complex;
 | 
					class core_complex;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class clint : public sc_core::sc_module, public tlm_target<> {
 | 
					class clint : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(clint);
 | 
					    SC_HAS_PROCESS(clint);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,13 +37,13 @@
 | 
				
			|||||||
#ifndef _SYSC_SIFIVE_FE310_H_
 | 
					#ifndef _SYSC_SIFIVE_FE310_H_
 | 
				
			||||||
#define _SYSC_SIFIVE_FE310_H_
 | 
					#define _SYSC_SIFIVE_FE310_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/ext_attribute.h>
 | 
					 | 
				
			||||||
#include <sysc/initiator_mixin.h>
 | 
					 | 
				
			||||||
#include <sysc/traceable.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <tlm>
 | 
					#include <tlm>
 | 
				
			||||||
#include <tlm_utils/tlm_quantumkeeper.h>
 | 
					#include <tlm_utils/tlm_quantumkeeper.h>
 | 
				
			||||||
#include <util/range_lut.h>
 | 
					#include <util/range_lut.h>
 | 
				
			||||||
 | 
					#include "scc/ext_attribute.h"
 | 
				
			||||||
 | 
					#include "scc/initiator_mixin.h"
 | 
				
			||||||
 | 
					#include "scc/traceable.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace iss {
 | 
					namespace iss {
 | 
				
			||||||
class vm_if;
 | 
					class vm_if;
 | 
				
			||||||
@@ -67,25 +67,25 @@ public:
 | 
				
			|||||||
namespace SiFive {
 | 
					namespace SiFive {
 | 
				
			||||||
class core_wrapper;
 | 
					class core_wrapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class core_complex : public sc_core::sc_module, public sysc::traceable {
 | 
					class core_complex : public sc_core::sc_module, public scc::traceable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(core_complex);
 | 
					    SC_HAS_PROCESS(core_complex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysc::initiator_mixin<tlm::tlm_initiator_socket<32>> initiator;
 | 
					    scc::initiator_mixin<tlm::tlm_initiator_socket<32>> initiator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sc_core::sc_in<bool> rst_i;
 | 
					    sc_core::sc_in<bool> rst_i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysc::ext_attribute<std::string> elf_file;
 | 
					    scc::ext_attribute<std::string> elf_file;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysc::ext_attribute<bool> enable_disass;
 | 
					    scc::ext_attribute<bool> enable_disass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysc::ext_attribute<uint64_t> reset_address;
 | 
					    scc::ext_attribute<uint64_t> reset_address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysc::ext_attribute<unsigned short> gdb_server_port;
 | 
					    scc::ext_attribute<unsigned short> gdb_server_port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sysc::ext_attribute<bool> dump_ir;
 | 
					    scc::ext_attribute<bool> dump_ir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    core_complex(sc_core::sc_module_name name);
 | 
					    core_complex(sc_core::sc_module_name name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _AON_REGS_H_
 | 
					#ifndef _AON_REGS_H_
 | 
				
			||||||
#define _AON_REGS_H_
 | 
					#define _AON_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class aon_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class aon_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    uint32_t r_wdogcfg;
 | 
					    uint32_t r_wdogcfg;
 | 
				
			||||||
@@ -97,29 +97,29 @@ public:
 | 
				
			|||||||
    uint32_t r_pmukey;
 | 
					    uint32_t r_pmukey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register<uint32_t> wdogcfg;
 | 
					    scc::sc_register<uint32_t> wdogcfg;
 | 
				
			||||||
    sysc::sc_register<uint32_t> wdogcount;
 | 
					    scc::sc_register<uint32_t> wdogcount;
 | 
				
			||||||
    sysc::sc_register<uint32_t> wdogs;
 | 
					    scc::sc_register<uint32_t> wdogs;
 | 
				
			||||||
    sysc::sc_register<uint32_t> wdogfeed;
 | 
					    scc::sc_register<uint32_t> wdogfeed;
 | 
				
			||||||
    sysc::sc_register<uint32_t> wdogkey;
 | 
					    scc::sc_register<uint32_t> wdogkey;
 | 
				
			||||||
    sysc::sc_register<uint32_t> wdogcmp;
 | 
					    scc::sc_register<uint32_t> wdogcmp;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rtccfg;
 | 
					    scc::sc_register<uint32_t> rtccfg;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rtclo;
 | 
					    scc::sc_register<uint32_t> rtclo;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rtchi;
 | 
					    scc::sc_register<uint32_t> rtchi;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rtcs;
 | 
					    scc::sc_register<uint32_t> rtcs;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rtccmp;
 | 
					    scc::sc_register<uint32_t> rtccmp;
 | 
				
			||||||
    sysc::sc_register<uint32_t> lfrosccfg;
 | 
					    scc::sc_register<uint32_t> lfrosccfg;
 | 
				
			||||||
    sysc::sc_register_indexed<uint32_t, 32> backup;
 | 
					    scc::sc_register_indexed<uint32_t, 32> backup;
 | 
				
			||||||
    sysc::sc_register_indexed<pmuwakeupi_t, 8> pmuwakeupi;
 | 
					    scc::sc_register_indexed<pmuwakeupi_t, 8> pmuwakeupi;
 | 
				
			||||||
    sysc::sc_register_indexed<pmusleepi_t, 8> pmusleepi;
 | 
					    scc::sc_register_indexed<pmusleepi_t, 8> pmusleepi;
 | 
				
			||||||
    sysc::sc_register<uint32_t> pmuie;
 | 
					    scc::sc_register<uint32_t> pmuie;
 | 
				
			||||||
    sysc::sc_register<uint32_t> pmucause;
 | 
					    scc::sc_register<uint32_t> pmucause;
 | 
				
			||||||
    sysc::sc_register<uint32_t> pmusleep;
 | 
					    scc::sc_register<uint32_t> pmusleep;
 | 
				
			||||||
    sysc::sc_register<uint32_t> pmukey;
 | 
					    scc::sc_register<uint32_t> pmukey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    aon_regs(sc_core::sc_module_name nm);
 | 
					    aon_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -148,7 +148,7 @@ inline sysc::aon_regs::aon_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(pmusleep, r_pmusleep, 0, *this)
 | 
					, NAMED(pmusleep, r_pmusleep, 0, *this)
 | 
				
			||||||
, NAMED(pmukey, r_pmukey, 0, *this) {}
 | 
					, NAMED(pmukey, r_pmukey, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::aon_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::aon_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(wdogcfg, 0x0UL);
 | 
					    target.addResource(wdogcfg, 0x0UL);
 | 
				
			||||||
    target.addResource(wdogcount, 0x8UL);
 | 
					    target.addResource(wdogcount, 0x8UL);
 | 
				
			||||||
    target.addResource(wdogs, 0x10UL);
 | 
					    target.addResource(wdogs, 0x10UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _CLINT_REGS_H_
 | 
					#ifndef _CLINT_REGS_H_
 | 
				
			||||||
#define _CLINT_REGS_H_
 | 
					#define _CLINT_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class clint_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class clint_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    BEGIN_BF_DECL(msip_t, uint32_t);
 | 
					    BEGIN_BF_DECL(msip_t, uint32_t);
 | 
				
			||||||
@@ -55,13 +55,13 @@ public:
 | 
				
			|||||||
    uint64_t r_mtime;
 | 
					    uint64_t r_mtime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register<msip_t> msip;
 | 
					    scc::sc_register<msip_t> msip;
 | 
				
			||||||
    sysc::sc_register<uint64_t> mtimecmp;
 | 
					    scc::sc_register<uint64_t> mtimecmp;
 | 
				
			||||||
    sysc::sc_register<uint64_t> mtime;
 | 
					    scc::sc_register<uint64_t> mtime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    clint_regs(sc_core::sc_module_name nm);
 | 
					    clint_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -74,7 +74,7 @@ inline sysc::clint_regs::clint_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(mtimecmp, r_mtimecmp, 0, *this)
 | 
					, NAMED(mtimecmp, r_mtimecmp, 0, *this)
 | 
				
			||||||
, NAMED(mtime, r_mtime, 0, *this) {}
 | 
					, NAMED(mtime, r_mtime, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::clint_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::clint_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(msip, 0x0UL);
 | 
					    target.addResource(msip, 0x0UL);
 | 
				
			||||||
    target.addResource(mtimecmp, 0x4000UL);
 | 
					    target.addResource(mtimecmp, 0x4000UL);
 | 
				
			||||||
    target.addResource(mtime, 0xbff8UL);
 | 
					    target.addResource(mtime, 0xbff8UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
#define _E300_PLAT_MAP_H_
 | 
					#define _E300_PLAT_MAP_H_
 | 
				
			||||||
// need double braces, see
 | 
					// need double braces, see
 | 
				
			||||||
// https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191
 | 
					// https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191
 | 
				
			||||||
const std::array<sysc::target_memory_map_entry<32>, 8> e300_plat_map = {{
 | 
					const std::array<scc::target_memory_map_entry<32>, 8> e300_plat_map = {{
 | 
				
			||||||
    {&i_clint, 0x2000000, 0xc000},
 | 
					    {&i_clint, 0x2000000, 0xc000},
 | 
				
			||||||
    {&i_plic, 0xc000000, 0x200008},
 | 
					    {&i_plic, 0xc000000, 0x200008},
 | 
				
			||||||
    {&i_aon, 0x10000000, 0x150},
 | 
					    {&i_aon, 0x10000000, 0x150},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _GPIO_REGS_H_
 | 
					#ifndef _GPIO_REGS_H_
 | 
				
			||||||
#define _GPIO_REGS_H_
 | 
					#define _GPIO_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class gpio_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class gpio_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    uint32_t r_value;
 | 
					    uint32_t r_value;
 | 
				
			||||||
@@ -81,27 +81,27 @@ public:
 | 
				
			|||||||
    uint32_t r_out_xor;
 | 
					    uint32_t r_out_xor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register<uint32_t> value;
 | 
					    scc::sc_register<uint32_t> value;
 | 
				
			||||||
    sysc::sc_register<uint32_t> input_en;
 | 
					    scc::sc_register<uint32_t> input_en;
 | 
				
			||||||
    sysc::sc_register<uint32_t> output_en;
 | 
					    scc::sc_register<uint32_t> output_en;
 | 
				
			||||||
    sysc::sc_register<uint32_t> port;
 | 
					    scc::sc_register<uint32_t> port;
 | 
				
			||||||
    sysc::sc_register<uint32_t> pue;
 | 
					    scc::sc_register<uint32_t> pue;
 | 
				
			||||||
    sysc::sc_register<uint32_t> ds;
 | 
					    scc::sc_register<uint32_t> ds;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rise_ie;
 | 
					    scc::sc_register<uint32_t> rise_ie;
 | 
				
			||||||
    sysc::sc_register<uint32_t> rise_ip;
 | 
					    scc::sc_register<uint32_t> rise_ip;
 | 
				
			||||||
    sysc::sc_register<uint32_t> fall_ie;
 | 
					    scc::sc_register<uint32_t> fall_ie;
 | 
				
			||||||
    sysc::sc_register<uint32_t> fall_ip;
 | 
					    scc::sc_register<uint32_t> fall_ip;
 | 
				
			||||||
    sysc::sc_register<uint32_t> high_ie;
 | 
					    scc::sc_register<uint32_t> high_ie;
 | 
				
			||||||
    sysc::sc_register<uint32_t> high_ip;
 | 
					    scc::sc_register<uint32_t> high_ip;
 | 
				
			||||||
    sysc::sc_register<uint32_t> low_ie;
 | 
					    scc::sc_register<uint32_t> low_ie;
 | 
				
			||||||
    sysc::sc_register<uint32_t> low_ip;
 | 
					    scc::sc_register<uint32_t> low_ip;
 | 
				
			||||||
    sysc::sc_register<uint32_t> iof_en;
 | 
					    scc::sc_register<uint32_t> iof_en;
 | 
				
			||||||
    sysc::sc_register<uint32_t> iof_sel;
 | 
					    scc::sc_register<uint32_t> iof_sel;
 | 
				
			||||||
    sysc::sc_register<uint32_t> out_xor;
 | 
					    scc::sc_register<uint32_t> out_xor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    gpio_regs(sc_core::sc_module_name nm);
 | 
					    gpio_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -128,7 +128,7 @@ inline sysc::gpio_regs::gpio_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(iof_sel, r_iof_sel, 0, *this)
 | 
					, NAMED(iof_sel, r_iof_sel, 0, *this)
 | 
				
			||||||
, NAMED(out_xor, r_out_xor, 0, *this) {}
 | 
					, NAMED(out_xor, r_out_xor, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::gpio_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::gpio_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(value, 0x0UL);
 | 
					    target.addResource(value, 0x0UL);
 | 
				
			||||||
    target.addResource(input_en, 0x4UL);
 | 
					    target.addResource(input_en, 0x4UL);
 | 
				
			||||||
    target.addResource(output_en, 0x8UL);
 | 
					    target.addResource(output_en, 0x8UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _PLIC_REGS_H_
 | 
					#ifndef _PLIC_REGS_H_
 | 
				
			||||||
#define _PLIC_REGS_H_
 | 
					#define _PLIC_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class plic_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class plic_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    BEGIN_BF_DECL(priority_t, uint32_t);
 | 
					    BEGIN_BF_DECL(priority_t, uint32_t);
 | 
				
			||||||
@@ -62,15 +62,15 @@ public:
 | 
				
			|||||||
    uint32_t r_claim_complete;
 | 
					    uint32_t r_claim_complete;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register_indexed<priority_t, 255> priority;
 | 
					    scc::sc_register_indexed<priority_t, 255> priority;
 | 
				
			||||||
    sysc::sc_register<uint32_t> pending;
 | 
					    scc::sc_register<uint32_t> pending;
 | 
				
			||||||
    sysc::sc_register<uint32_t> enabled;
 | 
					    scc::sc_register<uint32_t> enabled;
 | 
				
			||||||
    sysc::sc_register<threshold_t> threshold;
 | 
					    scc::sc_register<threshold_t> threshold;
 | 
				
			||||||
    sysc::sc_register<uint32_t> claim_complete;
 | 
					    scc::sc_register<uint32_t> claim_complete;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    plic_regs(sc_core::sc_module_name nm);
 | 
					    plic_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -85,7 +85,7 @@ inline sysc::plic_regs::plic_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(threshold, r_threshold, 0, *this)
 | 
					, NAMED(threshold, r_threshold, 0, *this)
 | 
				
			||||||
, NAMED(claim_complete, r_claim_complete, 0, *this) {}
 | 
					, NAMED(claim_complete, r_claim_complete, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::plic_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::plic_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(priority, 0x4UL);
 | 
					    target.addResource(priority, 0x4UL);
 | 
				
			||||||
    target.addResource(pending, 0x1000UL);
 | 
					    target.addResource(pending, 0x1000UL);
 | 
				
			||||||
    target.addResource(enabled, 0x2000UL);
 | 
					    target.addResource(enabled, 0x2000UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _PRCI_REGS_H_
 | 
					#ifndef _PRCI_REGS_H_
 | 
				
			||||||
#define _PRCI_REGS_H_
 | 
					#define _PRCI_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class prci_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class prci_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    BEGIN_BF_DECL(hfrosccfg_t, uint32_t);
 | 
					    BEGIN_BF_DECL(hfrosccfg_t, uint32_t);
 | 
				
			||||||
@@ -73,15 +73,15 @@ public:
 | 
				
			|||||||
    uint32_t r_coreclkcfg;
 | 
					    uint32_t r_coreclkcfg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register<hfrosccfg_t> hfrosccfg;
 | 
					    scc::sc_register<hfrosccfg_t> hfrosccfg;
 | 
				
			||||||
    sysc::sc_register<hfxosccfg_t> hfxosccfg;
 | 
					    scc::sc_register<hfxosccfg_t> hfxosccfg;
 | 
				
			||||||
    sysc::sc_register<pllcfg_t> pllcfg;
 | 
					    scc::sc_register<pllcfg_t> pllcfg;
 | 
				
			||||||
    sysc::sc_register<uint32_t> plloutdiv;
 | 
					    scc::sc_register<uint32_t> plloutdiv;
 | 
				
			||||||
    sysc::sc_register<uint32_t> coreclkcfg;
 | 
					    scc::sc_register<uint32_t> coreclkcfg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    prci_regs(sc_core::sc_module_name nm);
 | 
					    prci_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -96,7 +96,7 @@ inline sysc::prci_regs::prci_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(plloutdiv, r_plloutdiv, 0, *this)
 | 
					, NAMED(plloutdiv, r_plloutdiv, 0, *this)
 | 
				
			||||||
, NAMED(coreclkcfg, r_coreclkcfg, 0, *this) {}
 | 
					, NAMED(coreclkcfg, r_coreclkcfg, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::prci_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::prci_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(hfrosccfg, 0x0UL);
 | 
					    target.addResource(hfrosccfg, 0x0UL);
 | 
				
			||||||
    target.addResource(hfxosccfg, 0x4UL);
 | 
					    target.addResource(hfxosccfg, 0x4UL);
 | 
				
			||||||
    target.addResource(pllcfg, 0x8UL);
 | 
					    target.addResource(pllcfg, 0x8UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _SPI_REGS_H_
 | 
					#ifndef _SPI_REGS_H_
 | 
				
			||||||
#define _SPI_REGS_H_
 | 
					#define _SPI_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class spi_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class spi_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    BEGIN_BF_DECL(sckdiv_t, uint32_t);
 | 
					    BEGIN_BF_DECL(sckdiv_t, uint32_t);
 | 
				
			||||||
@@ -124,26 +124,26 @@ public:
 | 
				
			|||||||
    END_BF_DECL() r_ip;
 | 
					    END_BF_DECL() r_ip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register<sckdiv_t> sckdiv;
 | 
					    scc::sc_register<sckdiv_t> sckdiv;
 | 
				
			||||||
    sysc::sc_register<sckmode_t> sckmode;
 | 
					    scc::sc_register<sckmode_t> sckmode;
 | 
				
			||||||
    sysc::sc_register<uint32_t> csid;
 | 
					    scc::sc_register<uint32_t> csid;
 | 
				
			||||||
    sysc::sc_register<uint32_t> csdef;
 | 
					    scc::sc_register<uint32_t> csdef;
 | 
				
			||||||
    sysc::sc_register<csmode_t> csmode;
 | 
					    scc::sc_register<csmode_t> csmode;
 | 
				
			||||||
    sysc::sc_register<delay0_t> delay0;
 | 
					    scc::sc_register<delay0_t> delay0;
 | 
				
			||||||
    sysc::sc_register<delay1_t> delay1;
 | 
					    scc::sc_register<delay1_t> delay1;
 | 
				
			||||||
    sysc::sc_register<fmt_t> fmt;
 | 
					    scc::sc_register<fmt_t> fmt;
 | 
				
			||||||
    sysc::sc_register<txdata_t> txdata;
 | 
					    scc::sc_register<txdata_t> txdata;
 | 
				
			||||||
    sysc::sc_register<rxdata_t> rxdata;
 | 
					    scc::sc_register<rxdata_t> rxdata;
 | 
				
			||||||
    sysc::sc_register<txmark_t> txmark;
 | 
					    scc::sc_register<txmark_t> txmark;
 | 
				
			||||||
    sysc::sc_register<rxmark_t> rxmark;
 | 
					    scc::sc_register<rxmark_t> rxmark;
 | 
				
			||||||
    sysc::sc_register<fctrl_t> fctrl;
 | 
					    scc::sc_register<fctrl_t> fctrl;
 | 
				
			||||||
    sysc::sc_register<ffmt_t> ffmt;
 | 
					    scc::sc_register<ffmt_t> ffmt;
 | 
				
			||||||
    sysc::sc_register<ie_t> ie;
 | 
					    scc::sc_register<ie_t> ie;
 | 
				
			||||||
    sysc::sc_register<ip_t> ip;
 | 
					    scc::sc_register<ip_t> ip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    spi_regs(sc_core::sc_module_name nm);
 | 
					    spi_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -169,7 +169,7 @@ inline sysc::spi_regs::spi_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(ie, r_ie, 0, *this)
 | 
					, NAMED(ie, r_ie, 0, *this)
 | 
				
			||||||
, NAMED(ip, r_ip, 0, *this) {}
 | 
					, NAMED(ip, r_ip, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::spi_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::spi_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(sckdiv, 0x0UL);
 | 
					    target.addResource(sckdiv, 0x0UL);
 | 
				
			||||||
    target.addResource(sckmode, 0x4UL);
 | 
					    target.addResource(sckmode, 0x4UL);
 | 
				
			||||||
    target.addResource(csid, 0x10UL);
 | 
					    target.addResource(csid, 0x10UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,14 +36,14 @@
 | 
				
			|||||||
#ifndef _UART_REGS_H_
 | 
					#ifndef _UART_REGS_H_
 | 
				
			||||||
#define _UART_REGS_H_
 | 
					#define _UART_REGS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/register.h>
 | 
					 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
#include <util/bit_field.h>
 | 
					#include <util/bit_field.h>
 | 
				
			||||||
 | 
					#include "scc/register.h"
 | 
				
			||||||
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class uart_regs : public sc_core::sc_module, public sysc::resetable {
 | 
					class uart_regs : public sc_core::sc_module, public scc::resetable {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // storage declarations
 | 
					    // storage declarations
 | 
				
			||||||
    BEGIN_BF_DECL(txdata_t, uint32_t);
 | 
					    BEGIN_BF_DECL(txdata_t, uint32_t);
 | 
				
			||||||
@@ -82,17 +82,17 @@ public:
 | 
				
			|||||||
    END_BF_DECL() r_div;
 | 
					    END_BF_DECL() r_div;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // register declarations
 | 
					    // register declarations
 | 
				
			||||||
    sysc::sc_register<txdata_t> txdata;
 | 
					    scc::sc_register<txdata_t> txdata;
 | 
				
			||||||
    sysc::sc_register<rxdata_t> rxdata;
 | 
					    scc::sc_register<rxdata_t> rxdata;
 | 
				
			||||||
    sysc::sc_register<txctrl_t> txctrl;
 | 
					    scc::sc_register<txctrl_t> txctrl;
 | 
				
			||||||
    sysc::sc_register<rxctrl_t> rxctrl;
 | 
					    scc::sc_register<rxctrl_t> rxctrl;
 | 
				
			||||||
    sysc::sc_register<ie_t> ie;
 | 
					    scc::sc_register<ie_t> ie;
 | 
				
			||||||
    sysc::sc_register<ip_t> ip;
 | 
					    scc::sc_register<ip_t> ip;
 | 
				
			||||||
    sysc::sc_register<div_t> div;
 | 
					    scc::sc_register<div_t> div;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uart_regs(sc_core::sc_module_name nm);
 | 
					    uart_regs(sc_core::sc_module_name nm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template <unsigned BUSWIDTH = 32> void registerResources(sysc::tlm_target<BUSWIDTH> &target);
 | 
					    template <unsigned BUSWIDTH = 32> void registerResources(scc::tlm_target<BUSWIDTH> &target);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -109,7 +109,7 @@ inline sysc::uart_regs::uart_regs(sc_core::sc_module_name nm)
 | 
				
			|||||||
, NAMED(ip, r_ip, 0, *this)
 | 
					, NAMED(ip, r_ip, 0, *this)
 | 
				
			||||||
, NAMED(div, r_div, 0, *this) {}
 | 
					, NAMED(div, r_div, 0, *this) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <unsigned BUSWIDTH> inline void sysc::uart_regs::registerResources(sysc::tlm_target<BUSWIDTH> &target) {
 | 
					template <unsigned BUSWIDTH> inline void sysc::uart_regs::registerResources(scc::tlm_target<BUSWIDTH> &target) {
 | 
				
			||||||
    target.addResource(txdata, 0x0UL);
 | 
					    target.addResource(txdata, 0x0UL);
 | 
				
			||||||
    target.addResource(rxdata, 0x4UL);
 | 
					    target.addResource(rxdata, 0x4UL);
 | 
				
			||||||
    target.addResource(txctrl, 0x8UL);
 | 
					    target.addResource(txctrl, 0x8UL);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@
 | 
				
			|||||||
#ifndef _GPIO_H_
 | 
					#ifndef _GPIO_H_
 | 
				
			||||||
#define _GPIO_H_
 | 
					#define _GPIO_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class gpio_regs;
 | 
					class gpio_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class gpio : public sc_core::sc_module, public tlm_target<> {
 | 
					class gpio : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(gpio);
 | 
					    SC_HAS_PROCESS(gpio);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,10 +33,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <array>
 | 
					#include <array>
 | 
				
			||||||
#include <sysc/kernel/sc_module.h>
 | 
					#include <sysc/kernel/sc_module.h>
 | 
				
			||||||
#include <sysc/memory.h>
 | 
					 | 
				
			||||||
#include <sysc/router.h>
 | 
					 | 
				
			||||||
#include <sysc/utilities.h>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/memory.h"
 | 
				
			||||||
 | 
					#include "scc/router.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "core_complex.h"
 | 
					#include "core_complex.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
@@ -46,7 +46,7 @@ public:
 | 
				
			|||||||
    SC_HAS_PROCESS(platform);
 | 
					    SC_HAS_PROCESS(platform);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SiFive::core_complex i_core_complex;
 | 
					    SiFive::core_complex i_core_complex;
 | 
				
			||||||
    router<> i_router;
 | 
					    scc::router<> i_router;
 | 
				
			||||||
    uart i_uart0, i_uart1;
 | 
					    uart i_uart0, i_uart1;
 | 
				
			||||||
    spi i_spi;
 | 
					    spi i_spi;
 | 
				
			||||||
    gpio i_gpio;
 | 
					    gpio i_gpio;
 | 
				
			||||||
@@ -55,8 +55,8 @@ public:
 | 
				
			|||||||
    prci i_prci;
 | 
					    prci i_prci;
 | 
				
			||||||
    clint i_clint;
 | 
					    clint i_clint;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    memory<512_MB, 32> i_mem_qspi;
 | 
					    scc::memory<512_MB, 32> i_mem_qspi;
 | 
				
			||||||
    memory<128_kB, 32> i_mem_ram;
 | 
					    scc::memory<128_kB, 32> i_mem_ram;
 | 
				
			||||||
    sc_core::sc_signal<sc_core::sc_time> s_clk;
 | 
					    sc_core::sc_signal<sc_core::sc_time> s_clk;
 | 
				
			||||||
    sc_core::sc_signal<bool> s_rst, s_mtime_int, s_msie_int;
 | 
					    sc_core::sc_signal<bool> s_rst, s_mtime_int, s_msie_int;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@
 | 
				
			|||||||
#ifndef _PLIC_H_
 | 
					#ifndef _PLIC_H_
 | 
				
			||||||
#define _PLIC_H_
 | 
					#define _PLIC_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class plic_regs;
 | 
					class plic_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class plic : public sc_core::sc_module, public tlm_target<> {
 | 
					class plic : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(plic);
 | 
					    SC_HAS_PROCESS(plic);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@
 | 
				
			|||||||
#ifndef _PRCI_H_
 | 
					#ifndef _PRCI_H_
 | 
				
			||||||
#define _PRCI_H_
 | 
					#define _PRCI_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class prci_regs;
 | 
					class prci_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class prci : public sc_core::sc_module, public tlm_target<> {
 | 
					class prci : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(prci);
 | 
					    SC_HAS_PROCESS(prci);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@
 | 
				
			|||||||
#ifndef _SPI_H_
 | 
					#ifndef _SPI_H_
 | 
				
			||||||
#define _SPI_H_
 | 
					#define _SPI_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class spi_regs;
 | 
					class spi_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class spi : public sc_core::sc_module, public tlm_target<> {
 | 
					class spi : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(spi);
 | 
					    SC_HAS_PROCESS(spi);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,13 +17,13 @@
 | 
				
			|||||||
#ifndef _UART_H_
 | 
					#ifndef _UART_H_
 | 
				
			||||||
#define _UART_H_
 | 
					#define _UART_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <sysc/tlm_target.h>
 | 
					#include "scc/tlm_target.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class uart_regs;
 | 
					class uart_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class uart : public sc_core::sc_module, public tlm_target<> {
 | 
					class uart : public sc_core::sc_module, public scc::tlm_target<> {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SC_HAS_PROCESS(uart);
 | 
					    SC_HAS_PROCESS(uart);
 | 
				
			||||||
    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
					    sc_core::sc_in<sc_core::sc_time> clk_i;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,10 +26,10 @@
 | 
				
			|||||||
#include <sr_report/sr_report.h>
 | 
					#include <sr_report/sr_report.h>
 | 
				
			||||||
#include <sstream>
 | 
					#include <sstream>
 | 
				
			||||||
#include <sysc/SiFive/platform.h>
 | 
					#include <sysc/SiFive/platform.h>
 | 
				
			||||||
#include <sysc/configurer.h>
 | 
					#include "scc/configurer.h"
 | 
				
			||||||
#include <sysc/report.h>
 | 
					#include "scc/report.h"
 | 
				
			||||||
#include <sysc/scv_tr_db.h>
 | 
					#include "scc/scv_tr_db.h"
 | 
				
			||||||
#include <sysc/tracer.h>
 | 
					#include "scc/tracer.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace sysc;
 | 
					using namespace sysc;
 | 
				
			||||||
namespace po = boost::program_options;
 | 
					namespace po = boost::program_options;
 | 
				
			||||||
@@ -42,7 +42,7 @@ const size_t ERROR_UNHANDLED_EXCEPTION = 2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int sc_main(int argc, char *argv[]) {
 | 
					int sc_main(int argc, char *argv[]) {
 | 
				
			||||||
    //    sc_report_handler::set_handler(my_report_handler);
 | 
					    //    sc_report_handler::set_handler(my_report_handler);
 | 
				
			||||||
    sysc::Logger<>::reporting_level() = log::ERROR;
 | 
					    scc::Logger<>::reporting_level() = logging::ERROR;
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
    // CLI argument parsing
 | 
					    // CLI argument parsing
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -84,7 +84,7 @@ int sc_main(int argc, char *argv[]) {
 | 
				
			|||||||
        LOGGER(DEFAULT)::reporting_level() = l;
 | 
					        LOGGER(DEFAULT)::reporting_level() = l;
 | 
				
			||||||
        LOGGER(connection)::reporting_level() = l;
 | 
					        LOGGER(connection)::reporting_level() = l;
 | 
				
			||||||
        LOGGER(SystemC)::reporting_level() = l;
 | 
					        LOGGER(SystemC)::reporting_level() = l;
 | 
				
			||||||
        sysc::Logger<>::reporting_level() = l;
 | 
					        scc::Logger<>::reporting_level() = l;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (vm.count("log-file")) {
 | 
					    if (vm.count("log-file")) {
 | 
				
			||||||
        // configure the connection logger
 | 
					        // configure the connection logger
 | 
				
			||||||
@@ -100,12 +100,12 @@ int sc_main(int argc, char *argv[]) {
 | 
				
			|||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
    // set up tracing & transaction recording
 | 
					    // set up tracing & transaction recording
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
    sysc::tracer trace("simple_system", static_cast<sysc::tracer::file_type>(vm["trace"].as<uint8_t>() >> 1),
 | 
					    scc::tracer trace("simple_system", static_cast<scc::tracer::file_type>(vm["trace"].as<uint8_t>() >> 1),
 | 
				
			||||||
                       vm["trace"].as<uint8_t>() != 0);
 | 
					                       vm["trace"].as<uint8_t>() != 0);
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
    // set up configuration
 | 
					    // set up configuration
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
    sysc::configurer cfg(vm["config-file"].as<std::string>());
 | 
					    scc::configurer cfg(vm["config-file"].as<std::string>());
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
    // instantiate top level
 | 
					    // instantiate top level
 | 
				
			||||||
    ///////////////////////////////////////////////////////////////////////////
 | 
					    ///////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,9 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/aon.h"
 | 
					#include "sysc/SiFive/aon.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/aon_regs.h"
 | 
					#include "sysc/SiFive/gen/aon_regs.h"
 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,9 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/clint.h"
 | 
					#include "sysc/SiFive/clint.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/clint_regs.h"
 | 
					#include "sysc/SiFive/gen/clint_regs.h"
 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -37,20 +38,20 @@ clint::clint(sc_core::sc_module_name nm)
 | 
				
			|||||||
    SC_METHOD(reset_cb);
 | 
					    SC_METHOD(reset_cb);
 | 
				
			||||||
    sensitive << rst_i;
 | 
					    sensitive << rst_i;
 | 
				
			||||||
    dont_initialize();
 | 
					    dont_initialize();
 | 
				
			||||||
    regs->mtimecmp.set_write_cb([this](sc_register<uint64_t> ®, uint64_t data) -> bool {
 | 
					    regs->mtimecmp.set_write_cb([this](scc::sc_register<uint64_t> ®, uint64_t data) -> bool {
 | 
				
			||||||
        if (!regs->in_reset()) {
 | 
					        if (!regs->in_reset()) {
 | 
				
			||||||
            reg.put(data);
 | 
					            reg.put(data);
 | 
				
			||||||
            this->update_mtime();
 | 
					            this->update_mtime();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    regs->mtime.set_read_cb([this](const sc_register<uint64_t> ®, uint64_t &data) -> bool {
 | 
					    regs->mtime.set_read_cb([this](const scc::sc_register<uint64_t> ®, uint64_t &data) -> bool {
 | 
				
			||||||
        this->update_mtime();
 | 
					        this->update_mtime();
 | 
				
			||||||
        data = reg.get();
 | 
					        data = reg.get();
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    regs->mtime.set_write_cb([this](sc_register<uint64_t> ®, uint64_t data) -> bool { return false; });
 | 
					    regs->mtime.set_write_cb([this](scc::sc_register<uint64_t> ®, uint64_t data) -> bool { return false; });
 | 
				
			||||||
    regs->msip.set_write_cb([this](sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
					    regs->msip.set_write_cb([this](scc::sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
				
			||||||
        reg.put(data);
 | 
					        reg.put(data);
 | 
				
			||||||
        msip_int_o.write(regs->r_msip.msip);
 | 
					        msip_int_o.write(regs->r_msip.msip);
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,8 @@
 | 
				
			|||||||
#include <iss/iss.h>
 | 
					#include <iss/iss.h>
 | 
				
			||||||
#include <iss/vm_types.h>
 | 
					#include <iss/vm_types.h>
 | 
				
			||||||
#include <sysc/SiFive/core_complex.h>
 | 
					#include <sysc/SiFive/core_complex.h>
 | 
				
			||||||
#include <sysc/report.h>
 | 
					
 | 
				
			||||||
 | 
					#include "scc/report.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
namespace SiFive {
 | 
					namespace SiFive {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,9 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/gpio.h"
 | 
					#include "sysc/SiFive/gpio.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/gpio_regs.h"
 | 
					#include "sysc/SiFive/gen/gpio_regs.h"
 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,9 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/plic.h"
 | 
					#include "sysc/SiFive/plic.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/plic_regs.h"
 | 
					#include "sysc/SiFive/gen/plic_regs.h"
 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,9 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/prci.h"
 | 
					#include "sysc/SiFive/prci.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/prci_regs.h"
 | 
					#include "sysc/SiFive/gen/prci_regs.h"
 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,14 +37,14 @@ prci::prci(sc_core::sc_module_name nm)
 | 
				
			|||||||
    sensitive << hfrosc_en_evt;
 | 
					    sensitive << hfrosc_en_evt;
 | 
				
			||||||
    dont_initialize();
 | 
					    dont_initialize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    regs->hfrosccfg.set_write_cb([this](sysc::sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
					    regs->hfrosccfg.set_write_cb([this](scc::sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
				
			||||||
        reg.put(data);
 | 
					        reg.put(data);
 | 
				
			||||||
        if (this->regs->r_hfrosccfg & (1 << 30)) { // check rosc_en
 | 
					        if (this->regs->r_hfrosccfg & (1 << 30)) { // check rosc_en
 | 
				
			||||||
            this->hfrosc_en_evt.notify(1, sc_core::SC_US);
 | 
					            this->hfrosc_en_evt.notify(1, sc_core::SC_US);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    regs->pllcfg.set_write_cb([this](sysc::sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
					    regs->pllcfg.set_write_cb([this](scc::sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
				
			||||||
        reg.put(data);
 | 
					        reg.put(data);
 | 
				
			||||||
        auto &pllcfg = this->regs->r_pllcfg;
 | 
					        auto &pllcfg = this->regs->r_pllcfg;
 | 
				
			||||||
        if (pllcfg.pllbypass == 0 && pllcfg.pllq != 0) { // set pll_lock if pll is selected
 | 
					        if (pllcfg.pllbypass == 0 && pllcfg.pllq != 0) { // set pll_lock if pll is selected
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,9 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/spi.h"
 | 
					#include "sysc/SiFive/spi.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/spi_regs.h"
 | 
					#include "sysc/SiFive/gen/spi_regs.h"
 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,9 +15,10 @@
 | 
				
			|||||||
////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sysc/SiFive/uart.h"
 | 
					#include "sysc/SiFive/uart.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "scc/report.h"
 | 
				
			||||||
 | 
					#include "scc/utilities.h"
 | 
				
			||||||
#include "sysc/SiFive/gen/uart_regs.h"
 | 
					#include "sysc/SiFive/gen/uart_regs.h"
 | 
				
			||||||
#include "sysc/report.h"
 | 
					 | 
				
			||||||
#include "sysc/utilities.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace sysc {
 | 
					namespace sysc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -33,7 +34,7 @@ uart::uart(sc_core::sc_module_name nm)
 | 
				
			|||||||
    SC_METHOD(reset_cb);
 | 
					    SC_METHOD(reset_cb);
 | 
				
			||||||
    sensitive << rst_i;
 | 
					    sensitive << rst_i;
 | 
				
			||||||
    dont_initialize();
 | 
					    dont_initialize();
 | 
				
			||||||
    regs->txdata.set_write_cb([this](sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
					    regs->txdata.set_write_cb([this](scc::sc_register<uint32_t> ®, uint32_t data) -> bool {
 | 
				
			||||||
        if (!this->regs->in_reset()) {
 | 
					        if (!this->regs->in_reset()) {
 | 
				
			||||||
            reg.put(data);
 | 
					            reg.put(data);
 | 
				
			||||||
            this->transmit_data();
 | 
					            this->transmit_data();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -893,9 +893,9 @@ iss::status riscv_hart_msu_vp<BASE>::read_mem(phys_addr_t paddr, unsigned length
 | 
				
			|||||||
        const auto &p = mem(paddr.val / mem.page_size);
 | 
					        const auto &p = mem(paddr.val / mem.page_size);
 | 
				
			||||||
        auto offs = paddr.val & mem.page_addr_mask;
 | 
					        auto offs = paddr.val & mem.page_addr_mask;
 | 
				
			||||||
        std::copy(p.data() + offs, p.data() + offs + length, data);
 | 
					        std::copy(p.data() + offs, p.data() + offs + length, data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return iss::Ok;
 | 
					    return iss::Ok;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <typename BASE>
 | 
					template <typename BASE>
 | 
				
			||||||
@@ -911,22 +911,20 @@ iss::status riscv_hart_msu_vp<BASE>::write_mem(phys_addr_t paddr, unsigned lengt
 | 
				
			|||||||
            std::cout << uart_buf.str();
 | 
					            std::cout << uart_buf.str();
 | 
				
			||||||
            uart_buf.str("");
 | 
					            uart_buf.str("");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return iss::Ok;
 | 
					        break;
 | 
				
			||||||
    case 0x10008000: { // HFROSC base, hfrosccfg reg
 | 
					    case 0x10008000: { // HFROSC base, hfrosccfg reg
 | 
				
			||||||
        mem_type::page_type &p = mem(paddr.val / mem.page_size);
 | 
					        mem_type::page_type &p = mem(paddr.val / mem.page_size);
 | 
				
			||||||
        size_t offs = paddr.val & mem.page_addr_mask;
 | 
					        size_t offs = paddr.val & mem.page_addr_mask;
 | 
				
			||||||
        std::copy(data, data + length, p.data() + offs);
 | 
					        std::copy(data, data + length, p.data() + offs);
 | 
				
			||||||
        uint8_t &x = *(p.data() + offs + 3);
 | 
					        uint8_t &x = *(p.data() + offs + 3);
 | 
				
			||||||
        if (x & 0x40) x |= 0x80; // hfroscrdy = 1 if hfroscen==1
 | 
					        if (x & 0x40) x |= 0x80; // hfroscrdy = 1 if hfroscen==1
 | 
				
			||||||
        return iss::Ok;
 | 
					    } break;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    case 0x10008008: { // HFROSC base, pllcfg reg
 | 
					    case 0x10008008: { // HFROSC base, pllcfg reg
 | 
				
			||||||
        mem_type::page_type &p = mem(paddr.val / mem.page_size);
 | 
					        mem_type::page_type &p = mem(paddr.val / mem.page_size);
 | 
				
			||||||
        size_t offs = paddr.val & mem.page_addr_mask;
 | 
					        size_t offs = paddr.val & mem.page_addr_mask;
 | 
				
			||||||
        std::copy(data, data + length, p.data() + offs);
 | 
					        std::copy(data, data + length, p.data() + offs);
 | 
				
			||||||
        uint8_t &x = *(p.data() + offs + 3);
 | 
					        uint8_t &x = *(p.data() + offs + 3);
 | 
				
			||||||
        x |= 0x80; // set pll lock upon writing
 | 
					        x |= 0x80; // set pll lock upon writing
 | 
				
			||||||
        return iss::Ok;
 | 
					 | 
				
			||||||
    } break;
 | 
					    } break;
 | 
				
			||||||
    default: {
 | 
					    default: {
 | 
				
			||||||
        mem_type::page_type &p = mem(paddr.val / mem.page_size);
 | 
					        mem_type::page_type &p = mem(paddr.val / mem.page_size);
 | 
				
			||||||
@@ -969,9 +967,9 @@ iss::status riscv_hart_msu_vp<BASE>::write_mem(phys_addr_t paddr, unsigned lengt
 | 
				
			|||||||
                *reinterpret_cast<uint64_t *>(p.data() + (tohost & mem.page_addr_mask)) = fhostvar;
 | 
					                *reinterpret_cast<uint64_t *>(p.data() + (tohost & mem.page_addr_mask)) = fhostvar;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return iss::Ok;
 | 
					    return iss::Ok;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <typename BASE> void riscv_hart_msu_vp<BASE>::check_interrupt() {
 | 
					template <typename BASE> void riscv_hart_msu_vp<BASE>::check_interrupt() {
 | 
				
			||||||
 
 | 
				
			|||||||
 Submodule sc-components updated: 35379b77b6...f1c733dc2c
									
								
							
		Reference in New Issue
	
	Block a user