Fixed vfp issues
This commit is contained in:
		| @@ -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"); | ||||||
|   | |||||||
| @@ -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; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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; | ||||||
|   | |||||||
| @@ -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; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user