Hello community,

here is the log from the commit of package aranym for openSUSE:Factory checked 
in at 2016-03-29 10:00:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aranym (Old)
 and      /work/SRC/openSUSE:Factory/.aranym.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "aranym"

Changes:
--------
--- /work/SRC/openSUSE:Factory/aranym/aranym.changes    2015-03-16 
09:38:39.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.aranym.new/aranym.changes       2016-03-29 
10:40:03.000000000 +0200
@@ -1,0 +2,7 @@
+Mon Mar 21 00:04:40 UTC 2016 - [email protected]
+
+- fmovecr-const.patch: Fix some FPU constants for MPFR
+- nan-sign.patch: Properly track sign bit of NaN in mpfr fpu emulator
+- ncr5380-mode-reg.patch: emulate NCR5380 MODE register
+
+-------------------------------------------------------------------

New:
----
  fmovecr-const.patch
  nan-sign.patch
  ncr5380-mode-reg.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ aranym.spec ++++++
--- /var/tmp/diff_new_pack.PcBucx/_old  2016-03-29 10:40:05.000000000 +0200
+++ /var/tmp/diff_new_pack.PcBucx/_new  2016-03-29 10:40:05.000000000 +0200
@@ -37,6 +37,9 @@
 Source:         %{name}-%{version}.tar.gz
 Source1:        afros812.zip
 Patch:          cas2-emulation.patch
+Patch1:         fmovecr-const.patch
+Patch2:         nan-sign.patch
+Patch3:         ncr5380-mode-reg.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires(post): permissions
 
@@ -71,6 +74,9 @@
 %prep
 %setup -q -n %{name}-%{version} -a 1
 %patch -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 # Don't remove -g from CFLAGS
 sed -i -e 's,/-g,/-:,' configure.ac configure
 


++++++ fmovecr-const.patch ++++++
>From 6b21029312c23c905fcf85551f6face32c6886f0 Mon Sep 17 00:00:00 2001
From: Thorsten Otto <[email protected]>
Date: Sun, 19 Apr 2015 11:53:18 +0200
Subject: [PATCH] Fix some FPU constants for MPFR

---
 ChangeLog                    |  4 ++++
 src/uae_cpu/fpu/fpu_mpfr.cpp | 25 +++++++++++++------------
 2 files changed, 17 insertions(+), 12 deletions(-)

Index: aranym-1.0.2/src/uae_cpu/fpu/fpu_mpfr.cpp
===================================================================
--- aranym-1.0.2.orig/src/uae_cpu/fpu/fpu_mpfr.cpp
+++ aranym-1.0.2/src/uae_cpu/fpu/fpu_mpfr.cpp
@@ -141,28 +141,29 @@ fpu_init (bool integral_68040)
   mpfr_const_pi (fpu_constant_rom[0], MPFR_RNDN);
   // 11: log10 (2)
   mpfr_set_ui (fpu_constant_rom[11], 2, MPFR_RNDN);
-  mpfr_log10 (fpu_constant_rom[11], fpu_constant_rom[11], MPFR_RNDN);
+  mpfr_log10 (fpu_constant_rom[11], fpu_constant_rom[11], MPFR_RNDZ);
   // 12: e
   mpfr_set_ui (fpu_constant_rom[12], 1, MPFR_RNDN);
-  mpfr_exp (fpu_constant_rom[12], fpu_constant_rom[12], MPFR_RNDN);
+  mpfr_exp (fpu_constant_rom[12], fpu_constant_rom[12], MPFR_RNDZ);
   // 13: log2 (e)
-  mpfr_log2 (fpu_constant_rom[13], fpu_constant_rom[12], MPFR_RNDN);
+  mpfr_log2 (fpu_constant_rom[13], fpu_constant_rom[12], MPFR_RNDU);
   // 14: log10 (e)
-  mpfr_log10 (fpu_constant_rom[14], fpu_constant_rom[12], MPFR_RNDN);
+  mpfr_log10 (fpu_constant_rom[14], fpu_constant_rom[12], MPFR_RNDU);
   // 15: 0
   mpfr_set_zero (fpu_constant_rom[15], 0);
   // 48: ln (2)
-  mpfr_set_ui (fpu_constant_rom[16], 2, MPFR_RNDN);
-  mpfr_log (fpu_constant_rom[16], fpu_constant_rom[16], MPFR_RNDN);
+  mpfr_const_log2 (fpu_constant_rom[16], MPFR_RNDN);
   // 49: ln (10)
