1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-04 03:00:20 +02:00

ARM: Minor changes that should allow building on non gnu-linux/gcc.

* configure.ac, lib/jit_arm-swf.c, lib/jit_arm.c: Add
	changes that should at least allow building lightning
	on Apple iOS7.
This commit is contained in:
pcpa 2013-11-27 15:05:27 -02:00
parent 67d994cc5e
commit 6fa5123855
4 changed files with 174 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2013-11-27 Paulo Andrade <pcpa@gnu.org>
* configure.ac, lib/jit_arm-swf.c, lib/jit_arm.c: Add
changes that should at least allow building lightning
on Apple iOS7.
2013-10-08 Paulo Andrade <pcpa@gnu.org>
* lib/jit_ppc-cpu.c: Correct wrong shortcut for ldxi_l with

View file

@ -186,6 +186,8 @@ elif test $cpu = arm; then
}
}
fclose(fp);
#elif defined(__thumb2__)
return 0;
#endif
return 1;
}

View file

@ -34,8 +34,8 @@ extern float __aeabi_i2f(int);
extern double __aeabi_i2d(int);
extern float __aeabi_d2f(double);
extern double __aeabi_f2d(float);
extern int __aeabi_f2iz(double);
extern int __aeabi_d2iz(float);
extern int __aeabi_f2iz(float);
extern int __aeabi_d2iz(double);
extern int __aeabi_fcmplt(float, float);
extern int __aeabi_dcmplt(double, double);
extern int __aeabi_fcmple(float, float);
@ -394,6 +394,163 @@ static void _swf_stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
BICI(rt, rn, encode_arm_immediate(im)); \
} while (0)
#if !defined(__GNUC__)
float __addsf3(float u, float v)
{
return (u + v);
}
double
__adddf3(double u, double v)
{
return (u + v);
}
float
__aeabi_fsub(float u, float v)
{
return (u - v);
}
double
__aeabi_dsub(double u, double v)
{
return (u - v);
}
float
__aeabi_fmul(float u, float v)
{
return (u * v);
}
double
__aeabi_dmul(double u, double v)
{
return (u * v);
}
float
__aeabi_fdiv(float u, float v)
{
return (u / v);
}
double
__aeabi_ddiv(double u, double v)
{
return (u / v);
}
float
__aeabi_i2f(int u)
{
return (u);
}
double
__aeabi_i2d(int u)
{
return (u);
}
float
__aeabi_d2f(double u)
{
return (u);
}
double
__aeabi_f2d(float u)
{
return (u);
}
extern int
__aeabi_f2iz(float u)
{
return (u);
}
int
__aeabi_d2iz(double u)
{
return (u);
}
int
__aeabi_fcmplt(float u, float v)
{
return (u < v);
}
int
__aeabi_dcmplt(double u, double v)
{
return (u < v);
}
int
__aeabi_fcmple(float u, float v)
{
return (u <= v);
}
int
__aeabi_dcmple(double u, double v)
{
return (u <= v);
}
int
__aeabi_fcmpeq(float u, float v)
{
return (u == v);
}
int
__aeabi_dcmpeq(double u, double v)
{
return (u == v);
}
int
__aeabi_fcmpge(float u, float v)
{
return (u >= v);
}
int
__aeabi_dcmpge(double u, double v)
{
return (u >= v);
}
int
__aeabi_fcmpgt(float u, float v)
{
return (u > v);
}
int
__aeabi_dcmpgt(double u, double v)
{
return (u > v);
}
int
__aeabi_fcmpun(float u, float v)
{
return ((u != u) || (v != v));
}
int
__aeabi_dcmpun(double u, double v)
{
return ((u != u) || (v != v));
}
#endif
static void
_swf_ff(jit_state_t *_jit, float(*i0)(float),
jit_int32_t r0, jit_int32_t r1)

View file

@ -64,8 +64,10 @@ static void _invalidate_consts(jit_state_t*);
#define patch(instr, node) _patch(_jit, instr, node)
static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
#if defined(__GNUC__)
/* libgcc */
extern void __clear_cache(void *, void *);
#endif
#define PROTO 1
# include "jit_arm-cpu.c"
@ -176,6 +178,9 @@ jit_get_cpu(void)
if (!jit_cpu.version)
jit_cpu.version = 7;
jit_cpu.abi = 1;
#endif
#if defined(__thumb2__)
jit_cpu.thumb = 1;
#endif
/* armv6t2 todo (software float and thumb2) */
if (!jit_cpu.vfp && jit_cpu.thumb)
@ -1564,8 +1569,10 @@ _emit_code(jit_state_t *_jit)
patch_at(_jitc->patches.ptr[offset].kind & ~arm_patch_node, word, value);
}
#if defined(__GNUC__)
word = sysconf(_SC_PAGE_SIZE);
__clear_cache(_jit->code.ptr, (void *)((_jit->pc.w + word) & -word));
#endif
return (_jit->code.ptr);
}