summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fpu/softfloat.c19
-rw-r--r--tests/Makefile.include2
-rw-r--r--tests/acceptance/boot_linux_console.py11
-rw-r--r--tests/qemu-iotests/group2
4 files changed, 27 insertions, 7 deletions
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 0638c9f4e0..301ce3b537 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1920,13 +1920,30 @@ float16 float32_to_float16(float32 a, bool ieee, float_status *s)
return float16a_round_pack_canonical(pr, s, fmt16);
}
-float64 float32_to_float64(float32 a, float_status *s)
+static float64 QEMU_SOFTFLOAT_ATTR
+soft_float32_to_float64(float32 a, float_status *s)
{
FloatParts p = float32_unpack_canonical(a, s);
FloatParts pr = float_to_float(p, &float64_params, s);
return float64_round_pack_canonical(pr, s);
}
+float64 float32_to_float64(float32 a, float_status *s)
+{
+ if (likely(float32_is_normal(a))) {
+ /* Widening conversion can never produce inexact results. */
+ union_float32 uf;
+ union_float64 ud;
+ uf.s = a;
+ ud.h = uf.h;
+ return ud.s;
+ } else if (float32_is_zero(a)) {
+ return float64_set_sign(float64_zero, float32_is_neg(a));
+ } else {
+ return soft_float32_to_float64(a, s);
+ }
+}
+
float16 float64_to_float16(float64 a, bool ieee, float_status *s)
{
const FloatFmt *fmt16 = ieee ? &float16_params : &float16_params_ahp;
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 728d802dbd..56f73b46e2 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -140,7 +140,7 @@ check-unit-y += tests/test-base64$(EXESUF)
check-unit-$(call land,$(CONFIG_BLOCK),$(if $(CONFIG_NETTLE),y,$(CONFIG_GCRYPT))) += tests/test-crypto-pbkdf$(EXESUF)
check-unit-$(CONFIG_BLOCK) += tests/test-crypto-ivgen$(EXESUF)
check-unit-$(CONFIG_BLOCK) += tests/test-crypto-afsplit$(EXESUF)
-check-unit-$(if $(CONFIG_BLOCK),$(CONFIG_QEMU_PRIVATE_XTS)) += tests/test-crypto-xts$(EXESUF)
+check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_QEMU_PRIVATE_XTS)) += tests/test-crypto-xts$(EXESUF)
check-unit-$(CONFIG_BLOCK) += tests/test-crypto-block$(EXESUF)
check-unit-y += tests/test-logging$(EXESUF)
check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_REPLICATION)) += tests/test-replication$(EXESUF)
diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
index 4e9ac0ecc3..7e41cebd47 100644
--- a/tests/acceptance/boot_linux_console.py
+++ b/tests/acceptance/boot_linux_console.py
@@ -480,11 +480,14 @@ class BootLinuxConsole(Test):
:avocado: tags=machine:q800
"""
deb_url = ('http://ftp.ports.debian.org/debian-ports/pool-m68k/main'
- '/l/linux/kernel-image-5.2.0-2-m68k-di_5.2.9-2_m68k.udeb')
- deb_hash = '0797e05129595f22f3c0142db5e199769a723bf9'
- deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+ '/l/linux/kernel-image-5.3.0-1-m68k-di_5.3.7-1_m68k.udeb')
+ deb_hash = '044954bb9be4160a3ce81f8bc1b5e856b75cccd1'
+ try:
+ deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+ except OSError as exp:
+ self.cancel(exp)
kernel_path = self.extract_from_deb(deb_path,
- '/boot/vmlinux-5.2.0-2-m68k')
+ '/boot/vmlinux-5.3.0-1-m68k')
self.vm.set_machine('q800')
self.vm.set_console()
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 28871604cd..095ed1b880 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -151,7 +151,7 @@
127 rw backing quick
128 rw quick
129 rw quick
-130 rw auto quick
+130 rw quick
131 rw quick
132 rw quick
133 auto quick