git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
arch
/
arm
/
vfp
/
vfpdouble.c
diff --git
a/arch/arm/vfp/vfpdouble.c
b/arch/arm/vfp/vfpdouble.c
index
009038c
..
9b367a6
100644
(file)
--- a/
arch/arm/vfp/vfpdouble.c
+++ b/
arch/arm/vfp/vfpdouble.c
@@
-197,7
+197,7
@@
u32 vfp_double_normaliseround(int dd, struct vfp_double *vd, u32 fpscr, u32 exce
dd, d, exceptions);
vfp_put_double(dd, d);
}
dd, d, exceptions);
vfp_put_double(dd, d);
}
- return exceptions;
+ return exceptions
& ~VFP_NAN_FLAG
;
}
/*
}
/*
@@
-588,7
+588,6
@@
static u32 vfp_double_ftosi(int sd, int unused, int dm, u32 fpscr)
struct vfp_double vdm;
u32 d, exceptions = 0;
int rmode = fpscr & FPSCR_RMODE_MASK;
struct vfp_double vdm;
u32 d, exceptions = 0;
int rmode = fpscr & FPSCR_RMODE_MASK;
- int tm;
vfp_double_unpack(&vdm, vfp_get_double(dm));
vfp_double_dump("VDM", &vdm);
vfp_double_unpack(&vdm, vfp_get_double(dm));
vfp_double_dump("VDM", &vdm);
@@
-596,14
+595,10
@@
static u32 vfp_double_ftosi(int sd, int unused, int dm, u32 fpscr)
/*
* Do we have denormalised number?
*/
/*
* Do we have denormalised number?
*/
- tm = vfp_double_type(&vdm);
- if (tm & VFP_DENORMAL)
+ if (vfp_double_type(&vdm) & VFP_DENORMAL)
exceptions |= FPSCR_IDC;
exceptions |= FPSCR_IDC;
- if (tm & VFP_NAN) {
- d = 0;
- exceptions |= FPSCR_IOC;
- } else if (vdm.exponent >= 1023 + 32) {
+ if (vdm.exponent >= 1023 + 32) {
d = 0x7fffffff;
if (vdm.sign)
d = ~d;
d = 0x7fffffff;
if (vdm.sign)
d = ~d;
@@
-1127,9
+1122,9
@@
u32 vfp_double_cpdo(u32 inst, u32 fpscr)
{
u32 op = inst & FOP_MASK;
u32 exceptions = 0;
{
u32 op = inst & FOP_MASK;
u32 exceptions = 0;
- unsigned int dd = vfp_get_
d
d(inst);
- unsigned int dn = vfp_get_
d
n(inst);
- unsigned int dm = vfp_get_
d
m(inst);
+ unsigned int dd = vfp_get_
s
d(inst);
+ unsigned int dn = vfp_get_
s
n(inst);
+ unsigned int dm = vfp_get_
s
m(inst);
unsigned int vecitr, veclen, vecstride;
u32 (*fop)(int, int, s32, u32);
unsigned int vecitr, veclen, vecstride;
u32 (*fop)(int, int, s32, u32);
@@
-1146,7
+1141,7
@@
u32 vfp_double_cpdo(u32 inst, u32 fpscr)
pr_debug("VFP: vecstride=%u veclen=%u\n", vecstride,
(veclen >> FPSCR_LENGTH_BIT) + 1);
pr_debug("VFP: vecstride=%u veclen=%u\n", vecstride,
(veclen >> FPSCR_LENGTH_BIT) + 1);
- fop = (op == FOP_EXT) ? fop_extfns[
FEXT_TO_IDX(inst)
] : fop_fns[FOP_TO_IDX(op)];
+ fop = (op == FOP_EXT) ? fop_extfns[
dn
] : fop_fns[FOP_TO_IDX(op)];
if (!fop)
goto invalid;
if (!fop)
goto invalid;
@@
-1154,13
+1149,17
@@
u32 vfp_double_cpdo(u32 inst, u32 fpscr)
u32 except;
if (op == FOP_EXT)
u32 except;
if (op == FOP_EXT)
- pr_debug("VFP: itr%d (d%u
) = op[%u] (d
%u)\n",
+ pr_debug("VFP: itr%d (d%u
.%u) = op[%u] (d%u.
%u)\n",
vecitr >> FPSCR_LENGTH_BIT,
vecitr >> FPSCR_LENGTH_BIT,
- dd, dn, dm);
+ dd >> 1, dd & 1, dn,
+ dm >> 1, dm & 1);
else
else
- pr_debug("VFP: itr%d (d%u
) = (d%u) op[%u] (d
%u)\n",
+ pr_debug("VFP: itr%d (d%u
.%u) = (d%u.%u) op[%u] (d%u.
%u)\n",
vecitr >> FPSCR_LENGTH_BIT,
vecitr >> FPSCR_LENGTH_BIT,
- dd, dn, FOP_TO_IDX(op), dm);
+ dd >> 1, dd & 1,
+ dn >> 1, dn & 1,
+ FOP_TO_IDX(op),
+ dm >> 1, dm & 1);
except = fop(dd, dn, dm, fpscr);
pr_debug("VFP: itr%d: exceptions=%08x\n",
except = fop(dd, dn, dm, fpscr);
pr_debug("VFP: itr%d: exceptions=%08x\n",