[OpenBIOS] [RFC 3/3] SPARC32/64: Mimic Sun's OBP behaviour if a divide by zero occurs.

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Mon Jan 7 16:07:41 CET 2013


As reported by Artyom Tarasenko, if anything is divided by zero then we should
return no value:

0 > 4 2 / u. 2  ok
0 > 2 0 /  ok

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
---
 openbios-devel/arch/sparc32/init.fs |    7 +++++++
 openbios-devel/arch/sparc64/init.fs |    7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/openbios-devel/arch/sparc32/init.fs b/openbios-devel/arch/sparc32/init.fs
index 7306eab..7d20d4d 100644
--- a/openbios-devel/arch/sparc32/init.fs
+++ b/openbios-devel/arch/sparc32/init.fs
@@ -45,3 +45,10 @@ device-end
 : obmem ( -- space )
   0
   ;
+
+\ Override divide by zero handling
+\ Tests indicate that Sun's OBP implementation returns no value in this case
+
+: (sparc-div-by-zero-handler) 3drop 0 0 ;
+
+['] (sparc-div-by-zero-handler) to (div-by-zero-handler)
diff --git a/openbios-devel/arch/sparc64/init.fs b/openbios-devel/arch/sparc64/init.fs
index a1cadc1..535b7d2 100644
--- a/openbios-devel/arch/sparc64/init.fs
+++ b/openbios-devel/arch/sparc64/init.fs
@@ -53,3 +53,10 @@ device-end
 : rmap@    ( virt -- rmentry )
   drop 0
   ;
+
+\ Override divide by zero handling
+\ Tests indicate that Sun's OBP implementation returns no value in this case
+
+: (sparc-div-by-zero-handler) 3drop 0 0 ;
+
+['] (sparc-div-by-zero-handler) to (div-by-zero-handler)
-- 
1.7.10.4




More information about the OpenBIOS mailing list