Fixed vfp issues

This commit is contained in:
archshift 2014-05-17 10:55:45 -07:00
parent c1394650ff
commit c396a5ac57
4 changed files with 10 additions and 10 deletions

View file

@ -86,12 +86,12 @@ static union
} reg_conv; } reg_conv;
static void static void
printf_nothing (void *foo, ...) printf_nothing (const char *foo, ...)
{ {
} }
static void static void
cirrus_not_implemented (char *insn) cirrus_not_implemented (const char *insn)
{ {
fprintf (stderr, "Cirrus instruction '%s' not implemented.\n", insn); fprintf (stderr, "Cirrus instruction '%s' not implemented.\n", insn);
fprintf (stderr, "aborting!\n"); fprintf (stderr, "aborting!\n");

View file

@ -50,7 +50,7 @@
#define pr_info //printf #define pr_info //printf
#define pr_debug //printf #define pr_debug //printf
static u32 fls(int x); static u32 vfp_fls(int x);
#define do_div(n, base) {n/=base;} #define do_div(n, base) {n/=base;}
/* From vfpinstr.h */ /* From vfpinstr.h */
@ -508,7 +508,7 @@ struct op {
u32 flags; u32 flags;
}; };
static inline u32 fls(int x) static u32 vfp_fls(int x)
{ {
int r = 32; int r = 32;

View file

@ -69,9 +69,9 @@ static void vfp_double_dump(const char *str, struct vfp_double *d)
static void vfp_double_normalise_denormal(struct vfp_double *vd) static void vfp_double_normalise_denormal(struct vfp_double *vd)
{ {
int bits = 31 - fls(vd->significand >> 32); int bits = 31 - vfp_fls(vd->significand >> 32);
if (bits == 31) if (bits == 31)
bits = 63 - fls(vd->significand); bits = 63 - vfp_fls(vd->significand);
vfp_double_dump("normalise_denormal: in", vd); vfp_double_dump("normalise_denormal: in", vd);
@ -108,9 +108,9 @@ u32 vfp_double_normaliseround(ARMul_State* state, int dd, struct vfp_double *vd,
exponent = vd->exponent; exponent = vd->exponent;
significand = vd->significand; significand = vd->significand;
shift = 32 - fls(significand >> 32); shift = 32 - vfp_fls(significand >> 32);
if (shift == 32) if (shift == 32)
shift = 64 - fls(significand); shift = 64 - vfp_fls(significand);
if (shift) { if (shift) {
exponent -= shift; exponent -= shift;
significand <<= shift; significand <<= shift;

View file

@ -69,7 +69,7 @@ static void vfp_single_dump(const char *str, struct vfp_single *s)
static void vfp_single_normalise_denormal(struct vfp_single *vs) static void vfp_single_normalise_denormal(struct vfp_single *vs)
{ {
int bits = 31 - fls(vs->significand); int bits = 31 - vfp_fls(vs->significand);
vfp_single_dump("normalise_denormal: in", vs); vfp_single_dump("normalise_denormal: in", vs);
@ -111,7 +111,7 @@ u32 vfp_single_normaliseround(ARMul_State* state, int sd, struct vfp_single *vs,
* bit 31, so we have VFP_SINGLE_LOW_BITS + 1 below the least * bit 31, so we have VFP_SINGLE_LOW_BITS + 1 below the least
* significant bit. * significant bit.
*/ */
shift = 32 - fls(significand); shift = 32 - vfp_fls(significand);
if (shift < 32 && shift) { if (shift < 32 && shift) {
exponent -= shift; exponent -= shift;
significand <<= shift; significand <<= shift;