-  mpfr_set_ui (fpu_constant_rom[17], 2, MPFR_RNDN);
-  mpfr_log10 (fpu_constant_rom[17], fpu_constant_rom[17], MPFR_RNDN);
+  mpfr_set_ui (fpu_constant_rom[17], 10, MPFR_RNDN);
+  mpfr_log (fpu_constant_rom[17], fpu_constant_rom[17], MPFR_RNDN);
   // 50 to 63: powers of 10
   mpfr_set_ui (fpu_constant_rom[18], 1, MPFR_RNDN);
-  mpfr_set_ui (fpu_constant_rom[19], 10, MPFR_RNDN);
-  for (int i = 20; i < 31; i++)
-    mpfr_sqr (fpu_constant_rom[i], fpu_constant_rom[i - 1], MPFR_RNDN);
-
+  for (int i = 19; i < 32; i++)
+  {
+    mpfr_set_ui (fpu_constant_rom[i], 1L << (i - 19) , MPFR_RNDN);
+    mpfr_exp10 (fpu_constant_rom[i], fpu_constant_rom[i], MPFR_RNDN);
+  }
+  
   fpu_inited = true;
 
   fpu_reset ();
++++++ nan-sign.patch ++++++
>From 789f038532fc23c1e0bfc0b6d4b37790425a39c3 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <[email protected]>
Date: Sat, 22 Aug 2015 13:28:40 +0200
Subject: [PATCH] Properly track sign bit of NaN in mpfr fpu emulator

---
 ChangeLog                    |  4 +++
 src/uae_cpu/fpu/fpu_mpfr.cpp | 68 ++++++++++++++++++++++++++++++++++----------
 src/uae_cpu/fpu/types.h      |  1 +
 3 files changed, 58 insertions(+), 15 deletions(-)

Index: aranym-1.0.2/src/uae_cpu/fpu/fpu_mpfr.cpp
===================================================================
--- aranym-1.0.2.orig/src/uae_cpu/fpu/fpu_mpfr.cpp
+++ aranym-1.0.2/src/uae_cpu/fpu/fpu_mpfr.cpp
@@ -112,10 +112,17 @@ get_cur_prec ()
 #define DEFAULT_NAN_BITS 0xffffffffffffffffULL
 
 static void
-set_nan (fpu_register &reg, uae_u64 nan_bits)
+set_nan (fpu_register &reg, uae_u64 nan_bits, int nan_sign)
 {
   mpfr_set_nan (reg.f);
   reg.nan_bits = nan_bits;
+  reg.nan_sign = nan_sign;
+}
+
+static void
+set_nan (fpu_register &reg)
+{
+  set_nan (reg, DEFAULT_NAN_BITS, 0);
 }
 
 static bool fpu_inited;
@@ -189,7 +196,7 @@ fpu_reset ()
   fpu.instruction_address = 0;
 
   for (int i = 0; i < 8; i++)
-    set_nan (fpu.registers[i], DEFAULT_NAN_BITS);
+    set_nan (fpu.registers[i]);
 }
 
 fpu_register::operator long double ()
@@ -267,7 +274,7 @@ set_from_single (fpu_register &value, ua
        {
          if (!(m & 0x400000))
            cur_exceptions |= FPSR_EXCEPTION_SNAN;
-         set_nan (value, (uae_u64) (m | 0xc00000) << (32 + 8));
+         set_nan (value, (uae_u64) (m | 0xc00000) << (32 + 8), s);
        }
       else
        mpfr_set_inf (value.f, 0);
@@ -300,7 +307,7 @@ set_from_double (fpu_register &value, ua
          if (!(m & 0x80000))
            cur_exceptions |= FPSR_EXCEPTION_SNAN;
          set_nan (value, (((uae_u64) (m | 0x180000) << (32 + 11))
-                          | ((uae_u64) words[1] << 11)));
+                          | ((uae_u64) words[1] << 11)), s);
        }
       else
        mpfr_set_inf (value.f, 0);
@@ -336,7 +343,7 @@ set_from_extended (fpu_register &value,
                cur_exceptions |= FPSR_EXCEPTION_SNAN;
              words[1] |= 0x40000000;
            }
-         set_nan (value, ((uae_u64) words[1] << 32) | words[2]);
+         set_nan (value, ((uae_u64) words[1] << 32) | words[2], s);
        }
       else
        mpfr_set_inf (value.f, 0);
