summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2010-05-05 12:01:14 +0000
committerkettenis <kettenis@openbsd.org>2010-05-05 12:01:14 +0000
commit0eb761ddf8014aba46c4edb3968babf6e74958d7 (patch)
treea1170617c89151354aa5d2e0ca69dce4b756bfe8
parentUnconditionally set HAVE_ISINF and HAVE_ISNAN in the generated (diff)
downloadwireguard-openbsd-0eb761ddf8014aba46c4edb3968babf6e74958d7.tar.xz
wireguard-openbsd-0eb761ddf8014aba46c4edb3968babf6e74958d7.zip
Tweak inline asm to prevent gcc4 from optimizing away crucial bits of it.
ok miod@
-rw-r--r--lib/libm/arch/hppa/s_ceil.c6
-rw-r--r--lib/libm/arch/hppa/s_ceilf.c6
-rw-r--r--lib/libm/arch/hppa/s_floor.c6
-rw-r--r--lib/libm/arch/hppa/s_floorf.c6
-rw-r--r--lib/libm/arch/hppa/s_round.c6
-rw-r--r--lib/libm/arch/hppa/s_roundf.c6
-rw-r--r--lib/libm/arch/hppa/s_trunc.c6
-rw-r--r--lib/libm/arch/hppa/s_truncf.c6
8 files changed, 24 insertions, 24 deletions
diff --git a/lib/libm/arch/hppa/s_ceil.c b/lib/libm/arch/hppa/s_ceil.c
index 692300f40f8..e3dc53ff180 100644
--- a/lib/libm/arch/hppa/s_ceil.c
+++ b/lib/libm/arch/hppa/s_ceil.c
@@ -11,13 +11,13 @@ ceil(double x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) |
((u_int64_t)FP_RP << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_ceilf.c b/lib/libm/arch/hppa/s_ceilf.c
index dcb1e1e0b5d..f72a14f4ec1 100644
--- a/lib/libm/arch/hppa/s_ceilf.c
+++ b/lib/libm/arch/hppa/s_ceilf.c
@@ -11,13 +11,13 @@ ceilf(float x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) |
((u_int64_t)FP_RP << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_floor.c b/lib/libm/arch/hppa/s_floor.c
index cea213d8fcb..6a84aad4b2a 100644
--- a/lib/libm/arch/hppa/s_floor.c
+++ b/lib/libm/arch/hppa/s_floor.c
@@ -11,12 +11,12 @@ floor(double x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = ofpsr | ((u_int64_t)FP_RM << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_floorf.c b/lib/libm/arch/hppa/s_floorf.c
index e503ea32210..d3e19684960 100644
--- a/lib/libm/arch/hppa/s_floorf.c
+++ b/lib/libm/arch/hppa/s_floorf.c
@@ -11,12 +11,12 @@ floorf(float x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = ofpsr | ((u_int64_t)FP_RM << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_round.c b/lib/libm/arch/hppa/s_round.c
index 80421933c17..a9cda68c22a 100644
--- a/lib/libm/arch/hppa/s_round.c
+++ b/lib/libm/arch/hppa/s_round.c
@@ -11,13 +11,13 @@ round(double x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) |
((u_int64_t)FP_RN << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_roundf.c b/lib/libm/arch/hppa/s_roundf.c
index 91e993d7e44..c7ed8e4c5b6 100644
--- a/lib/libm/arch/hppa/s_roundf.c
+++ b/lib/libm/arch/hppa/s_roundf.c
@@ -11,13 +11,13 @@ roundf(float x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) |
((u_int64_t)FP_RN << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_trunc.c b/lib/libm/arch/hppa/s_trunc.c
index 9d54ec23845..22e2b76349e 100644
--- a/lib/libm/arch/hppa/s_trunc.c
+++ b/lib/libm/arch/hppa/s_trunc.c
@@ -11,13 +11,13 @@ trunc(double x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) |
((u_int64_t)FP_RZ << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,dbl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}
diff --git a/lib/libm/arch/hppa/s_truncf.c b/lib/libm/arch/hppa/s_truncf.c
index 5bc42b7255d..bc034b4ca79 100644
--- a/lib/libm/arch/hppa/s_truncf.c
+++ b/lib/libm/arch/hppa/s_truncf.c
@@ -11,13 +11,13 @@ truncf(float x)
{
u_int64_t ofpsr, fpsr;
- __asm__ __volatile__("fstds %%fr0,0(%1)" : "=m" (ofpsr) : "r" (&ofpsr));
+ __asm__ __volatile__("fstds %%fr0,0(%0)" :: "r" (&ofpsr) : "memory");
fpsr = (ofpsr & ~((u_int64_t)FP_RM << (9 + 32))) |
((u_int64_t)FP_RZ << (9 + 32));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&fpsr) : "memory");
__asm__ __volatile__("frnd,sgl %0,%0" : "+f" (x));
- __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr));
+ __asm__ __volatile__("fldds 0(%0), %%fr0" :: "r" (&ofpsr) : "memory");
return (x);
}