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