@@ -367,7 +374,8 @@ set_from_packed (fpu_register &value, ua
        {
          if ((words[1] & 0x40000000) == 0)
            cur_exceptions |= FPSR_EXCEPTION_SNAN;
-         set_nan (value, ((uae_u64) (words[1] | 0x40000000) << 32) | words[2]);
+         set_nan (value, ((uae_u64) (words[1] | 0x40000000) << 32) | words[2],
+                  sm);
        }
       else
        mpfr_set_inf (value.f, 0);
@@ -410,6 +418,7 @@ get_fp_value (uae_u32 opcode, uae_u32 ex
     {
       mpfr_set (value.f, fpu.registers[(extra >> 10) & 7].f, MPFR_RNDN);
       value.nan_bits = fpu.registers[(extra >> 10) & 7].nan_bits;
+      value.nan_sign = fpu.registers[(extra >> 10) & 7].nan_sign;
       /* Check for SNaN.  */
       if (mpfr_nan_p (value.f) && (value.nan_bits & (1ULL << 62)) == 0)
        {
@@ -572,12 +581,13 @@ update_exceptions ()
 }
 
 static void
-set_fp_register (int reg, mpfr_t value, uae_u64 nan_bits,
+set_fp_register (int reg, mpfr_t value, uae_u64 nan_bits, int nan_sign,
                 int t, mpfr_rnd_t rnd, bool do_flags)
 {
   mpfr_subnormalize (value, t, rnd);
   mpfr_set (fpu.registers[reg].f, value, rnd);
   fpu.registers[reg].nan_bits = nan_bits;
+  fpu.registers[reg].nan_sign = nan_sign;
   if (do_flags)
     {
       uae_u32 flags = 0;
@@ -594,6 +604,20 @@ set_fp_register (int reg, mpfr_t value,
     }
 }
 
+static void
+set_fp_register (int reg, mpfr_t value, int t, mpfr_rnd_t rnd, bool do_flags)
+{
+  set_fp_register (reg, value, DEFAULT_NAN_BITS, 0, t, rnd, do_flags);
+}
+
+static void
+set_fp_register (int reg, fpu_register &value, int t, mpfr_rnd_t rnd,
+                bool do_flags)
+{
+  set_fp_register (reg, value.f, value.nan_bits, value.nan_sign, t, rnd,
+                  do_flags);
+}
+
 static uae_u32
 extract_to_single (fpu_register &value)
 {
@@ -619,6 +643,8 @@ extract_to_single (fpu_register &value)
          cur_exceptions |= FPSR_EXCEPTION_SNAN;
        }
       word = 0x7f800000 | ((value.nan_bits >> (32 + 8)) & 0x7fffff);
+      if (value.nan_sign)
+       word |= 0x80000000;
     }
   else if (mpfr_zero_p (single))
     word = 0;
@@ -679,6 +705,8 @@ extract_to_double (fpu_register &value,
        }
       words[0] = 0x7ff00000 | ((value.nan_bits >> (32 + 11)) & 0xfffff);
       words[1] = value.nan_bits >> 11;
+      if (value.nan_sign)
+       words[0] |= 0x80000000;
     }
   else if (mpfr_zero_p (dbl))
     {
@@ -730,6 +758,8 @@ extract_to_extended (fpu_register &value
       words[0] = 0x7fff0000;
       words[1] = value.nan_bits >> 32;
       words[2] = value.nan_bits;
+      if (value.nan_sign)
+       words[0] |= 0x80000000;
     }
   else if (mpfr_zero_p (value.f))
     {
@@ -781,6 +811,8 @@ extract_to_packed (fpu_register &value,
       words[0] = 0x7fff0000;
       words[1] = value.nan_bits >> 32;
       words[2] = value.nan_bits;
+      if (value.nan_sign)
+       words[0] |= 0x80000000;
     }
   else if (mpfr_zero_p (value.f))
     {
@@ -1471,6 +1503,7 @@ fpuop_general (uae_u32 opcode, uae_u32 e
 
   mpfr_init2 (value.f, prec);
   value.nan_bits = DEFAULT_NAN_BITS;
+  value.nan_sign = 0;
 
   mpfr_clear_flags ();
   set_format (prec);
@@ -1486,7 +1519,7 @@ fpuop_general (uae_u32 opcode, uae_u32 e
        t = mpfr_set (value.f, fpu_constant_rom[rom_index - 32], rnd);
       else
        mpfr_set_zero (value.f, 0);
-      set_fp_register (reg, value.f, value.nan_bits, t, rnd, true);
+      set_fp_register (reg, value, t, rnd, true);
     }
   else if (extra & 0x40)
     {
@@ -1580,7 +1613,7 @@ fpuop_general (uae_u32 opcode, uae_u32 e
          t = mpfr_sub (value2, fpu.registers[reg].f, value.f, rnd);
          break;
        }
-      set_fp_register (reg, value2, value.nan_bits, t, rnd, true);
+      set_fp_register (reg, value2, t, rnd, true);
     }
   else if ((extra & 0x30) == 0x30)
     {
@@ -1605,8 +1638,8 @@ fpuop_general (uae_u32 opcode, uae_u32 e
            cur_exceptions |= FPSR_EXCEPTION_OPERR;
          t = mpfr_sin_cos (value.f, value2, value.f, rnd);
          if (reg2 != reg)
-           set_fp_register (reg2, value2, value.nan_bits, t >> 2, rnd, false);
-         set_fp_register (reg, value.f, value.nan_bits, t & 3, rnd, true);
+           set_fp_register (reg2, value2, t >> 2, rnd, false);
+         set_fp_register (reg, value, t & 3, rnd, true);
        }
       else if ((extra & 15) == 8)
        // FCMP
@@ -1727,12 +1760,14 @@ fpuop_general (uae_u32 opcode, uae_u32 e
          break;
        case 24: // FABS
          t = mpfr_abs (value.f, value.f, rnd);
+         value.nan_sign = 0;
          break;
        case 25: // FCOSH
          t = mpfr_cosh (value.f, value.f, rnd);
          break;
        case 26: // FNEG
          t = mpfr_neg (value.f, value.f, rnd);
+         value.nan_sign = !value.nan_sign;
          break;
        case 28: // FACOS
          if (mpfr_cmpabs (value.f, FPU_CONSTANT_ONE) > 0)
@@ -1820,7 +1855,7 @@ fpuop_general (uae_u32 opcode, uae_u32 e
          t = mpfr_sub (value.f, fpu.registers[reg].f, value.f, rnd);
          break;
        }
-      set_fp_register (reg, value.f, value.nan_bits, t, rnd, true);
+      set_fp_register (reg, value, t, rnd, true);
     }
   update_exceptions ();
   ret = true;
Index: aranym-1.0.2/src/uae_cpu/fpu/types.h
===================================================================
--- aranym-1.0.2.orig/src/uae_cpu/fpu/types.h
+++ aranym-1.0.2/src/uae_cpu/fpu/types.h
@@ -166,6 +166,7 @@ typedef uae_f32                     fpu_single;
 struct fpu_register {
   mpfr_t f;
   uae_u64 nan_bits;
+  int nan_sign;
   operator long double ();
 };
 
++++++ ncr5380-mode-reg.patch ++++++
>From 7af1cbfc5257d2c524ffe009790045d687c69fa5 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <[email protected]>
Date: Mon, 21 Mar 2016 00:51:59 +0100
Subject: [PATCH] emulate NCR5380 MODE register

---
 ChangeLog             | 4 ++++
 src/include/ncr5380.h | 1 +
 src/ncr5380.cpp       | 4 +++-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/include/ncr5380.h b/src/include/ncr5380.h
index f8fc43b..55bb84d 100644
--- a/src/include/ncr5380.h
+++ b/src/include/ncr5380.h
@@ -33,6 +33,7 @@ class NCR5380 {
                uae_u8  hd_count;
 
                uae_u8  hd_initiator;
+               uae_u8  hd_mode;
 
        public:
                NCR5380(void);
diff --git a/src/ncr5380.cpp b/src/ncr5380.cpp
index 75d8f50..b3177f1 100644
--- a/src/ncr5380.cpp
+++ b/src/ncr5380.cpp
@@ -120,7 +120,7 @@ NCR5380::~NCR5380(void)
 
 void NCR5380::reset(void)
 {
-       hd_count = hd_status = hd_initiator = 0;
+       hd_count = hd_status = hd_initiator = hd_mode = 0;
 
        D(bug("ncr5380: reset"));
 }
@@ -140,6 +140,7 @@ uae_u8 NCR5380::ReadData(uae_u16 control)
                        data = hd_initiator = ICR_ARBITRATION_PROGRESS;
                        break;
                case MODE_REG:
+                       data = hd_mode;
                        break;
                case TARGET_COMMAND_REG:
                        break;
@@ -172,6 +173,7 @@ void NCR5380::WriteData(uae_u16 control, uae_u8 data)
                        hd_initiator = data;
                        break;
                case MODE_REG:
+                       hd_mode = data;
                        break;
                case TARGET_COMMAND_REG:
                        break;
-- 
2.7.4


Reply via email to