Better logging output
This commit is contained in:
parent
a5cc9d60d2
commit
8e8418e3e2
|
@ -17,7 +17,7 @@ void RISC_V_execute::LUI(Instruction &inst) {
|
||||||
rd = inst.rd();
|
rd = inst.rd();
|
||||||
imm = inst.imm_U() << 12;
|
imm = inst.imm_U() << 12;
|
||||||
regs->setValue(rd, imm);
|
regs->setValue(rd, imm);
|
||||||
log->SC_log(Log::INFO) << "LUI R" << rd << " <- " << imm << endl;
|
log->SC_log(Log::INFO) << "LUI R" << rd << " <- 0x" << hex << imm << endl;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,8 @@ void RISC_V_execute::JAL(Instruction &inst) {
|
||||||
new_pc = new_pc + mem_addr - 4;
|
new_pc = new_pc + mem_addr - 4;
|
||||||
regs->setPC(new_pc);
|
regs->setPC(new_pc);
|
||||||
|
|
||||||
log->SC_log(Log::INFO) << "JAL: R" << rd << " PC + " << mem_addr << " -> PC (" << new_pc << ")" << endl;
|
log->SC_log(Log::INFO) << "JAL: R" << rd << " PC + " << mem_addr
|
||||||
|
<< " -> PC (0x" << hex << new_pc << ")" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RISC_V_execute::JALR(Instruction &inst) {
|
void RISC_V_execute::JALR(Instruction &inst) {
|
||||||
|
@ -64,8 +65,10 @@ void RISC_V_execute::JALR(Instruction &inst) {
|
||||||
new_pc = regs->getPC();
|
new_pc = regs->getPC();
|
||||||
regs->setValue(rd, new_pc);
|
regs->setValue(rd, new_pc);
|
||||||
|
|
||||||
new_pc = (new_pc + mem_addr) & 0xFFFFFFFE;
|
new_pc = (new_pc + mem_addr - 4) & 0xFFFFFFFE;
|
||||||
regs->setPC(new_pc);
|
regs->setPC(new_pc);
|
||||||
|
|
||||||
|
log->SC_log(Log::INFO) << "JALR PC <- 0x" << hex << new_pc << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RISC_V_execute::BEQ(Instruction &inst) {
|
void RISC_V_execute::BEQ(Instruction &inst) {
|
||||||
|
@ -126,7 +129,10 @@ void RISC_V_execute::BGE(Instruction &inst) {
|
||||||
regs->setPC(new_pc);
|
regs->setPC(new_pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
log->SC_log(Log::INFO) << "BGE R" << rs1 << " > R" << rs2 << "? -> PC (" << new_pc << ")" << endl;
|
log->SC_log(Log::INFO) << "BGE R" << rs1 << "(" <<
|
||||||
|
(int32_t)regs->getValue(rs1) << ") > R" <<
|
||||||
|
rs2 << "(" << (int32_t)regs->getValue(rs2)
|
||||||
|
<< ")? -> PC (" << new_pc << ")" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RISC_V_execute::BLTU(Instruction &inst) {
|
void RISC_V_execute::BLTU(Instruction &inst) {
|
||||||
|
@ -249,8 +255,6 @@ void RISC_V_execute::LHU(Instruction &inst) {
|
||||||
<< hex <<mem_addr << dec << ") -> R" << rd << endl;
|
<< hex <<mem_addr << dec << ") -> R" << rd << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void RISC_V_execute::SB(Instruction &inst) {
|
void RISC_V_execute::SB(Instruction &inst) {
|
||||||
uint32_t mem_addr = 0;
|
uint32_t mem_addr = 0;
|
||||||
int rs1, rs2;
|
int rs1, rs2;
|
||||||
|
@ -304,8 +308,9 @@ void RISC_V_execute::SW(Instruction &inst) {
|
||||||
|
|
||||||
writeDataMem(mem_addr, data, 4);
|
writeDataMem(mem_addr, data, 4);
|
||||||
|
|
||||||
log->SC_log(Log::INFO) << "SW: R" << rs2 << " -> R" << rs1 << " + "
|
log->SC_log(Log::INFO) << "SW: R" << dec << rs2 << "(0x" << hex << data
|
||||||
<< imm << " (@0x" << hex <<mem_addr << dec << ")" << endl;
|
<< ") -> R" << dec << rs1 << " + " << imm
|
||||||
|
<< " (@0x" << hex << mem_addr << dec << ")" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RISC_V_execute::ADDI(Instruction &inst) {
|
void RISC_V_execute::ADDI(Instruction &inst) {
|
||||||
|
@ -723,7 +728,7 @@ uint32_t RISC_V_execute::readDataMem(uint32_t addr, int size) {
|
||||||
|
|
||||||
trans.set_command( tlm::TLM_READ_COMMAND );
|
trans.set_command( tlm::TLM_READ_COMMAND );
|
||||||
trans.set_data_ptr( reinterpret_cast<unsigned char*>(&data) );
|
trans.set_data_ptr( reinterpret_cast<unsigned char*>(&data) );
|
||||||
trans.set_data_length( 4 );
|
trans.set_data_length( size );
|
||||||
trans.set_streaming_width( 4 ); // = data_length to indicate no streaming
|
trans.set_streaming_width( 4 ); // = data_length to indicate no streaming
|
||||||
trans.set_byte_enable_ptr( 0 ); // 0 indicates unused
|
trans.set_byte_enable_ptr( 0 ); // 0 indicates unused
|
||||||
trans.set_dmi_allowed( false ); // Mandatory initial value
|
trans.set_dmi_allowed( false ); // Mandatory initial value
|
||||||
|
|
|
@ -48,7 +48,7 @@ void Registers::dump(void) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cout << "PC: " << register_PC << endl;
|
cout << "PC: 0x" << hex << register_PC << endl;
|
||||||
cout << "************************************" << endl;
|
cout << "************************************" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,6 @@ SC_MODULE(Top)
|
||||||
|
|
||||||
Bus->data_memory_socket.bind(MainMemory->socket);
|
Bus->data_memory_socket.bind(MainMemory->socket);
|
||||||
Bus->trace_socket.bind(trace->socket);
|
Bus->trace_socket.bind(trace->socket);
|
||||||
|
|
||||||
//cpu->interrupt.bind(IRQ);
|
//cpu->interrupt.bind(IRQ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ void Trace::b_transport( tlm::tlm_generic_payload& trans, sc_time& delay ) {
|
||||||
//unsigned int wid = trans.get_streaming_width();
|
//unsigned int wid = trans.get_streaming_width();
|
||||||
|
|
||||||
|
|
||||||
cout << (char) *ptr;
|
cout << (char) *ptr << flush;
|
||||||
|
|
||||||
trans.set_response_status( tlm::TLM_OK_RESPONSE );
|
trans.set_response_status( tlm::TLM_OK_RESPONSE );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue