libvex_guest_s390x.h revision b3940763c0b8b934b9d16ab38f47a3749e3e078f
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
112019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   Copyright IBM Corp. 2010-2011
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#include "libvex_emwarn.h"
362019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
372019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
382019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Vex's representation of the s390 CPU state.          ---*/
392019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
402019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
412019a976f07ff418dde2dfc7cc74667ef66d7764sewardjtypedef struct {
422019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
432019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
442019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- ar registers                                         ---*/
452019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
462019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
472019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*    0 */  UInt guest_a0;
482019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*    4 */  UInt guest_a1;
492019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*    8 */  UInt guest_a2;
502019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   12 */  UInt guest_a3;
512019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   16 */  UInt guest_a4;
522019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   20 */  UInt guest_a5;
532019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   24 */  UInt guest_a6;
542019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   28 */  UInt guest_a7;
552019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   32 */  UInt guest_a8;
562019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   36 */  UInt guest_a9;
572019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   40 */  UInt guest_a10;
582019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   44 */  UInt guest_a11;
592019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   48 */  UInt guest_a12;
602019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   52 */  UInt guest_a13;
612019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   56 */  UInt guest_a14;
622019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   60 */  UInt guest_a15;
632019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
642019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
652019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- fpr registers                                        ---*/
662019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
672019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
682019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   64 */  ULong guest_f0;
692019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   72 */  ULong guest_f1;
702019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   80 */  ULong guest_f2;
712019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   88 */  ULong guest_f3;
722019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*   96 */  ULong guest_f4;
732019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  104 */  ULong guest_f5;
742019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  112 */  ULong guest_f6;
752019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  120 */  ULong guest_f7;
762019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  128 */  ULong guest_f8;
772019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  136 */  ULong guest_f9;
782019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  144 */  ULong guest_f10;
792019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  152 */  ULong guest_f11;
802019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  160 */  ULong guest_f12;
812019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  168 */  ULong guest_f13;
822019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  176 */  ULong guest_f14;
832019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  184 */  ULong guest_f15;
842019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
852019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
862019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- gpr registers                                        ---*/
872019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
882019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
892019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  192 */  ULong guest_r0;
902019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  200 */  ULong guest_r1;
912019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  208 */  ULong guest_r2;
922019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  216 */  ULong guest_r3;
932019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  224 */  ULong guest_r4;
942019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  232 */  ULong guest_r5;
952019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  240 */  ULong guest_r6;
962019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  248 */  ULong guest_r7;
972019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  256 */  ULong guest_r8;
982019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  264 */  ULong guest_r9;
992019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  272 */  ULong guest_r10;
1002019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  280 */  ULong guest_r11;
1012019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  288 */  ULong guest_r12;
1022019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  296 */  ULong guest_r13;
1032019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  304 */  ULong guest_r14;
1042019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  312 */  ULong guest_r15;
1052019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1062019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1072019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- S390 miscellaneous registers                         ---*/
1082019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1092019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1102019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  320 */  ULong guest_counter;
1112019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  328 */  UInt guest_fpc;
112b3940763c0b8b934b9d16ab38f47a3749e3e078fflorian   /*  332 */  UChar unused[4]; /* 4-byte hole to get 8-byte alignment */
1132019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  336 */  ULong guest_IA;
1142019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1152019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1162019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- S390 pseudo registers                                ---*/
1172019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1182019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1192019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  344 */  ULong guest_SYSNO;
1202019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1212019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1222019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- 4-word thunk used to calculate the condition code    ---*/
1232019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1242019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1252019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  352 */  ULong guest_CC_OP;
1262019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  360 */  ULong guest_CC_DEP1;
1272019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  368 */  ULong guest_CC_DEP2;
1282019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  376 */  ULong guest_CC_NDEP;
1292019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1302019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1312019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Pseudo registers. Required by all architectures      ---*/
1322019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1332019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1342019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /* See comments at bottom of libvex.h */
1352019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  384 */  ULong guest_NRADDR;
1362019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  392 */  ULong guest_TISTART;
1372019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  400 */  ULong guest_TILEN;
1382019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1392019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /* Used when backing up to restart a syscall that has
1402019a976f07ff418dde2dfc7cc74667ef66d7764sewardj      been interrupted by a signal. See also comment in
1412019a976f07ff418dde2dfc7cc74667ef66d7764sewardj      libvex_ir.h */
1422019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  408 */  ULong guest_IP_AT_SYSCALL;
1432019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1442019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /* Emulation warnings; see comments in libvex_emwarn.h */
1452019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  416 */  UInt guest_EMWARN;
1462019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1472019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1482019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Force alignment to 16 bytes                          ---*/
1492019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1502019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  420 */  UChar padding[12];
1512019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1522019a976f07ff418dde2dfc7cc74667ef66d7764sewardj   /*  432 */  /* This is the size of the guest state */
1532019a976f07ff418dde2dfc7cc74667ef66d7764sewardj} VexGuestS390XState;
1542019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1552019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1562019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1572019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Function prototypes                                  ---*/
1582019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1592019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1602019a976f07ff418dde2dfc7cc74667ef66d7764sewardjvoid LibVEX_GuestS390X_initialise(VexGuestS390XState *);
1612019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1622019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1632019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Dedicated registers                                  ---*/
1642019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*------------------------------------------------------------*/
1652019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1662019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define guest_LR guest_r14  /* Link register */
1672019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define guest_SP guest_r15  /* Stack pointer */
1682019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define guest_FP guest_r11  /* Frame pointer */
1692019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1702019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*---------------------------------------------------------------*/
1712019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- end                                libvex_guest_s390x.h ---*/
1722019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*---------------------------------------------------------------*/
1732019a976f07ff418dde2dfc7cc74667ef66d7764sewardj
1742019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#endif /* __LIBVEX_PUB_GUEST_S390X_H */
175