On 12/15/2011 11:15 PM, Matthew Hicks wrote:
The current or1200 implementation allows any value to be written to r0, which
is supposed to always be 0. The following patch basically ignores all writes
to r0.
Index: or1200_rf.v
===================================================================
--- or1200_rf.v(revision 672)
+++ or1200_rf.v(working copy)
@@ -186,7 +186,7 @@
//
// RF write data is either from SPRS or normal from CPU datapath
//
-assign rf_dataw = (spr_valid & spr_write) ? spr_dat_i : dataw;
+ assign rf_dataw = (rf_addrw == 0) ? 32'b0 : (spr_valid & spr_write) ?
spr_dat_i : dataw;
//
// RF write enable is either from SPRS or normal from CPU control
Although I don't see anything wrong with doing what you are proposing,
allowing writes to r0 is actually not a bug.
The arch manual states:
"R0 is used as a constant zero. Whether or not R0 is actually hardwired to zero
is
implementation dependent. R0 should never be used as a destination register."
Stefan
_______________________________________________
OpenRISC mailing list
[email protected]
http://lists.openrisc.net/listinfo/openrisc