author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2013年07月28日 14:13:39 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2013年07月28日 14:13:39 -0300 |
commit | f6ee396ccbb4bc0bb898c8bd34726e2615ebf8ba (patch) | |
tree | 504bc79b124decf39674b1078cc9d792b6645b3f /include | |
parent | a3891adb4b6e10f551a6c040eab48761909c43d2 (diff) | |
download | lightning-f6ee396ccbb4bc0bb898c8bd34726e2615ebf8ba.tar.gz |
-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 |
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 */ |