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

MIPS: Build and pass all test cases on mips64.

* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
	lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
	pass all test cases on Irix big endian mips using
	the 64 bit abi.
This commit is contained in:
pcpa 2013-10-04 00:01:31 -03:00
parent 485584546a
commit 52bfc67192
6 changed files with 704 additions and 263 deletions

View file

@ -1,3 +1,10 @@
2013-10-03 Paulo Andrade <pcpa@gnu.org>
* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
pass all test cases on Irix big endian mips using
the 64 bit abi.
2013-10-02 Paulo Andrade <pcpa@gnu.org>
* include/lightning/jit_mips.h: Add proper mips abi detection.

View file

@ -23,11 +23,8 @@
#define JIT_HASH_CONSTS 1
#define JIT_NUM_OPERANDS 3
#if _MIPS_SIM == _ABIN32
#if _MIPS_SIM != _ABIO32
# define NEW_ABI 1
#elif _MIPS_SIM != _ABIO32
/* FIXME port to _ABI64 */
# error "Unsupported ABI"
#endif
/*

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
#if __WORDSIZE == 32
#if defined(_ABIN32)
#if NEW_ABI
#define JIT_INSTR_MAX 44
0,
0,
@ -348,11 +348,11 @@
12,
0,
0,
#endif /* _ABIN32 */
#endif /* NEW_ABI */
#endif /* __WORDSIZE */
#if __WORDSIZE == 32
#if !defined(_ABIN32)
#if !NEW_ABI
#define JIT_INSTR_MAX 96
0,
0,
@ -700,5 +700,355 @@
0,
0,
0,
#endif /* _ABIN32 */
#endif /* NEW_ABI */
#endif /* __WORDSIZE */
#if __WORDSIZE == 64
#define JIT_INSTR_MAX 44
0,
0,
0,
0,
0,
0,
0,
44,
0,
4,
28,
12,
36,
28,
28,
4,
28,
12,
36,
28,
28,
8,
32,
12,
32,
12,
32,
8,
32,
8,
32,
12,
16,
12,
16,
8,
32,
8,
32,
4,
28,
4,
28,
4,
28,
4,
4,
4,
4,
4,
4,
4,
8,
4,
4,
4,
4,
8,
12,
8,
12,
12,
12,
8,
12,
8,
12,
4,
8,
4,
8,
8,
8,
4,
28,
8,
4,
8,
4,
4,
8,
4,
4,
12,
4,
12,
4,
12,
4,
12,
4,
12,
4,
12,
4,
12,
8,
4,
8,
4,
8,
4,
8,
4,
8,
4,
8,
4,
8,
4,
4,
12,
4,
12,
4,
12,
4,
12,
8,
4,
8,
4,
8,
4,
8,
4,
12,
12,
12,
12,
12,
16,
12,
16,
8,
36,
12,
12,
12,
12,
12,
16,
12,
16,
8,
32,
12,
12,
12,
12,
28,
28,
16,
20,
28,
28,
16,
20,
28,
28,
16,
20,
28,
28,
16,
20,
0,
8,
12,
32,
44,
0,
4,
16,
4,
16,
4,
16,
4,
16,
4,
4,
4,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
8,
8,
8,
4,
4,
12,
4,
12,
8,
4,
4,
12,
8,
4,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
0,
4,
16,
4,
16,
4,
16,
4,
16,
4,
4,
4,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
16,
28,
8,
8,
8,
4,
4,
12,
4,
12,
8,
4,
4,
12,
8,
4,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
12,
24,
0,
0,
0,
0,
0,
0,
0,
4,
12,
0,
0,
#endif /* __WORDSIZE */

View file

@ -1074,7 +1074,7 @@ _emit_code(jit_state_t *_jit)
case_wr(st, _i);
#if __WORDSIZE == 64
case_rr(st, _l);
case_rw(st, _l);
case_wr(st, _l);
#endif
case_rrr(stx, _c);
case_wrr(stx, _c);

14
size.c
View file

@ -55,10 +55,12 @@ main(int argc, char *argv[])
fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n");
# endif
#elif defined(__mips__)
# if defined(_ABIN32)
fprintf(fp, "#if defined(_ABIN32)\n");
# else
fprintf(fp, "#if !defined(_ABIN32)\n");
# if __WORDSIZE == 32
# if NEW_ABI
fprintf(fp, "#if NEW_ABI\n");
# else
fprintf(fp, "#if !NEW_ABI\n");
# endif
# endif
#elif defined(__ppc__)
fprintf(fp, "#if defined(__ppc__)\n");
@ -71,7 +73,9 @@ main(int argc, char *argv[])
#if defined(__arm__)
fprintf(fp, "#undef /* __ARM_PCS_VFP */\n");
#elif defined(__mips__)
fprintf(fp, "#endif /* _ABIN32 */\n");
# if __WORDSIZE == 32
fprintf(fp, "#endif /* NEW_ABI */\n");
# endif
#elif defined(__ppc__)
fprintf(fp, "#endif /* __ppc__ */\n");
#elif defined(__powerpc__)