Skip to content

Commit d3cb781

Browse files
Andrew WatermanAndrew Waterman
authored andcommitted
[sim] added writeback tracing
1 parent 9222fb8 commit d3cb781

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

riscv/decode.h

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,35 @@ union insn_t
119119
uint32_t bits;
120120
};
121121

122+
#if 0
123+
#include <stdio.h>
124+
class trace_writeback
125+
{
126+
public:
127+
trace_writeback(reg_t* _rf, int _rd) : rf(_rf), rd(_rd) {}
128+
129+
reg_t operator = (reg_t rhs)
130+
{
131+
printf("R[%x] <= %llx\n",rd,(long long)rhs);
132+
rf[rd] = rhs;
133+
return rhs;
134+
}
135+
136+
private:
137+
reg_t* rf;
138+
int rd;
139+
};
140+
141+
#define do_writeback(rf,rd) trace_writeback(rf,rd)
142+
#else
143+
#define do_writeback(rf,rd) rf[rd]
144+
#endif
145+
122146
// helpful macros, etc
123147
#define RS1 R[insn.rtype.rs1]
124148
#define RS2 R[insn.rtype.rs2]
125-
#define RDR R[insn.rtype.rdr]
126-
#define RDI R[insn.itype.rdi]
149+
#define RDR do_writeback(R,insn.rtype.rdr)
150+
#define RDI do_writeback(R,insn.itype.rdi)
127151
#define FRS1 FR[insn.ftype.rs1]
128152
#define FRS2 FR[insn.ftype.rs2]
129153
#define FRS3 FR[insn.ftype.rs3]

0 commit comments

Comments
 (0)