sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 1 | /* -*- mode: C; c-basic-offset: 3; -*- */ |
| 2 | |
| 3 | /*---------------------------------------------------------------*/ |
| 4 | /*--- begin guest_s390_defs.h ---*/ |
| 5 | /*---------------------------------------------------------------*/ |
| 6 | |
| 7 | /* |
| 8 | This file is part of Valgrind, a dynamic binary instrumentation |
| 9 | framework. |
| 10 | |
Elliott Hughes | ed39800 | 2017-06-21 14:41:24 -0700 | [diff] [blame^] | 11 | Copyright IBM Corp. 2010-2017 |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 12 | |
| 13 | This program is free software; you can redistribute it and/or |
| 14 | modify it under the terms of the GNU General Public License as |
| 15 | published by the Free Software Foundation; either version 2 of the |
| 16 | License, or (at your option) any later version. |
| 17 | |
| 18 | This program is distributed in the hope that it will be useful, but |
| 19 | WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 21 | General Public License for more details. |
| 22 | |
| 23 | You should have received a copy of the GNU General Public License |
| 24 | along with this program; if not, write to the Free Software |
| 25 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 26 | 02110-1301, USA. |
| 27 | |
| 28 | The GNU General Public License is contained in the file COPYING. |
| 29 | */ |
| 30 | |
| 31 | /* Contributed by Florian Krohm */ |
| 32 | |
| 33 | #ifndef __VEX_GUEST_S390_DEFS_H |
| 34 | #define __VEX_GUEST_S390_DEFS_H |
| 35 | |
florian | e88b3c9 | 2011-07-05 02:48:39 +0000 | [diff] [blame] | 36 | #include "libvex_basictypes.h" // offsetof |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 37 | #include "guest_generic_bb_to_IR.h" // DisResult |
florian | ad43b3a | 2012-02-20 15:01:14 +0000 | [diff] [blame] | 38 | #include "libvex_guest_s390x.h" // VexGuestS390XState |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 39 | |
florian | b4df768 | 2011-07-05 02:09:01 +0000 | [diff] [blame] | 40 | |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 41 | /* Convert one s390 insn to IR. See the type DisOneInstrFn in |
Elliott Hughes | ed39800 | 2017-06-21 14:41:24 -0700 | [diff] [blame^] | 42 | guest_generic_bb_to_IR.h. */ |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 43 | DisResult disInstr_S390 ( IRSB* irbb, |
florian | beac530 | 2014-12-31 12:09:38 +0000 | [diff] [blame] | 44 | Bool (*resteerOkFn) ( void*, Addr ), |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 45 | Bool resteerCisOk, |
| 46 | void* callback_opaque, |
florian | 8462d11 | 2014-09-24 15:18:09 +0000 | [diff] [blame] | 47 | const UChar* guest_code, |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 48 | Long delta, |
florian | d4cc0de | 2015-01-02 11:44:12 +0000 | [diff] [blame] | 49 | Addr guest_IP, |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 50 | VexArch guest_arch, |
florian | cacba8e | 2014-12-15 18:58:07 +0000 | [diff] [blame] | 51 | const VexArchInfo* archinfo, |
| 52 | const VexAbiInfo* abiinfo, |
sewardj | 9b76916 | 2014-07-24 12:42:03 +0000 | [diff] [blame] | 53 | VexEndness host_endness, |
sewardj | 442e51a | 2012-12-06 18:08:04 +0000 | [diff] [blame] | 54 | Bool sigill_diag ); |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 55 | |
| 56 | /* Used by the optimiser to specialise calls to helpers. */ |
florian | 1ff4756 | 2012-10-21 02:09:51 +0000 | [diff] [blame] | 57 | IRExpr* guest_s390x_spechelper ( const HChar *function_name, |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 58 | IRExpr **args, |
| 59 | IRStmt **precedingStmts, |
| 60 | Int n_precedingStmts); |
| 61 | |
| 62 | |
sewardj | ca2c3c7 | 2015-02-05 12:53:20 +0000 | [diff] [blame] | 63 | /* Describes to the optimiser which part of the guest state require |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 64 | precise memory exceptions. This is logically part of the guest |
| 65 | state description. */ |
sewardj | ca2c3c7 | 2015-02-05 12:53:20 +0000 | [diff] [blame] | 66 | Bool guest_s390x_state_requires_precise_mem_exns ( Int, Int, |
| 67 | VexRegisterUpdates ); |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 68 | |
florian | b4df768 | 2011-07-05 02:09:01 +0000 | [diff] [blame] | 69 | extern VexGuestLayout s390xGuest_layout; |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 70 | |
| 71 | |
florian | e88b3c9 | 2011-07-05 02:48:39 +0000 | [diff] [blame] | 72 | #define S390X_GUEST_OFFSET(x) offsetof(VexGuestS390XState, x) |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 73 | |
| 74 | /*------------------------------------------------------------*/ |
florian | e711c80 | 2012-07-15 02:25:55 +0000 | [diff] [blame] | 75 | /*--- Helper functions. ---*/ |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 76 | /*------------------------------------------------------------*/ |
| 77 | void s390x_dirtyhelper_EX(ULong torun); |
sewardj | 1e5fea6 | 2011-05-17 16:18:36 +0000 | [diff] [blame] | 78 | ULong s390x_dirtyhelper_STCK(ULong *addr); |
| 79 | ULong s390x_dirtyhelper_STCKF(ULong *addr); |
| 80 | ULong s390x_dirtyhelper_STCKE(ULong *addr); |
florian | ae88411 | 2012-07-27 20:55:01 +0000 | [diff] [blame] | 81 | ULong s390x_dirtyhelper_STFLE(VexGuestS390XState *guest_state, ULong *addr); |
florian | a0100c9 | 2012-07-20 00:06:35 +0000 | [diff] [blame] | 82 | void s390x_dirtyhelper_CUxy(UChar *addr, ULong data, ULong num_bytes); |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 83 | |
florian | 3f8a96a | 2012-08-05 02:59:55 +0000 | [diff] [blame] | 84 | ULong s390_do_cu12_cu14_helper1(UInt byte1, UInt etf3_and_m3_is_1); |
florian | 6d9b9b2 | 2012-08-03 18:35:39 +0000 | [diff] [blame] | 85 | ULong s390_do_cu12_helper2(UInt byte1, UInt byte2, UInt byte3, UInt byte4, |
| 86 | ULong stuff); |
florian | 3f8a96a | 2012-08-05 02:59:55 +0000 | [diff] [blame] | 87 | ULong s390_do_cu14_helper2(UInt byte1, UInt byte2, UInt byte3, UInt byte4, |
| 88 | ULong stuff); |
florian | a0100c9 | 2012-07-20 00:06:35 +0000 | [diff] [blame] | 89 | ULong s390_do_cu21(UInt srcvalue, UInt low_surrogate); |
florian | 2a415a1 | 2012-07-21 17:41:36 +0000 | [diff] [blame] | 90 | ULong s390_do_cu24(UInt srcvalue, UInt low_surrogate); |
florian | af2194f | 2012-08-06 00:07:54 +0000 | [diff] [blame] | 91 | ULong s390_do_cu41(UInt srcvalue); |
florian | 956194b | 2012-07-28 22:18:32 +0000 | [diff] [blame] | 92 | ULong s390_do_cu42(UInt srcvalue); |
florian | e711c80 | 2012-07-15 02:25:55 +0000 | [diff] [blame] | 93 | UInt s390_do_cvb(ULong decimal); |
| 94 | ULong s390_do_cvd(ULong binary); |
florian | 8c88cb6 | 2012-08-26 18:58:13 +0000 | [diff] [blame] | 95 | ULong s390_do_ecag(ULong op2addr); |
florian | 78d5ef7 | 2013-05-11 15:02:58 +0000 | [diff] [blame] | 96 | UInt s390_do_pfpo(UInt gpr0); |
florian | e711c80 | 2012-07-15 02:25:55 +0000 | [diff] [blame] | 97 | |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 98 | /* The various ways to compute the condition code. */ |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 99 | enum { |
| 100 | S390_CC_OP_BITWISE = 0, |
| 101 | S390_CC_OP_SIGNED_COMPARE = 1, |
| 102 | S390_CC_OP_UNSIGNED_COMPARE = 2, |
| 103 | S390_CC_OP_SIGNED_ADD_32 = 3, |
| 104 | S390_CC_OP_SIGNED_ADD_64 = 4, |
| 105 | S390_CC_OP_UNSIGNED_ADD_32 = 5, |
| 106 | S390_CC_OP_UNSIGNED_ADD_64 = 6, |
| 107 | S390_CC_OP_UNSIGNED_ADDC_32 = 7, |
| 108 | S390_CC_OP_UNSIGNED_ADDC_64 = 8, |
| 109 | S390_CC_OP_SIGNED_SUB_32 = 9, |
| 110 | S390_CC_OP_SIGNED_SUB_64 = 10, |
| 111 | S390_CC_OP_UNSIGNED_SUB_32 = 11, |
| 112 | S390_CC_OP_UNSIGNED_SUB_64 = 12, |
| 113 | S390_CC_OP_UNSIGNED_SUBB_32 = 13, |
| 114 | S390_CC_OP_UNSIGNED_SUBB_64 = 14, |
| 115 | S390_CC_OP_LOAD_AND_TEST = 15, |
| 116 | S390_CC_OP_LOAD_POSITIVE_32 = 16, |
| 117 | S390_CC_OP_LOAD_POSITIVE_64 = 17, |
florian | 7700fc9 | 2012-01-16 17:25:55 +0000 | [diff] [blame] | 118 | S390_CC_OP_TEST_UNDER_MASK_8 = 18, |
| 119 | S390_CC_OP_TEST_UNDER_MASK_16 = 19, |
| 120 | S390_CC_OP_SHIFT_LEFT_32 = 20, |
| 121 | S390_CC_OP_SHIFT_LEFT_64 = 21, |
| 122 | S390_CC_OP_INSERT_CHAR_MASK_32 = 22, |
| 123 | S390_CC_OP_BFP_RESULT_32 = 23, |
| 124 | S390_CC_OP_BFP_RESULT_64 = 24, |
| 125 | S390_CC_OP_BFP_RESULT_128 = 25, |
| 126 | S390_CC_OP_BFP_32_TO_INT_32 = 26, |
| 127 | S390_CC_OP_BFP_64_TO_INT_32 = 27, |
| 128 | S390_CC_OP_BFP_128_TO_INT_32 = 28, |
| 129 | S390_CC_OP_BFP_32_TO_INT_64 = 29, |
| 130 | S390_CC_OP_BFP_64_TO_INT_64 = 30, |
| 131 | S390_CC_OP_BFP_128_TO_INT_64 = 31, |
| 132 | S390_CC_OP_BFP_TDC_32 = 32, |
| 133 | S390_CC_OP_BFP_TDC_64 = 33, |
| 134 | S390_CC_OP_BFP_TDC_128 = 34, |
florian | 1c8f7ff | 2012-09-01 00:12:11 +0000 | [diff] [blame] | 135 | S390_CC_OP_SET = 35, |
| 136 | S390_CC_OP_BFP_32_TO_UINT_32 = 36, |
| 137 | S390_CC_OP_BFP_64_TO_UINT_32 = 37, |
| 138 | S390_CC_OP_BFP_128_TO_UINT_32 = 38, |
| 139 | S390_CC_OP_BFP_32_TO_UINT_64 = 39, |
| 140 | S390_CC_OP_BFP_64_TO_UINT_64 = 40, |
florian | 1239020 | 2012-11-10 22:34:14 +0000 | [diff] [blame] | 141 | S390_CC_OP_BFP_128_TO_UINT_64 = 41, |
florian | e38f641 | 2012-12-21 17:32:12 +0000 | [diff] [blame] | 142 | S390_CC_OP_DFP_RESULT_64 = 42, |
florian | ce9e3db | 2012-12-27 20:14:03 +0000 | [diff] [blame] | 143 | S390_CC_OP_DFP_RESULT_128 = 43, |
| 144 | S390_CC_OP_DFP_TDC_32 = 44, |
| 145 | S390_CC_OP_DFP_TDC_64 = 45, |
| 146 | S390_CC_OP_DFP_TDC_128 = 46, |
| 147 | S390_CC_OP_DFP_TDG_32 = 47, |
| 148 | S390_CC_OP_DFP_TDG_64 = 48, |
florian | 5f03462 | 2013-01-13 02:29:05 +0000 | [diff] [blame] | 149 | S390_CC_OP_DFP_TDG_128 = 49, |
| 150 | S390_CC_OP_DFP_64_TO_UINT_32 = 50, |
| 151 | S390_CC_OP_DFP_128_TO_UINT_32 = 51, |
| 152 | S390_CC_OP_DFP_64_TO_UINT_64 = 52, |
| 153 | S390_CC_OP_DFP_128_TO_UINT_64 = 53, |
| 154 | S390_CC_OP_DFP_64_TO_INT_32 = 54, |
florian | a887acd | 2013-02-08 23:32:54 +0000 | [diff] [blame] | 155 | S390_CC_OP_DFP_128_TO_INT_32 = 55, |
| 156 | S390_CC_OP_DFP_64_TO_INT_64 = 56, |
florian | 78d5ef7 | 2013-05-11 15:02:58 +0000 | [diff] [blame] | 157 | S390_CC_OP_DFP_128_TO_INT_64 = 57, |
florian | 7ab421d | 2013-06-17 21:03:56 +0000 | [diff] [blame] | 158 | S390_CC_OP_PFPO_32 = 58, |
| 159 | S390_CC_OP_PFPO_64 = 59, |
| 160 | S390_CC_OP_PFPO_128 = 60 |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 161 | }; |
| 162 | |
| 163 | /*------------------------------------------------------------*/ |
| 164 | /*--- Thunk layout ---*/ |
| 165 | /*------------------------------------------------------------*/ |
| 166 | |
| 167 | /* |
| 168 | Z -- value is zero extended to 32 / 64 bit |
| 169 | S -- value is sign extended to 32 / 64 bit |
| 170 | F -- a binary floating point value |
florian | cb2b24e | 2012-12-20 14:31:19 +0000 | [diff] [blame] | 171 | D -- a decimal floating point value |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 172 | |
florian | 19e0077 | 2012-09-06 03:13:22 +0000 | [diff] [blame] | 173 | +--------------------------------+-----------------------+----------------------+-----------------+ |
| 174 | | op | cc_dep1 | cc_dep2 | cc_ndep | |
| 175 | +--------------------------------+-----------------------+----------------------+-----------------+ |
| 176 | | S390_CC_OP_BITWISE | Z result | | | |
| 177 | | S390_CC_OP_SIGNED_COMPARE | S 1st operand | S 2nd operand | | |
| 178 | | S390_CC_OP_UNSIGNED_COMPARE | Z 1st operand | Z 2nd operand | | |
| 179 | | S390_CC_OP_SIGNED_ADD_32 | S 1st operand | S 2nd operand | | |
| 180 | | S390_CC_OP_SIGNED_ADD_64 | S 1st operand | S 2nd operand | | |
| 181 | | S390_CC_OP_UNSIGNED_ADD_32 | Z 1st operand | Z 2nd operand | | |
| 182 | | S390_CC_OP_UNSIGNED_ADD_64 | Z 1st operand | Z 2nd operand | | |
| 183 | | S390_CC_OP_UNSIGNED_ADDC_32 | Z 1st operand | Z 2nd operand | Z carry in | |
| 184 | | S390_CC_OP_UNSIGNED_ADDC_64 | Z 1st operand | Z 2nd operand | Z carry in | |
| 185 | | S390_CC_OP_SIGNED_SUB_32 | S left operand | S right operand | | |
| 186 | | S390_CC_OP_SIGNED_SUB_64 | S left operand | S right operand | | |
| 187 | | S390_CC_OP_UNSIGNED_SUB_32 | Z left operand | Z right operand | | |
| 188 | | S390_CC_OP_UNSIGNED_SUB_64 | Z left operand | Z right operand | | |
| 189 | | S390_CC_OP_UNSIGNED_SUBB_32 | Z left operand | Z right operand | Z borrow in | |
| 190 | | S390_CC_OP_UNSIGNED_SUBB_64 | Z left operand | Z right operand | Z borrow in | |
| 191 | | S390_CC_OP_LOAD_AND_TEST | S loaded value | | | |
| 192 | | S390_CC_OP_LOAD_POSITIVE_32 | S loaded value | | | |
| 193 | | S390_CC_OP_LOAD_POSITIVE_64 | S loaded value | | | |
| 194 | | S390_CC_OP_TEST_UNDER_MASK_8 | Z tested value | Z mask | | |
| 195 | | S390_CC_OP_TEST_UNDER_MASK_16 | Z tested value | Z mask | | |
| 196 | | S390_CC_OP_SHIFT_LEFT_32 | Z value to be shifted | Z shift amount | | |
| 197 | | S390_CC_OP_SHIFT_LEFT_64 | Z value to be shifted | Z shift amount | | |
| 198 | | S390_CC_OP_INSERT_CHAR_MASK_32 | Z result | Z mask | | |
| 199 | | S390_CC_OP_BFP_RESULT_32 | F result | | | |
| 200 | | S390_CC_OP_BFP_RESULT_64 | F result | | | |
| 201 | | S390_CC_OP_BFP_RESULT_128 | F result hi 64 bits | F result low 64 bits | | |
| 202 | | S390_CC_OP_BFP_32_TO_INT_32 | F source | Z rounding mode | | |
| 203 | | S390_CC_OP_BFP_64_TO_INT_32 | F source | Z rounding mode | | |
| 204 | | S390_CC_OP_BFP_128_TO_INT_32 | F source hi 64 bits | F source low 64 bits | Z rounding mode | |
| 205 | | S390_CC_OP_BFP_32_TO_INT_64 | F source | Z rounding mode | | |
| 206 | | S390_CC_OP_BFP_64_TO_INT_64 | F source | Z rounding mode | | |
| 207 | | S390_CC_OP_BFP_128_TO_INT_64 | F source hi 64 bits | F source low 64 bits | Z rounding mode | |
| 208 | | S390_CC_OP_BFP_TDC_32 | F value | Z class | | |
| 209 | | S390_CC_OP_BFP_TDC_64 | F value | Z class | | |
| 210 | | S390_CC_OP_BFP_TDC_128 | F value hi 64 bits | F value low 64 bits | Z class | |
| 211 | | S390_CC_OP_SET | Z condition code | | | |
| 212 | | S390_CC_OP_BFP_32_TO_UINT_32 | F source | Z rounding mode | | |
| 213 | | S390_CC_OP_BFP_64_TO_UINT_32 | F source | Z rounding mode | | |
| 214 | | S390_CC_OP_BFP_128_TO_UINT_32 | F source hi 64 bits | F source low 64 bits | Z rounding mode | |
| 215 | | S390_CC_OP_BFP_32_TO_UINT_64 | F source | Z rounding mode | | |
| 216 | | S390_CC_OP_BFP_64_TO_UINT_64 | F source | Z rounding mode | | |
| 217 | | S390_CC_OP_BFP_128_TO_UINT_64 | F source hi 64 bits | F source low 64 bits | Z rounding mode | |
florian | cb2b24e | 2012-12-20 14:31:19 +0000 | [diff] [blame] | 218 | | S390_CC_OP_DFP_RESULT_64 | D result | | | |
florian | e38f641 | 2012-12-21 17:32:12 +0000 | [diff] [blame] | 219 | | S390_CC_OP_DFP_RESULT_128 | D result hi 64 bits | D result low 64 bits | | |
florian | ce9e3db | 2012-12-27 20:14:03 +0000 | [diff] [blame] | 220 | | S390_CC_OP_DFP_TDC_32 | D value | Z class | | |
| 221 | | S390_CC_OP_DFP_TDC_64 | D value | Z class | | |
| 222 | | S390_CC_OP_DFP_TDC_128 | D value hi 64 bits | D value low 64 bits | Z class | |
| 223 | | S390_CC_OP_DFP_TDG_32 | D value | Z group | | |
| 224 | | S390_CC_OP_DFP_TDG_64 | D value | Z group | | |
| 225 | | S390_CC_OP_DFP_TDG_128 | D value hi 64 bits | D value low 64 bits | Z group | |
florian | 5f03462 | 2013-01-13 02:29:05 +0000 | [diff] [blame] | 226 | | S390_CC_OP_DFP_64_TO_UINT_32 | D source | Z rounding mode | | |
| 227 | | S390_CC_OP_DFP_128_TO_UINT_32 | D source hi 64 bits | D source low 64 bits | Z rounding mode | |
| 228 | | S390_CC_OP_DFP_64_TO_UINT_64 | D source | Z rounding mode | | |
| 229 | | S390_CC_OP_DFP_128_TO_UINT_64 | D source hi 64 bits | D source low 64 bits | Z rounding mode | |
florian | 1fd227c | 2013-02-08 16:01:23 +0000 | [diff] [blame] | 230 | | S390_CC_OP_DFP_64_TO_INT_32 | D source | Z rounding mode | | |
| 231 | | S390_CC_OP_DFP_128_TO_INT_32 | D source hi 64 bits | D source low 64 bits | Z rounding mode | |
florian | 5f03462 | 2013-01-13 02:29:05 +0000 | [diff] [blame] | 232 | | S390_CC_OP_DFP_64_TO_INT_64 | D source | Z rounding mode | | |
| 233 | | S390_CC_OP_DFP_128_TO_INT_64 | D source hi 64 bits | D source low 64 bits | Z rounding mode | |
florian | 7ab421d | 2013-06-17 21:03:56 +0000 | [diff] [blame] | 234 | | S390_CC_OP_PFPO_32 | F|D source | Z GR0 low 32 bits | | |
florian | 78d5ef7 | 2013-05-11 15:02:58 +0000 | [diff] [blame] | 235 | | S390_CC_OP_PFPO_64 | F|D source | Z GR0 low 32 bits | | |
| 236 | | S390_CC_OP_PFPO_128 | F|D source hi 64 bits | F|D src low 64 bits | Z GR0 low 32 bits | |
florian | 19e0077 | 2012-09-06 03:13:22 +0000 | [diff] [blame] | 237 | +--------------------------------+-----------------------+----------------------+-----------------+ |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 238 | */ |
| 239 | |
| 240 | /*------------------------------------------------------------*/ |
florian | b4df768 | 2011-07-05 02:09:01 +0000 | [diff] [blame] | 241 | /*--- Condition code helpers. ---*/ |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 242 | /*------------------------------------------------------------*/ |
| 243 | UInt s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2, |
| 244 | ULong cc_ndep); |
sewardj | 2019a97 | 2011-03-07 16:04:07 +0000 | [diff] [blame] | 245 | UInt s390_calculate_cond(ULong mask, ULong op, ULong dep1, ULong dep2, |
| 246 | ULong ndep); |
| 247 | |
| 248 | /* Size of special instruction preamble */ |
| 249 | #define S390_SPECIAL_OP_PREAMBLE_SIZE 8 |
| 250 | |
| 251 | /* Size of special instructions */ |
| 252 | #define S390_SPECIAL_OP_SIZE 2 |
| 253 | |
| 254 | /* Last target instruction for the EX helper */ |
| 255 | extern ULong last_execute_target; |
| 256 | |
| 257 | /*---------------------------------------------------------------*/ |
| 258 | /*--- end guest_s390_defs.h ---*/ |
| 259 | /*---------------------------------------------------------------*/ |
| 260 | |
| 261 | #endif /* __VEX_GUEST_S390_DEFS_H */ |