class sim_t
{
public:
- sim_t(size_t _nprocs, size_t mem_mb, const std::vector<std::string>& htif_args);
+ sim_t(const char* isa, size_t _nprocs, size_t mem_mb,
+ const std::vector<std::string>& htif_args);
~sim_t();
// run the simulation to completion
bool running();
void stop();
void set_debug(bool value);
+ void set_histogram(bool value);
void set_procs_debug(bool value);
+ htif_isasim_t* get_htif() { return htif.get(); }
// deliver an IPI to a specific processor
void send_ipi(reg_t who);
// returns the number of processors in this simulator
size_t num_cores() { return procs.size(); }
- processor_t* get_core(size_t i) { return procs[i]; }
+ processor_t* get_core(size_t i) { return procs.at(i); }
// read one of the system control registers
reg_t get_scr(int which);
private:
- std::auto_ptr<htif_isasim_t> htif;
+ std::unique_ptr<htif_isasim_t> htif;
char* mem; // main memory
size_t memsz; // memory size in bytes
mmu_t* debug_mmu; // debug port into main memory
size_t current_step;
size_t current_proc;
bool debug;
+ bool histogram_enabled; // provide a histogram of PCs
// presents a prompt for introspection into the simulation
void interactive();
reg_t get_tohost(const std::vector<std::string>& args);
friend class htif_isasim_t;
+ friend class processor_t;
};
extern volatile bool ctrlc_pressed;