[MIPS] Avoid unaligned load/store for 64-bit doubles.
Change-Id: Iefdcac8742f23fef31f63730b48698fc4205c3ad Signed-off-by: Douglas Leung <douglas@mips.com>
This commit is contained in:
parent
845ed8fdaa
commit
cc1a4bb1e1
@ -627,11 +627,27 @@ status_t Parcel::writeFloat(float val)
|
||||
return writeAligned(val);
|
||||
}
|
||||
|
||||
#if defined(__mips__) && defined(__mips_hard_float)
|
||||
|
||||
status_t Parcel::writeDouble(double val)
|
||||
{
|
||||
union {
|
||||
double d;
|
||||
unsigned long long ll;
|
||||
} u;
|
||||
u.d = val;
|
||||
return writeAligned(u.ll);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
status_t Parcel::writeDouble(double val)
|
||||
{
|
||||
return writeAligned(val);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
status_t Parcel::writeIntPtr(intptr_t val)
|
||||
{
|
||||
return writeAligned(val);
|
||||
@ -962,17 +978,44 @@ float Parcel::readFloat() const
|
||||
return readAligned<float>();
|
||||
}
|
||||
|
||||
#if defined(__mips__) && defined(__mips_hard_float)
|
||||
|
||||
status_t Parcel::readDouble(double *pArg) const
|
||||
{
|
||||
union {
|
||||
double d;
|
||||
unsigned long long ll;
|
||||
} u;
|
||||
status_t status;
|
||||
status = readAligned(&u.ll);
|
||||
*pArg = u.d;
|
||||
return status;
|
||||
}
|
||||
|
||||
double Parcel::readDouble() const
|
||||
{
|
||||
union {
|
||||
double d;
|
||||
unsigned long long ll;
|
||||
} u;
|
||||
u.ll = readAligned<unsigned long long>();
|
||||
return u.d;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
status_t Parcel::readDouble(double *pArg) const
|
||||
{
|
||||
return readAligned(pArg);
|
||||
}
|
||||
|
||||
|
||||
double Parcel::readDouble() const
|
||||
{
|
||||
return readAligned<double>();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
status_t Parcel::readIntPtr(intptr_t *pArg) const
|
||||
{
|
||||
return readAligned(pArg);
|
||||
|
Loading…
Reference in New Issue
Block a user