diff options
author | mortimer <mortimer@cvs.openbsd.org> | 2018-07-03 22:43:35 +0000 |
---|---|---|
committer | mortimer <mortimer@cvs.openbsd.org> | 2018-07-03 22:43:35 +0000 |
commit | 8e58489b257b1aa53deea6bd33d90e6de1e2ab94 (patch) | |
tree | 94b4dbbda5a790cea831ab3057988e9a68655302 | |
parent | 7172f60910c3353e8a649d297b80d3bcab9cabfe (diff) |
Add retguard macros to libm assembly.
ok deraadt
43 files changed, 135 insertions, 43 deletions
diff --git a/lib/libm/arch/amd64/e_acos.S b/lib/libm/arch/amd64/e_acos.S index 01231e67c50..1a6b2cb0f61 100644 --- a/lib/libm/arch/amd64/e_acos.S +++ b/lib/libm/arch/amd64/e_acos.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_acos.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_acos.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -10,6 +10,7 @@ /* acos = atan (sqrt(1 - x^2) / x) */ ENTRY(acos) + RETGUARD_SETUP(acos, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE /* x */ fld %st(0) @@ -20,5 +21,6 @@ ENTRY(acos) fxch %st(1) fpatan XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(acos, r11) ret END(acos) diff --git a/lib/libm/arch/amd64/e_asin.S b/lib/libm/arch/amd64/e_asin.S index 44eb4b87256..c132ea34d28 100644 --- a/lib/libm/arch/amd64/e_asin.S +++ b/lib/libm/arch/amd64/e_asin.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_asin.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_asin.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -10,6 +10,7 @@ /* asin = atan (x / sqrt(1 - x^2)) */ ENTRY(asin) + RETGUARD_SETUP(asin, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE /* x */ fld %st(0) @@ -19,5 +20,6 @@ ENTRY(asin) fsqrt /* sqrt (1 - x^2) */ fpatan XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(asin, r11) ret END_STD(asin) diff --git a/lib/libm/arch/amd64/e_atan2.S b/lib/libm/arch/amd64/e_atan2.S index 6fbcc6bcd4f..ddaec850886 100644 --- a/lib/libm/arch/amd64/e_atan2.S +++ b/lib/libm/arch/amd64/e_atan2.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_atan2.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_atan2.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(atan2) + RETGUARD_SETUP(atan2, r11) XMM_TWO_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fldl ARG_DOUBLE_TWO fpatan XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(atan2, r11) ret END_STD(atan2) diff --git a/lib/libm/arch/amd64/e_atan2f.S b/lib/libm/arch/amd64/e_atan2f.S index af9f9bb26f6..a80234a1c76 100644 --- a/lib/libm/arch/amd64/e_atan2f.S +++ b/lib/libm/arch/amd64/e_atan2f.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_atan2f.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_atan2f.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(atan2f) + RETGUARD_SETUP(atan2f, r11) XMM_TWO_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE flds ARG_FLOAT_TWO fpatan XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(atan2f, r11) ret END_STD(atan2f) diff --git a/lib/libm/arch/amd64/e_exp.S b/lib/libm/arch/amd64/e_exp.S index 61df362b078..f67850cf05f 100644 --- a/lib/libm/arch/amd64/e_exp.S +++ b/lib/libm/arch/amd64/e_exp.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_exp.S,v 1.6 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_exp.S,v 1.7 2018/07/03 22:43:34 mortimer Exp $ */ /* $NetBSD: e_exp.S,v 1.12 2002/02/27 16:32:46 christos Exp $ */ /* @@ -42,6 +42,7 @@ /* e^x = 2^(x * log2(e)) */ ENTRY(exp) + RETGUARD_SETUP(exp, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE /* * If x is +-Inf, then the subtraction would give Inf-Inf = NaN. @@ -82,6 +83,7 @@ ENTRY(exp) fldcw -8(%rsp) 1: XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(exp, r11) ret x_Inf_or_NaN: @@ -94,9 +96,11 @@ x_Inf_or_NaN: cmpl $0,-8(%rsp) jne x_not_minus_Inf xorpd %xmm0,%xmm0 + RETGUARD_CHECK(exp, r11) ret x_not_minus_Inf: movsd ARG_DOUBLE_ONE,%xmm0 + RETGUARD_CHECK(exp, r11) ret END_STD(exp) diff --git a/lib/libm/arch/amd64/e_fmod.S b/lib/libm/arch/amd64/e_fmod.S index 62777f170ac..dc97939d2a1 100644 --- a/lib/libm/arch/amd64/e_fmod.S +++ b/lib/libm/arch/amd64/e_fmod.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_fmod.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_fmod.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -10,6 +10,7 @@ ENTRY(fmod) + RETGUARD_SETUP(fmod, r11) XMM_TWO_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_TWO fldl ARG_DOUBLE_ONE @@ -19,5 +20,6 @@ ENTRY(fmod) jc 1b fstp %st(1) XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(fmod, r11) ret END(fmod) diff --git a/lib/libm/arch/amd64/e_log.S b/lib/libm/arch/amd64/e_log.S index 16c7a77598e..ad9bedbfcc8 100644 --- a/lib/libm/arch/amd64/e_log.S +++ b/lib/libm/arch/amd64/e_log.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_log.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_log.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(log) + RETGUARD_SETUP(log, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldln2 fldl ARG_DOUBLE_ONE fyl2x XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(log, r11) ret END_STD(log) diff --git a/lib/libm/arch/amd64/e_log10.S b/lib/libm/arch/amd64/e_log10.S index 6774d928a65..6d67ac06b99 100644 --- a/lib/libm/arch/amd64/e_log10.S +++ b/lib/libm/arch/amd64/e_log10.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_log10.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_log10.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(log10) + RETGUARD_SETUP(log10, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldlg2 fldl ARG_DOUBLE_ONE fyl2x XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(log10, r11) ret END(log10) diff --git a/lib/libm/arch/amd64/e_remainder.S b/lib/libm/arch/amd64/e_remainder.S index 31290dfd9c6..5e3b5fa014a 100644 --- a/lib/libm/arch/amd64/e_remainder.S +++ b/lib/libm/arch/amd64/e_remainder.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_remainder.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_remainder.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,6 +9,7 @@ #include "abi.h" ENTRY(remainder) + RETGUARD_SETUP(remainder, r11) XMM_TWO_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_TWO fldl ARG_DOUBLE_ONE @@ -18,5 +19,6 @@ ENTRY(remainder) jc 1b fstp %st(1) XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(remainder, r11) ret END_STD(remainder) diff --git a/lib/libm/arch/amd64/e_remainderf.S b/lib/libm/arch/amd64/e_remainderf.S index 39bd10f0d33..2c1f42ba0df 100644 --- a/lib/libm/arch/amd64/e_remainderf.S +++ b/lib/libm/arch/amd64/e_remainderf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_remainderf.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_remainderf.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,6 +9,7 @@ #include "abi.h" ENTRY(remainderf) + RETGUARD_SETUP(remainderf, r11) XMM_TWO_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_TWO flds ARG_FLOAT_ONE @@ -18,5 +19,6 @@ ENTRY(remainderf) jc 1b fstp %st(1) XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(remainderf, r11) ret END_STD(remainderf) diff --git a/lib/libm/arch/amd64/e_scalb.S b/lib/libm/arch/amd64/e_scalb.S index 0b509bd8d90..a43318e7e54 100644 --- a/lib/libm/arch/amd64/e_scalb.S +++ b/lib/libm/arch/amd64/e_scalb.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_scalb.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_scalb.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,11 +9,13 @@ #include "abi.h" ENTRY(scalb) + RETGUARD_SETUP(scalb, r11) XMM_TWO_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_TWO fldl ARG_DOUBLE_ONE fscale fstp %st(1) /* bug fix for fp stack overflow */ XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(scalb, r11) ret END_NONSTD(scalb) diff --git a/lib/libm/arch/amd64/e_sqrt.S b/lib/libm/arch/amd64/e_sqrt.S index 07d121a531f..dd46e95132e 100644 --- a/lib/libm/arch/amd64/e_sqrt.S +++ b/lib/libm/arch/amd64/e_sqrt.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_sqrt.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_sqrt.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -8,6 +8,8 @@ #include "abi.h" ENTRY(sqrt) + RETGUARD_SETUP(sqrt, r11) sqrtsd %xmm0,%xmm0 + RETGUARD_CHECK(sqrt, r11) ret END_STD(sqrt) diff --git a/lib/libm/arch/amd64/e_sqrtf.S b/lib/libm/arch/amd64/e_sqrtf.S index 1a8a5616127..17ef76b1751 100644 --- a/lib/libm/arch/amd64/e_sqrtf.S +++ b/lib/libm/arch/amd64/e_sqrtf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_sqrtf.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_sqrtf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -8,6 +8,8 @@ #include "abi.h" ENTRY(sqrtf) + RETGUARD_SETUP(sqrtf, r11) sqrtss %xmm0,%xmm0 + RETGUARD_CHECK(sqrtf, r11) ret END_STD(sqrtf) diff --git a/lib/libm/arch/amd64/e_sqrtl.S b/lib/libm/arch/amd64/e_sqrtl.S index 71ab6bdd5f2..bbe998846d9 100644 --- a/lib/libm/arch/amd64/e_sqrtl.S +++ b/lib/libm/arch/amd64/e_sqrtl.S @@ -1,4 +1,4 @@ -/* $OpenBSD: e_sqrtl.S,v 1.2 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: e_sqrtl.S,v 1.3 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@netbsd.org>. * Public domain. @@ -8,7 +8,9 @@ #include "abi.h" ENTRY(sqrtl) + RETGUARD_SETUP(sqrtl, r11) fldt 8(%rsp) fsqrt + RETGUARD_CHECK(sqrtl, r11) ret END_STD(sqrtl) diff --git a/lib/libm/arch/amd64/s_atan.S b/lib/libm/arch/amd64/s_atan.S index 9c2ac3bbd2f..026d1ab398e 100644 --- a/lib/libm/arch/amd64/s_atan.S +++ b/lib/libm/arch/amd64/s_atan.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_atan.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_atan.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(atan) + RETGUARD_SETUP(atan, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fld1 fpatan XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(atan, r11) ret END(atan) diff --git a/lib/libm/arch/amd64/s_atanf.S b/lib/libm/arch/amd64/s_atanf.S index d36843d41dd..b2705fb2010 100644 --- a/lib/libm/arch/amd64/s_atanf.S +++ b/lib/libm/arch/amd64/s_atanf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_atanf.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_atanf.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(atanf) + RETGUARD_SETUP(atanf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fld1 fpatan XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(atanf, r11) ret END_STD(atanf) diff --git a/lib/libm/arch/amd64/s_ceil.S b/lib/libm/arch/amd64/s_ceil.S index 3cb26b6cde9..88dd13bc416 100644 --- a/lib/libm/arch/amd64/s_ceil.S +++ b/lib/libm/arch/amd64/s_ceil.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_ceil.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_ceil.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,6 +9,7 @@ #include "abi.h" ENTRY(ceil) + RETGUARD_SETUP(ceil, r11) fstcw -12(%rsp) movw -12(%rsp),%dx orw $0x0800,%dx @@ -21,5 +22,6 @@ ENTRY(ceil) fldcw -12(%rsp) fstpl -8(%rsp) movsd -8(%rsp),%xmm0 + RETGUARD_CHECK(ceil, r11) ret END_STD(ceil) diff --git a/lib/libm/arch/amd64/s_ceilf.S b/lib/libm/arch/amd64/s_ceilf.S index 12f7f2cf37e..110616cc8bf 100644 --- a/lib/libm/arch/amd64/s_ceilf.S +++ b/lib/libm/arch/amd64/s_ceilf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_ceilf.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_ceilf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -7,6 +7,7 @@ #include <machine/asm.h> ENTRY(ceilf) + RETGUARD_SETUP(ceilf, r11) fstcw -8(%rsp) movw -8(%rsp),%dx orw $0x0800,%dx @@ -19,5 +20,6 @@ ENTRY(ceilf) fldcw -8(%rsp) fstps -4(%rsp) movss -4(%rsp),%xmm0 + RETGUARD_CHECK(ceilf, r11) ret END(ceilf) diff --git a/lib/libm/arch/amd64/s_copysign.S b/lib/libm/arch/amd64/s_copysign.S index 480f498811d..b4e71096be3 100644 --- a/lib/libm/arch/amd64/s_copysign.S +++ b/lib/libm/arch/amd64/s_copysign.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_copysign.S,v 1.7 2018/02/05 04:01:49 deraadt Exp $ */ +/* $OpenBSD: s_copysign.S,v 1.8 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -15,10 +15,12 @@ .quad 0x7fffffffffffffff ENTRY(copysign) + RETGUARD_SETUP(copysign, r11) movq .Lpos(%rip),%xmm2 movq .Lneg(%rip),%xmm3 pand %xmm2,%xmm1 pand %xmm3,%xmm0 por %xmm1,%xmm0 + RETGUARD_CHECK(copysign, r11) ret END_STD(copysign) diff --git a/lib/libm/arch/amd64/s_copysignf.S b/lib/libm/arch/amd64/s_copysignf.S index da8b2301033..58c63a9b4f8 100644 --- a/lib/libm/arch/amd64/s_copysignf.S +++ b/lib/libm/arch/amd64/s_copysignf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_copysignf.S,v 1.7 2018/02/05 04:01:49 deraadt Exp $ */ +/* $OpenBSD: s_copysignf.S,v 1.8 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -15,10 +15,12 @@ .long 0x80000000 ENTRY(copysignf) + RETGUARD_SETUP(copysignf, r11) movss .Lpos(%rip),%xmm2 movss .Lneg(%rip),%xmm3 pand %xmm2,%xmm1 pand %xmm3,%xmm0 por %xmm1,%xmm0 + RETGUARD_CHECK(copysignf, r11) ret END_STD(copysignf) diff --git a/lib/libm/arch/amd64/s_cos.S b/lib/libm/arch/amd64/s_cos.S index cb382696914..0b85c58bbe9 100644 --- a/lib/libm/arch/amd64/s_cos.S +++ b/lib/libm/arch/amd64/s_cos.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_cos.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_cos.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,6 +9,7 @@ #include "abi.h" ENTRY(cos) + RETGUARD_SETUP(cos, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fcos @@ -27,5 +28,6 @@ ENTRY(cos) fstp %st(1) fcos XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(cos, r11) ret END_STD(cos) diff --git a/lib/libm/arch/amd64/s_cosf.S b/lib/libm/arch/amd64/s_cosf.S index 15fe9afcf89..3e7539d829c 100644 --- a/lib/libm/arch/amd64/s_cosf.S +++ b/lib/libm/arch/amd64/s_cosf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_cosf.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_cosf.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -10,9 +10,11 @@ /* A float's domain isn't large enough to require argument reduction. */ ENTRY(cosf) + RETGUARD_SETUP(cosf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fcos XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(cosf, r11) ret END_STD(cosf) diff --git a/lib/libm/arch/amd64/s_floor.S b/lib/libm/arch/amd64/s_floor.S index adff8b4e7c8..65824176d21 100644 --- a/lib/libm/arch/amd64/s_floor.S +++ b/lib/libm/arch/amd64/s_floor.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_floor.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_floor.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -8,6 +8,7 @@ #include "abi.h" ENTRY(floor) + RETGUARD_SETUP(floor, r11) movsd %xmm0, -8(%rsp) fstcw -12(%rsp) movw -12(%rsp),%dx @@ -20,5 +21,6 @@ ENTRY(floor) fldcw -12(%rsp) fstpl -8(%rsp) movsd -8(%rsp),%xmm0 + RETGUARD_CHECK(floor, r11) ret END_STD(floor) diff --git a/lib/libm/arch/amd64/s_floorf.S b/lib/libm/arch/amd64/s_floorf.S index 4c161831d1b..dd17b6f18ab 100644 --- a/lib/libm/arch/amd64/s_floorf.S +++ b/lib/libm/arch/amd64/s_floorf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_floorf.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_floorf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -8,6 +8,7 @@ #include "abi.h" ENTRY(floorf) + RETGUARD_SETUP(floorf, r11) movss %xmm0, -4(%rsp) fstcw -8(%rsp) movw -8(%rsp),%dx @@ -20,5 +21,6 @@ ENTRY(floorf) fldcw -8(%rsp) fstps -4(%rsp) movss -4(%rsp),%xmm0 + RETGUARD_CHECK(floorf, r11) ret END_STD(floorf) diff --git a/lib/libm/arch/amd64/s_ilogb.S b/lib/libm/arch/amd64/s_ilogb.S index e516d1e197d..6ef0d469575 100644 --- a/lib/libm/arch/amd64/s_ilogb.S +++ b/lib/libm/arch/amd64/s_ilogb.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_ilogb.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_ilogb.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -8,11 +8,13 @@ #include "abi.h" ENTRY(ilogb) + RETGUARD_SETUP(ilogb, r11) movsd %xmm0,-8(%rsp) fldl -8(%rsp) fxtract fstp %st fistpl -8(%rsp) movl -8(%rsp),%eax + RETGUARD_CHECK(ilogb, r11) ret END_STD(ilogb) diff --git a/lib/libm/arch/amd64/s_ilogbf.S b/lib/libm/arch/amd64/s_ilogbf.S index b943f850ecd..29bf3af13bc 100644 --- a/lib/libm/arch/amd64/s_ilogbf.S +++ b/lib/libm/arch/amd64/s_ilogbf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_ilogbf.S,v 1.4 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_ilogbf.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -8,11 +8,13 @@ #include "abi.h" ENTRY(ilogbf) + RETGUARD_SETUP(ilogbf, r11) movss %xmm0,-4(%rsp) flds -4(%rsp) fxtract fstp %st fistpl -4(%rsp) movl -4(%rsp),%eax + RETGUARD_CHECK(ilogbf, r11) ret END_STD(ilogbf) diff --git a/lib/libm/arch/amd64/s_llrint.S b/lib/libm/arch/amd64/s_llrint.S index aea32600ffe..4c974b8c79e 100644 --- a/lib/libm/arch/amd64/s_llrint.S +++ b/lib/libm/arch/amd64/s_llrint.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_llrint.S,v 1.2 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_llrint.S,v 1.3 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by Martynas Venckus. Public domain @@ -7,6 +7,8 @@ #include <machine/asm.h> ENTRY(llrint) + RETGUARD_SETUP(llrint, r11) cvtsd2si %xmm0, %rax + RETGUARD_CHECK(llrint, r11) ret END(llrint) diff --git a/lib/libm/arch/amd64/s_llrintf.S b/lib/libm/arch/amd64/s_llrintf.S index a800178a532..02fec84bc99 100644 --- a/lib/libm/arch/amd64/s_llrintf.S +++ b/lib/libm/arch/amd64/s_llrintf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_llrintf.S,v 1.2 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_llrintf.S,v 1.3 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by Martynas Venckus. Public domain @@ -8,6 +8,8 @@ #include "abi.h" ENTRY(llrintf) + RETGUARD_SETUP(llrintf, r11) cvtss2si %xmm0, %rax + RETGUARD_CHECK(llrintf, r11) ret END_STD(llrintf) diff --git a/lib/libm/arch/amd64/s_log1p.S b/lib/libm/arch/amd64/s_log1p.S index 4987ac8ff70..f3387463294 100644 --- a/lib/libm/arch/amd64/s_log1p.S +++ b/lib/libm/arch/amd64/s_log1p.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_log1p.S,v 1.5 2017/08/19 18:27:19 deraadt Exp $ */ +/* $OpenBSD: s_log1p.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -40,6 +40,7 @@ */ ENTRY(log1p) + RETGUARD_SETUP(log1p, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fabs @@ -62,6 +63,7 @@ use_fyl2x: faddp fyl2x XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(log1p, r11) ret .align 4,0xcc @@ -70,5 +72,6 @@ use_fyl2xp1: fldl ARG_DOUBLE_ONE fyl2xp1 XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(log1p, r11) ret END_STD(log1p) diff --git a/lib/libm/arch/amd64/s_log1pf.S b/lib/libm/arch/amd64/s_log1pf.S index 3749449e2d2..b8fa85705c2 100644 --- a/lib/libm/arch/amd64/s_log1pf.S +++ b/lib/libm/arch/amd64/s_log1pf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_log1pf.S,v 1.5 2017/08/19 18:27:19 deraadt Exp $ */ +/* $OpenBSD: s_log1pf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -40,6 +40,7 @@ */ ENTRY(log1pf) + RETGUARD_SETUP(log1pf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fabs @@ -62,6 +63,7 @@ use_fyl2x: faddp fyl2x XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(log1pf, r11) ret .align 4,0xcc @@ -70,5 +72,6 @@ use_fyl2xp1: flds ARG_FLOAT_ONE fyl2xp1 XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(log1pf, r11) ret END_STD(log1pf) diff --git a/lib/libm/arch/amd64/s_logb.S b/lib/libm/arch/amd64/s_logb.S index 0703a1278e2..747642f7a27 100644 --- a/lib/libm/arch/amd64/s_logb.S +++ b/lib/libm/arch/amd64/s_logb.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_logb.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_logb.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(logb) + RETGUARD_SETUP(logb, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fxtract fstp %st XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(logb, r11) ret END_STD(logb) diff --git a/lib/libm/arch/amd64/s_logbf.S b/lib/libm/arch/amd64/s_logbf.S index c1cd84b1c20..bb85c11f5ae 100644 --- a/lib/libm/arch/amd64/s_logbf.S +++ b/lib/libm/arch/amd64/s_logbf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_logbf.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_logbf.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,10 +9,12 @@ #include "abi.h" ENTRY(logbf) + RETGUARD_SETUP(logbf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fxtract fstp %st XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(logbf, r11) ret END_STD(logbf) diff --git a/lib/libm/arch/amd64/s_lrint.S b/lib/libm/arch/amd64/s_lrint.S index 662b2b5046a..b58b8953cd3 100644 --- a/lib/libm/arch/amd64/s_lrint.S +++ b/lib/libm/arch/amd64/s_lrint.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_lrint.S,v 1.2 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_lrint.S,v 1.3 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by Martynas Venckus. Public domain @@ -7,6 +7,8 @@ #include <machine/asm.h> ENTRY(lrint) + RETGUARD_SETUP(lrint, r11) cvtsd2si %xmm0, %rax + RETGUARD_CHECK(lrint, r11) ret END(lrint) diff --git a/lib/libm/arch/amd64/s_lrintf.S b/lib/libm/arch/amd64/s_lrintf.S index 3e84734d4a6..17c0b88c9f8 100644 --- a/lib/libm/arch/amd64/s_lrintf.S +++ b/lib/libm/arch/amd64/s_lrintf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_lrintf.S,v 1.2 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_lrintf.S,v 1.3 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by Martynas Venckus. Public domain @@ -7,6 +7,8 @@ #include <machine/asm.h> ENTRY(lrintf) + RETGUARD_SETUP(lrintf, r11) cvtss2si %xmm0, %rax + RETGUARD_CHECK(lrintf, r11) ret END(lrintf) diff --git a/lib/libm/arch/amd64/s_rint.S b/lib/libm/arch/amd64/s_rint.S index e1716eb52ff..9462e7be82c 100644 --- a/lib/libm/arch/amd64/s_rint.S +++ b/lib/libm/arch/amd64/s_rint.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_rint.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_rint.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,9 +9,11 @@ #include "abi.h" ENTRY(rint) + RETGUARD_SETUP(rint, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE frndint XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(rint, r11) ret END_STD(rint) diff --git a/lib/libm/arch/amd64/s_rintf.S b/lib/libm/arch/amd64/s_rintf.S index 53a40725bcc..8fd10cd7947 100644 --- a/lib/libm/arch/amd64/s_rintf.S +++ b/lib/libm/arch/amd64/s_rintf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_rintf.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_rintf.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,9 +9,11 @@ #include "abi.h" ENTRY(rintf) + RETGUARD_SETUP(rintf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE frndint XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(rintf, r11) ret END_STD(rintf) diff --git a/lib/libm/arch/amd64/s_scalbnf.S b/lib/libm/arch/amd64/s_scalbnf.S index 1faecbec78a..4c7b131d240 100644 --- a/lib/libm/arch/amd64/s_scalbnf.S +++ b/lib/libm/arch/amd64/s_scalbnf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_scalbnf.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_scalbnf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -12,6 +12,7 @@ ldexpf = scalbnf ENTRY(scalbnf) + RETGUARD_SETUP(scalbnf, r11) movss %xmm0,-8(%rsp) movl %edi,-4(%rsp) fildl -4(%rsp) @@ -20,5 +21,6 @@ ENTRY(scalbnf) fstp %st(1) /* bug fix for fp stack overflow */ fstps -8(%rsp) movss -8(%rsp),%xmm0 + RETGUARD_CHECK(scalbnf, r11) ret END_STD(scalbnf) diff --git a/lib/libm/arch/amd64/s_significand.S b/lib/libm/arch/amd64/s_significand.S index d49a21e5496..78f221fda1a 100644 --- a/lib/libm/arch/amd64/s_significand.S +++ b/lib/libm/arch/amd64/s_significand.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_significand.S,v 1.4 2018/03/12 04:27:48 guenther Exp $ */ +/* $OpenBSD: s_significand.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,11 +9,13 @@ #include "abi.h" ENTRY(significand) + RETGUARD_SETUP(significand, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fxtract fstp %st(1) XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(significand, r11) ret END(significand) .weak significand diff --git a/lib/libm/arch/amd64/s_significandf.S b/lib/libm/arch/amd64/s_significandf.S index c16cb531568..c80dd2e2588 100644 --- a/lib/libm/arch/amd64/s_significandf.S +++ b/lib/libm/arch/amd64/s_significandf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_significandf.S,v 1.4 2018/03/12 04:27:48 guenther Exp $ */ +/* $OpenBSD: s_significandf.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,11 +9,13 @@ #include "abi.h" ENTRY(significandf) + RETGUARD_SETUP(significandf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fxtract fstp %st(1) XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(significandf, r11) ret END(significandf) .weak significandf diff --git a/lib/libm/arch/amd64/s_sin.S b/lib/libm/arch/amd64/s_sin.S index 6f21144001e..ade5a463516 100644 --- a/lib/libm/arch/amd64/s_sin.S +++ b/lib/libm/arch/amd64/s_sin.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_sin.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_sin.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,6 +9,7 @@ #include "abi.h" ENTRY(sin) + RETGUARD_SETUP(sin, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fsin @@ -16,6 +17,7 @@ ENTRY(sin) andw $0x400,%ax jnz 1f XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(sin, r11) ret 1: fldpi fadd %st(0) @@ -27,5 +29,6 @@ ENTRY(sin) fstp %st(1) fsin XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(sin, r11) ret END_STD(sin) diff --git a/lib/libm/arch/amd64/s_sinf.S b/lib/libm/arch/amd64/s_sinf.S index d145f8c39db..91d3b9d27f7 100644 --- a/lib/libm/arch/amd64/s_sinf.S +++ b/lib/libm/arch/amd64/s_sinf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_sinf.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_sinf.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -10,9 +10,11 @@ /* A float's domain isn't large enough to require argument reduction. */ ENTRY(sinf) + RETGUARD_SETUP(sinf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fsin XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(sinf, r11) ret END_STD(sinf) diff --git a/lib/libm/arch/amd64/s_tan.S b/lib/libm/arch/amd64/s_tan.S index 0e891fe2ee9..917681b3ec2 100644 --- a/lib/libm/arch/amd64/s_tan.S +++ b/lib/libm/arch/amd64/s_tan.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_tan.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_tan.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -9,6 +9,7 @@ #include "abi.h" ENTRY(tan) + RETGUARD_SETUP(tan, r11) XMM_ONE_ARG_DOUBLE_PROLOGUE fldl ARG_DOUBLE_ONE fptan @@ -17,6 +18,7 @@ ENTRY(tan) jnz 1f fstp %st(0) XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(tan, r11) ret 1: fldpi fadd %st(0) @@ -29,5 +31,6 @@ ENTRY(tan) fptan fstp %st(0) XMM_DOUBLE_EPILOGUE + RETGUARD_CHECK(tan, r11) ret END(tan) diff --git a/lib/libm/arch/amd64/s_tanf.S b/lib/libm/arch/amd64/s_tanf.S index 94b7a6d6028..f1f7c8bbc75 100644 --- a/lib/libm/arch/amd64/s_tanf.S +++ b/lib/libm/arch/amd64/s_tanf.S @@ -1,4 +1,4 @@ -/* $OpenBSD: s_tanf.S,v 1.3 2016/09/12 19:47:01 guenther Exp $ */ +/* $OpenBSD: s_tanf.S,v 1.4 2018/07/03 22:43:34 mortimer Exp $ */ /* * Written by J.T. Conklin <jtc@NetBSD.org>. * Public domain. @@ -10,10 +10,12 @@ /* A float's domain isn't large enough to require argument reduction. */ ENTRY(tanf) + RETGUARD_SETUP(tanf, r11) XMM_ONE_ARG_FLOAT_PROLOGUE flds ARG_FLOAT_ONE fptan fstp %st(0) XMM_FLOAT_EPILOGUE + RETGUARD_CHECK(tanf, r11) ret END(tanf) |