New s390x port built on the hercules emulator and fedora 16 image. - lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2013年07月28日 14:13:39 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2013年07月28日 14:13:39 -0300
commitf6ee396ccbb4bc0bb898c8bd34726e2615ebf8ba (patch)
tree504bc79b124decf39674b1078cc9d792b6645b3f /include
parenta3891adb4b6e10f551a6c040eab48761909c43d2 (diff)
downloadlightning-f6ee396ccbb4bc0bb898c8bd34726e2615ebf8ba.tar.gz
New s390x port built on the hercules emulator and fedora 16 image.
* include/lightning/jit_s390x.h, lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x.c: New files implementing the new s390x port. * configure.ac, include/lightning.h, include/lightning/Makefile.am, include/lightning/jit_private.h, lib/Makefile.am, lib/jit_disasm.c, lib/lightning.c: Minor adaptation for the new s390x backend. * check/float.tst: Update for the s390x result of truncating +Inf to integer. * check/qalu_mul.tst: Add extra test cases to better test high word of signed multiplication as the result is adjust from unsigned multiplication on s390x.
Diffstat (limited to 'include')
-rw-r--r--include/lightning.h 2
-rw-r--r--include/lightning/Makefile.am 4
-rw-r--r--include/lightning/jit_private.h 8
-rw-r--r--include/lightning/jit_s390x.h 70
4 files changed, 84 insertions, 0 deletions
diff --git a/include/lightning.h b/include/lightning.h
index fe9c86f..399dbb0 100644
--- a/include/lightning.h
+++ b/include/lightning.h
@@ -126,6 +126,8 @@ typedef jit_int32_t jit_fpr_t;
# include <lightning/jit_hppa.h>
#elif defined(__aarch64__)
# include <lightning/jit_aarch64.h>
+#elif defined(__s390x__)
+# include <lightning/jit_s390x.h>
#endif
#define jit_flag_node 0x00000001 /* patch node not absolute */
diff --git a/include/lightning/Makefile.am b/include/lightning/Makefile.am
index c9abb77..2a51c1f 100644
--- a/include/lightning/Makefile.am
+++ b/include/lightning/Makefile.am
@@ -49,3 +49,7 @@ if cpu_aarch64
lightning_include_HEADERS = \
jit_aarch64.h
endif
+if cpu_s390x
+lightning_include_HEADERS = \
+ jit_s390x.h
+endif
diff --git a/include/lightning/jit_private.h b/include/lightning/jit_private.h
index 6941caf..cd59ff8 100644
--- a/include/lightning/jit_private.h
+++ b/include/lightning/jit_private.h
@@ -85,6 +85,10 @@
# define JIT_SP _SP
# define JIT_RET _R0
# define JIT_FRET _V0
+#elif defined(__s390x__)
+# define JIT_SP _R15
+# define JIT_RET _R2
+# define JIT_FRET _F0
#endif
#define jit_size(vector) (sizeof(vector) / sizeof((vector)[0]))
@@ -94,6 +98,10 @@
!jit_regset_tstbit(&_jitc->regarg, regno) && \
!jit_regset_tstbit(&_jitc->regsav, regno))
+#define jit_reg_free_if_spill_p(regno) \
+ (!jit_regset_tstbit(&_jitc->regarg, regno) && \
+ !jit_regset_tstbit(&_jitc->regsav, regno))
+
/*
* Private jit_class bitmasks
*/
diff --git a/include/lightning/jit_s390x.h b/include/lightning/jit_s390x.h
new file mode 100644
index 0000000..5a3199a
--- /dev/null
+++ b/include/lightning/jit_s390x.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013 Free Software Foundation, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ */
+
+#ifndef _jit_s390x_h
+#define _jit_s390x_h
+
+#define JIT_HASH_CONSTS 1
+#define JIT_NUM_OPERANDS 2
+
+/*
+ * Types
+ */
+#define JIT_FP _R13
+typedef enum {
+#define jit_arg_reg_p(i) ((i) >= 0 && (i) <= 5)
+#define jit_r(i) (_R12 + ((i) << 1))
+#define jit_r_num() 3
+#define jit_v(i) (_R11 + ((i) << 1))
+#define jit_v_num() 3
+#define jit_arg_f_reg_p(i) ((i) >= 0 && (i) <= 4)
+#define jit_f(i) (_F8 + (i))
+#define jit_f_num() 6
+#define JIT_R0 _R12
+#define JIT_R1 _R10
+#define JIT_R2 _R8
+#define JIT_V0 _R11
+#define JIT_V1 _R9
+#define JIT_V2 _R7
+ _R0, _R1, /* Volatile */
+ _R12, /* Saved, GOT */
+ _R11, _R10, _R9, _R8, /* Saved */
+ _R7, /* Saved */
+ _R6, /* Saved, parameter */
+ _R5, _R4, _R3, /* Parameter passing */
+ _R2, /* Volatile, parameter and return value */
+ _R13, /* Saved, literal pool pointer */
+ _R14, /* Volatile, return address */
+ _R15, /* Saved, stack pointer */
+#define JIT_F0 _F8
+#define JIT_F1 _F9
+#define JIT_F2 _F10
+#define JIT_F3 _F11
+#define JIT_F4 _F12
+#define JIT_F5 _F13
+ _F1, _F3, _F5, _F7, /* Volatile */
+ _F14, _F15, _F8, _F9, /* Saved */
+ _F10, _F11, _F12, _F13, /* Saved */
+ _F6, _F4, _F2, /* Volatile, parameter */
+ _F0, /* Volatile, parameter and return value */
+ _NOREG,
+#define JIT_NOREG _NOREG
+} jit_reg_t;
+
+typedef jit_int32_t jit_regset_t;
+
+#endif /* _jit_s390x_h */
generated by cgit v1.2.3 (git 2.46.0) at 2025年10月01日 07:25:46 +0000

AltStyle によって変換されたページ (->オリジナル) /