reduce variable scope
This commit is contained in:
		
							parent
							
								
									2ca86d4688
								
							
						
					
					
						commit
						a019de5eb3
					
				| 
						 | 
				
			
			@ -36,7 +36,7 @@ public:
 | 
			
		|||
	const sc_core::sc_time LATENCY;
 | 
			
		||||
 | 
			
		||||
	Memory(sc_core::sc_module_name name, std::string filename);
 | 
			
		||||
	Memory(sc_core::sc_module_name name, bool use_file);
 | 
			
		||||
	Memory(sc_core::sc_module_name name);
 | 
			
		||||
 | 
			
		||||
	~Memory(void);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ CPU::~CPU() {
 | 
			
		|||
 | 
			
		||||
bool CPU::cpu_process_IRQ() {
 | 
			
		||||
	uint32_t csr_temp;
 | 
			
		||||
	uint32_t new_pc, old_pc;
 | 
			
		||||
	uint32_t new_pc;
 | 
			
		||||
	bool ret_value = false;
 | 
			
		||||
 | 
			
		||||
	if (interrupt == true) {
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +80,7 @@ bool CPU::cpu_process_IRQ() {
 | 
			
		|||
			log->SC_log(Log::DEBUG) << "Interrupt!" << std::endl;
 | 
			
		||||
 | 
			
		||||
			/* updated MEPC register */
 | 
			
		||||
			old_pc = register_bank->getPC();
 | 
			
		||||
			uint32_t old_pc = register_bank->getPC();
 | 
			
		||||
			register_bank->setCSR(CSR_MEPC, old_pc);
 | 
			
		||||
			log->SC_log(Log::INFO) << "Old PC Value 0x" << std::hex << old_pc
 | 
			
		||||
					<< std::endl;
 | 
			
		||||
| 
						 | 
				
			
			@ -212,8 +212,11 @@ void CPU::call_interrupt(tlm::tlm_generic_payload &trans,
 | 
			
		|||
	interrupt = true;
 | 
			
		||||
	/* Socket caller send a cause (its id) */
 | 
			
		||||
	memcpy(&int_cause, trans.get_data_ptr(), sizeof(uint32_t));
 | 
			
		||||
	delay = sc_core::SC_ZERO_TIME;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CPU::invalidate_direct_mem_ptr(sc_dt::uint64 start, sc_dt::uint64 end) {
 | 
			
		||||
  (void) start;
 | 
			
		||||
  (void) end;
 | 
			
		||||
	dmi_ptr_valid = false;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ CPU64::~CPU64() {
 | 
			
		|||
 | 
			
		||||
bool CPU64::cpu_process_IRQ() {
 | 
			
		||||
	uint32_t csr_temp;
 | 
			
		||||
	uint32_t new_pc, old_pc;
 | 
			
		||||
	uint32_t new_pc;
 | 
			
		||||
	bool ret_value = false;
 | 
			
		||||
 | 
			
		||||
	if (interrupt == true) {
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +80,7 @@ bool CPU64::cpu_process_IRQ() {
 | 
			
		|||
			log->SC_log(Log::DEBUG) << "Interrupt!" << std::endl;
 | 
			
		||||
 | 
			
		||||
			/* updated MEPC register */
 | 
			
		||||
			old_pc = register_bank->getPC();
 | 
			
		||||
			uint32_t old_pc = register_bank->getPC();
 | 
			
		||||
			register_bank->setCSR(CSR_MEPC, old_pc);
 | 
			
		||||
			log->SC_log(Log::INFO) << "Old PC Value 0x" << std::hex << old_pc
 | 
			
		||||
					<< std::endl;
 | 
			
		||||
| 
						 | 
				
			
			@ -214,8 +214,11 @@ void CPU64::call_interrupt(tlm::tlm_generic_payload &trans,
 | 
			
		|||
	interrupt = true;
 | 
			
		||||
	/* Socket caller send a cause (its id) */
 | 
			
		||||
	memcpy(&int_cause, trans.get_data_ptr(), sizeof(uint32_t));
 | 
			
		||||
	delay = sc_core::SC_ZERO_TIME;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CPU64::invalidate_direct_mem_ptr(sc_dt::uint64 start, sc_dt::uint64 end) {
 | 
			
		||||
  (void) start;
 | 
			
		||||
  (void) end;
 | 
			
		||||
	dmi_ptr_valid = false;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -258,11 +258,13 @@ bool C_extension::Exec_C_ADDI4SPN() {
 | 
			
		|||
 | 
			
		||||
bool C_extension::Exec_C_ADDI16SP() {
 | 
			
		||||
	// addi x2, x2, nzimm[9:4]
 | 
			
		||||
	int rd, rs1;
 | 
			
		||||
	int rd;
 | 
			
		||||
	int32_t imm = 0;
 | 
			
		||||
	int32_t calc;
 | 
			
		||||
 | 
			
		||||
	if (get_rd() == 2) {
 | 
			
		||||
	  int rs1;
 | 
			
		||||
	  int32_t calc;
 | 
			
		||||
 | 
			
		||||
		rd = 2;
 | 
			
		||||
		rs1 = 2;
 | 
			
		||||
		imm = get_imm_ADDI16SP();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ Memory::Memory(sc_core::sc_module_name name, std::string filename) :
 | 
			
		|||
	log->SC_log(Log::INFO) << "Using file: " << filename << std::endl;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Memory::Memory(sc_core::sc_module_name name, bool use_file) :
 | 
			
		||||
Memory::Memory(sc_core::sc_module_name name) :
 | 
			
		||||
		sc_module(name), socket("socket"), LATENCY(sc_core::SC_ZERO_TIME) {
 | 
			
		||||
	socket.register_b_transport(this, &Memory::b_transport);
 | 
			
		||||
	socket.register_get_direct_mem_ptr(this, &Memory::get_direct_mem_ptr);
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ Memory::Memory(sc_core::sc_module_name name, bool use_file) :
 | 
			
		|||
	mem = new uint8_t[SIZE];
 | 
			
		||||
 | 
			
		||||
	log = Log::getInstance();
 | 
			
		||||
	log->SC_log(Log::INFO) << "Memory instantiated wihtout file" << std::endl;
 | 
			
		||||
	log->SC_log(Log::INFO) << "Memory instantiated without file" << std::endl;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Memory::~Memory() {
 | 
			
		||||
| 
						 | 
				
			
			@ -108,6 +108,8 @@ void Memory::b_transport(tlm::tlm_generic_payload &trans,
 | 
			
		|||
 | 
			
		||||
bool Memory::get_direct_mem_ptr(tlm::tlm_generic_payload &trans,
 | 
			
		||||
		tlm::tlm_dmi &dmi_data) {
 | 
			
		||||
  (void) trans;
 | 
			
		||||
 | 
			
		||||
	if (memory_offset != 0) {
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -145,9 +147,7 @@ unsigned int Memory::transport_dbg(tlm::tlm_generic_payload &trans) {
 | 
			
		|||
void Memory::readHexFile(std::string filename) {
 | 
			
		||||
	std::ifstream hexfile;
 | 
			
		||||
	std::string line;
 | 
			
		||||
	int byte_count;
 | 
			
		||||
	uint32_t address;
 | 
			
		||||
	int i = 0;
 | 
			
		||||
 | 
			
		||||
	uint32_t extended_address = 0;
 | 
			
		||||
 | 
			
		||||
	hexfile.open(filename);
 | 
			
		||||
| 
						 | 
				
			
			@ -157,11 +157,13 @@ void Memory::readHexFile(std::string filename) {
 | 
			
		|||
			if (line[0] == ':') {
 | 
			
		||||
				if (line.substr(7, 2) == "00") {
 | 
			
		||||
					/* Data */
 | 
			
		||||
				  int byte_count;
 | 
			
		||||
				  uint32_t address;
 | 
			
		||||
					byte_count = stol(line.substr(1, 2), nullptr, 16);
 | 
			
		||||
					address = stol(line.substr(3, 4), nullptr, 16);
 | 
			
		||||
					address = address + extended_address;
 | 
			
		||||
					//cout << "00 address 0x" << hex << address << endl;
 | 
			
		||||
					for (i = 0; i < byte_count; i++) {
 | 
			
		||||
					for (int i = 0; i < byte_count; i++) {
 | 
			
		||||
						mem[address + i] = stol(line.substr(9 + (i * 2), 2),
 | 
			
		||||
								nullptr, 16);
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,9 +37,11 @@ SC_MODULE(Simulator) {
 | 
			
		|||
	Trace *trace;
 | 
			
		||||
	Timer *timer;
 | 
			
		||||
 | 
			
		||||
	uint32_t start_PC;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	SC_CTOR(Simulator) {
 | 
			
		||||
	  uint32_t start_PC;
 | 
			
		||||
 | 
			
		||||
		MainMemory = new Memory("Main_Memory", filename);
 | 
			
		||||
		start_PC = MainMemory->getPCfromHEX();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -74,6 +76,7 @@ Simulator *top;
 | 
			
		|||
 | 
			
		||||
void intHandler(int dummy) {
 | 
			
		||||
	delete top;
 | 
			
		||||
	(void) dummy;
 | 
			
		||||
	//sc_stop();
 | 
			
		||||
	exit(-1);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,15 +39,17 @@ void Timer::run() {
 | 
			
		|||
 | 
			
		||||
void Timer::b_transport(tlm::tlm_generic_payload &trans,
 | 
			
		||||
		sc_core::sc_time &delay) {
 | 
			
		||||
 | 
			
		||||
	tlm::tlm_command cmd = trans.get_command();
 | 
			
		||||
	sc_dt::uint64 addr = trans.get_address();
 | 
			
		||||
	unsigned char *ptr = trans.get_data_ptr();
 | 
			
		||||
	unsigned int len = trans.get_data_length();
 | 
			
		||||
	//unsigned char*   byt = trans.get_byte_enable_ptr();
 | 
			
		||||
	//unsigned int     wid = trans.get_streaming_width();
 | 
			
		||||
	delay = sc_core::SC_ZERO_TIME;
 | 
			
		||||
 | 
			
		||||
	uint32_t aux_value = 0;
 | 
			
		||||
	uint64_t notify_time = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if (cmd == tlm::TLM_WRITE_COMMAND) {
 | 
			
		||||
		memcpy(&aux_value, ptr, len);
 | 
			
		||||
| 
						 | 
				
			
			@ -64,6 +66,7 @@ void Timer::b_transport(tlm::tlm_generic_payload &trans,
 | 
			
		|||
		case TIMERCMP_MEMORY_ADDRESS_HI:
 | 
			
		||||
			m_mtimecmp.range(63, 32) = aux_value;
 | 
			
		||||
 | 
			
		||||
			uint64_t notify_time;
 | 
			
		||||
			// notify needs relative time, mtimecmp works in absolute time
 | 
			
		||||
			notify_time = m_mtimecmp - m_mtime;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,8 +110,9 @@ void Trace::b_transport(tlm::tlm_generic_payload &trans,
 | 
			
		|||
		sc_core::sc_time &delay) {
 | 
			
		||||
 | 
			
		||||
	unsigned char *ptr = trans.get_data_ptr();
 | 
			
		||||
	delay = sc_core::SC_ZERO_TIME;
 | 
			
		||||
 | 
			
		||||
	write(ptSlave, ptr, 1);
 | 
			
		||||
	(void) write(ptSlave, ptr, 1);
 | 
			
		||||
 | 
			
		||||
	trans.set_response_status(tlm::TLM_OK_RESPONSE);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue