l.div and l.divu do not set carry on divide by zero with Or1ksim #91
Closedjeremybennett opened this issue over 14 years ago
jeremybennett commented over 14 years ago
<p>
The OR1200 spec requires l.div and l.divu to set the carry flag on divide by zero as required. This doesn't happen in Or1ksim.
</p>
<p>
Reported in <em>Implementation and Verification of a CPU Subsystem for Multimode RF Transceivers</em> by Waqas Ahmed of the Royal Institute of Technology, Sweden.
</p>
<p>
Jeremy
</p>
<p>
-- <br />
Tel: +44 (1590) 610184<br />
Cell: +44 (7970) 676050<br />
SkypeID: jeremybennett<br />
Email: <a href="mailto:jeremy.bennett@embecosm.com">jeremy.bennett@embecosm.com</a><br />
Web: <a href="http://www.embecosm.com">www.embecosm.com</a>
</p>
jeremybennett was assigned over 14 years ago
jeremybennett commented over 14 years ago
<p>
In testing another aspect of this bug appeared. On divide by zero l.div throws an illegal instruction exception, rather than a range exception.
</p>
jeremybennett commented over 14 years ago
<p>
Fixed in top of tree. Scheduled for inclusion in Or1ksim 0.4.0rc2.
</p>
<p>
Marking closed.
</p>
<p>
Jeremy
</p>
jeremybennett closed this over 14 years ago
rherveille commented over 14 years ago
Aha ... I was already wondering what exception was set during a divide by zero. So range expception is what should be used?
Which means a 'divide by zero' exception is the combination of 'range exception'+'carry' ??