From ab94299db01fe3b8f8762221e71f1f55bacc8fa1 Mon Sep 17 00:00:00 2001 From: riastradh Date: Sun, 25 Aug 2019 18:59:52 +0000 Subject: [PATCH] Fix feraiseexcept. - Don't touch the trap flags (though on all ARMv8 I know they have no effect anyway). - Don't clear any existing raised exception flags; just add to them. XXX atf test XXX pullup-9 --- lib/libm/arch/aarch64/fenv.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/libm/arch/aarch64/fenv.c b/lib/libm/arch/aarch64/fenv.c index a1a7b9509865..697c8221a65a 100644 --- a/lib/libm/arch/aarch64/fenv.c +++ b/lib/libm/arch/aarch64/fenv.c @@ -1,4 +1,4 @@ -/* $NetBSD: fenv.c,v 1.5 2019/08/25 18:31:30 riastradh Exp $ */ +/* $NetBSD: fenv.c,v 1.6 2019/08/25 18:59:52 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: fenv.c,v 1.5 2019/08/25 18:31:30 riastradh Exp $"); +__RCSID("$NetBSD: fenv.c,v 1.6 2019/08/25 18:59:52 riastradh Exp $"); #include "namespace.h" @@ -107,11 +107,9 @@ feraiseexcept(int excepts) _DIAGASSERT((except & ~FE_ALL_EXCEPT) == 0); #endif unsigned int fpsr = reg_fpsr_read(); - fpsr = (fpsr & ~FPSR_CSUM) | __SHIFTIN(excepts, FPSR_CSUM); + excepts &= FE_ALL_EXCEPT; /* paranoia */ + fpsr |= __SHIFTIN(excepts, FPSR_CSUM); reg_fpsr_write(fpsr); - unsigned int fpcr = reg_fpcr_read(); - fpcr = (fpcr & ~FPCR_ESUM) | __SHIFTIN(excepts, FPCR_ESUM); - reg_fpcr_write(fpcr); return 0; }