12019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/* -*- mode: C; c-basic-offset: 3; -*- */ 22019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 32019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*---------------------------------------------------------------*/ 42019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- begin libvex_guest_s390x.h ---*/ 52019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*---------------------------------------------------------------*/ 62019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 72019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/* 82019a976f07ff418dde2dfc7cc74667ef66d7764sewardj This file is part of Valgrind, a dynamic binary instrumentation 92019a976f07ff418dde2dfc7cc74667ef66d7764sewardj framework. 102019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1189ae8477745fd2a15453557d729a50e627325ee2sewardj Copyright IBM Corp. 2010-2013 122019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 132019a976f07ff418dde2dfc7cc74667ef66d7764sewardj This program is free software; you can redistribute it and/or 142019a976f07ff418dde2dfc7cc74667ef66d7764sewardj modify it under the terms of the GNU General Public License as 152019a976f07ff418dde2dfc7cc74667ef66d7764sewardj published by the Free Software Foundation; either version 2 of the 162019a976f07ff418dde2dfc7cc74667ef66d7764sewardj License, or (at your option) any later version. 172019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 182019a976f07ff418dde2dfc7cc74667ef66d7764sewardj This program is distributed in the hope that it will be useful, but 192019a976f07ff418dde2dfc7cc74667ef66d7764sewardj WITHOUT ANY WARRANTY; without even the implied warranty of 202019a976f07ff418dde2dfc7cc74667ef66d7764sewardj MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 212019a976f07ff418dde2dfc7cc74667ef66d7764sewardj General Public License for more details. 222019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 232019a976f07ff418dde2dfc7cc74667ef66d7764sewardj You should have received a copy of the GNU General Public License 242019a976f07ff418dde2dfc7cc74667ef66d7764sewardj along with this program; if not, write to the Free Software 252019a976f07ff418dde2dfc7cc74667ef66d7764sewardj Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 262019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 02110-1301, USA. 272019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 282019a976f07ff418dde2dfc7cc74667ef66d7764sewardj The GNU General Public License is contained in the file COPYING. 292019a976f07ff418dde2dfc7cc74667ef66d7764sewardj*/ 302019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 312019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#ifndef __LIBVEX_PUB_GUEST_S390X_H 322019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define __LIBVEX_PUB_GUEST_S390X_H 332019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 342019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#include "libvex_basictypes.h" 352019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 362019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 372019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Vex's representation of the s390 CPU state. ---*/ 382019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 392019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 402019a976f07ff418dde2dfc7cc74667ef66d7764sewardjtypedef struct { 412019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 422019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 432019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- ar registers ---*/ 442019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 452019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 462019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 0 */ UInt guest_a0; 472019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 4 */ UInt guest_a1; 482019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 8 */ UInt guest_a2; 492019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 12 */ UInt guest_a3; 502019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 16 */ UInt guest_a4; 512019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 20 */ UInt guest_a5; 522019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 24 */ UInt guest_a6; 532019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 28 */ UInt guest_a7; 542019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 32 */ UInt guest_a8; 552019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 36 */ UInt guest_a9; 562019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 40 */ UInt guest_a10; 572019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 44 */ UInt guest_a11; 582019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 48 */ UInt guest_a12; 592019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 52 */ UInt guest_a13; 602019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 56 */ UInt guest_a14; 612019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 60 */ UInt guest_a15; 622019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 632019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 642019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- fpr registers ---*/ 652019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 662019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 672019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 64 */ ULong guest_f0; 682019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 72 */ ULong guest_f1; 692019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 80 */ ULong guest_f2; 702019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 88 */ ULong guest_f3; 712019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 96 */ ULong guest_f4; 722019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 104 */ ULong guest_f5; 732019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 112 */ ULong guest_f6; 742019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 120 */ ULong guest_f7; 752019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 128 */ ULong guest_f8; 762019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 136 */ ULong guest_f9; 772019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 144 */ ULong guest_f10; 782019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 152 */ ULong guest_f11; 792019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 160 */ ULong guest_f12; 802019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 168 */ ULong guest_f13; 812019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 176 */ ULong guest_f14; 822019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 184 */ ULong guest_f15; 832019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 842019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 852019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- gpr registers ---*/ 862019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 872019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 882019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 192 */ ULong guest_r0; 892019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 200 */ ULong guest_r1; 902019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 208 */ ULong guest_r2; 912019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 216 */ ULong guest_r3; 922019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 224 */ ULong guest_r4; 932019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 232 */ ULong guest_r5; 942019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 240 */ ULong guest_r6; 952019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 248 */ ULong guest_r7; 962019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 256 */ ULong guest_r8; 972019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 264 */ ULong guest_r9; 982019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 272 */ ULong guest_r10; 992019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 280 */ ULong guest_r11; 1002019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 288 */ ULong guest_r12; 1012019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 296 */ ULong guest_r13; 1022019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 304 */ ULong guest_r14; 1032019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 312 */ ULong guest_r15; 1042019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1052019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1062019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- S390 miscellaneous registers ---*/ 1072019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1082019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1092019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 320 */ ULong guest_counter; 1102019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 328 */ UInt guest_fpc; 111b3940763c0b8b934b9d16ab38f47a3749e3e078fflorian /* 332 */ UChar unused[4]; /* 4-byte hole to get 8-byte alignment */ 1122019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 336 */ ULong guest_IA; 1132019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1142019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1152019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- S390 pseudo registers ---*/ 1162019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1172019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1182019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 344 */ ULong guest_SYSNO; 1192019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1202019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1212019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- 4-word thunk used to calculate the condition code ---*/ 1222019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1232019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1242019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 352 */ ULong guest_CC_OP; 1252019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 360 */ ULong guest_CC_DEP1; 1262019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 368 */ ULong guest_CC_DEP2; 1272019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 376 */ ULong guest_CC_NDEP; 1282019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1292019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1302019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Pseudo registers. Required by all architectures ---*/ 1312019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1322019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1332019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* See comments at bottom of libvex.h */ 1342019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 384 */ ULong guest_NRADDR; 13505f5e0172384dd2983fb16fbb7deebd74d71cd35sewardj /* 392 */ ULong guest_CMSTART; 13605f5e0172384dd2983fb16fbb7deebd74d71cd35sewardj /* 400 */ ULong guest_CMLEN; 1372019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1382019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* Used when backing up to restart a syscall that has 1392019a976f07ff418dde2dfc7cc74667ef66d7764sewardj been interrupted by a signal. See also comment in 1402019a976f07ff418dde2dfc7cc74667ef66d7764sewardj libvex_ir.h */ 1412019a976f07ff418dde2dfc7cc74667ef66d7764sewardj /* 408 */ ULong guest_IP_AT_SYSCALL; 1422019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1436ef84bed9bb3af22060eb1759788034602bbcc88florian /* Emulation notes; see comments in libvex_emnote.h */ 1446ef84bed9bb3af22060eb1759788034602bbcc88florian /* 416 */ UInt guest_EMNOTE; 1452019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1468844a6329d275814456e3a2a5a7bffac75da0957florian /* For translation chaining */ 1478844a6329d275814456e3a2a5a7bffac75da0957florian /* 420 */ UInt host_EvC_COUNTER; 1488844a6329d275814456e3a2a5a7bffac75da0957florian /* 424 */ ULong host_EvC_FAILADDR; 1498844a6329d275814456e3a2a5a7bffac75da0957florian 1502019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 15195a487bc73c0f8c9371ad500988a51c9e78ee34aflorian/*--- Force alignment to 16 bytes ---*/ 1522019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 15395a487bc73c0f8c9371ad500988a51c9e78ee34aflorian /* 432 */ UChar padding[0]; 1542019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 15595a487bc73c0f8c9371ad500988a51c9e78ee34aflorian /* 432 */ /* This is the size of the guest state */ 1562019a976f07ff418dde2dfc7cc74667ef66d7764sewardj} VexGuestS390XState; 1572019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1582019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1592019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1602019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Function prototypes ---*/ 1612019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1622019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1632019a976f07ff418dde2dfc7cc74667ef66d7764sewardjvoid LibVEX_GuestS390X_initialise(VexGuestS390XState *); 1642019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1652019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1662019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Dedicated registers ---*/ 1672019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/ 1682019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 169606878860623daa234c68fff81aade73059aaafbsewardj#define guest_LR guest_r14 /* Link register */ 170606878860623daa234c68fff81aade73059aaafbsewardj#define guest_SP guest_r15 /* Stack pointer */ 171606878860623daa234c68fff81aade73059aaafbsewardj#define guest_FP guest_r11 /* Frame pointer */ 1722019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1732019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*---------------------------------------------------------------*/ 1742019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- end libvex_guest_s390x.h ---*/ 1752019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*---------------------------------------------------------------*/ 1762019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1772019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#endif /* __LIBVEX_PUB_GUEST_S390X_H */ 178