18844a6329d275814456e3a2a5a7bffac75da0957florian/* -*- mode: C; c-basic-offset: 3; -*- */ 22019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 32019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------------*/ 42019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Common defs for s390x libvex_s390x_common.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_S390X_H 322019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define __LIBVEX_PUB_S390X_H 332019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 342019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/* This file includes definitions for s390. 352019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 362019a976f07ff418dde2dfc7cc74667ef66d7764sewardj It must be suitable for inclusion in assembler source files. */ 372019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 382019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 392019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------*/ 402019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Dedicated registers ---*/ 412019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------*/ 422019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 432019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define S390_REGNO_RETURN_VALUE 2 448844a6329d275814456e3a2a5a7bffac75da0957florian#define S390_REGNO_TCHAIN_SCRATCH 12 452019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define S390_REGNO_GUEST_STATE_POINTER 13 462019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define S390_REGNO_LINK_REGISTER 14 472019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define S390_REGNO_STACK_POINTER 15 482019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 492019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 502019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------*/ 512019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Offsets in the stack frame allocated by the dispatcher ---*/ 522019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------*/ 532019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 54203b99870081208d57a7dc789220abec24ab5838florian/* Dispatcher will save 8 FPRs at offsets 160 + 0 ... 160 + 56 */ 55203b99870081208d57a7dc789220abec24ab5838florian 568844a6329d275814456e3a2a5a7bffac75da0957florian/* Where the dispatcher saves the r2 contents. */ 57203b99870081208d57a7dc789220abec24ab5838florian#define S390_OFFSET_SAVED_R2 160+80 581b2768a13b015c80aea0f80a364e1c26bd67c3c2florian 592019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/* Where client's FPC register is saved. */ 60203b99870081208d57a7dc789220abec24ab5838florian#define S390_OFFSET_SAVED_FPC_C 160+72 612019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 622019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/* Where valgrind's FPC register is saved. */ 63203b99870081208d57a7dc789220abec24ab5838florian#define S390_OFFSET_SAVED_FPC_V 160+64 642019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 653587828e8f4e5664fe02eebea435789655ac7625florian/* Size of frame allocated by VG_(disp_run_translations) 662019a976f07ff418dde2dfc7cc74667ef66d7764sewardj Need size for 672019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 8 FPRs 68203b99870081208d57a7dc789220abec24ab5838florian + 1 GPR (SAVED_R2) 692019a976f07ff418dde2dfc7cc74667ef66d7764sewardj + 2 FPCs (SAVED_FPC_C and SAVED_FPC_V). 702019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 712019a976f07ff418dde2dfc7cc74667ef66d7764sewardj Additionally, we need a standard frame for helper functions being called 722019a976f07ff418dde2dfc7cc74667ef66d7764sewardj from client code. (See figure 1-16 in zSeries ABI) */ 73203b99870081208d57a7dc789220abec24ab5838florian#define S390_INNERLOOP_FRAME_SIZE ((8+1+2)*8 + 160) 742019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 752019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 762019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------*/ 77aec8e057c2fa910eabc8e665ab63bc16badb3c27florian/*--- Facility bits ---*/ 78aec8e057c2fa910eabc8e665ab63bc16badb3c27florian/*--------------------------------------------------------------*/ 79aec8e057c2fa910eabc8e665ab63bc16badb3c27florian 80aec8e057c2fa910eabc8e665ab63bc16badb3c27florian/* The value of the macro is the number of the facility bit as per POP. */ 81aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_MSA 17 // message-security-assist 82aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_LDISP 18 // long displacement 83aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_HFPMAS 20 // HFP multiply-and-add-subtract 84aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_EIMM 21 // extended immediate 85aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_HFPUNX 23 // HFP unnormalized extension 86aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_ETF2 24 // ETF2-enhancement 87aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_STCKF 25 // store clock fast insn 88aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_PENH 26 // parsing-enhancement 89aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_ETF3 30 // ETF3-enhancement 90aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_XCPUT 31 // extract-CPU-time 91aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_GIE 34 // general insn extension 92aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_EXEXT 35 // execute extension 93aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_FPEXT 37 // floating-point extension 94aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_FPSE 41 // floating-point support enhancement 95aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_DFP 42 // decimal floating point 96aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_PFPO 44 // perform floating point operation insn 97aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_HIGHW 45 // high-word extension 98aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_LSC 45 // load/store on condition 99aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_DFPZC 48 // DFP zoned-conversion 100aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_MISC 49 // miscellaneous insn 101aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_CTREXE 50 // constrained transactional execution 102aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_TREXE 73 // transactional execution 103aec8e057c2fa910eabc8e665ab63bc16badb3c27florian#define S390_FAC_MSA4 77 // message-security-assist 4 104aec8e057c2fa910eabc8e665ab63bc16badb3c27florian 105aec8e057c2fa910eabc8e665ab63bc16badb3c27florian 106aec8e057c2fa910eabc8e665ab63bc16badb3c27florian/*--------------------------------------------------------------*/ 1072019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- Miscellaneous ---*/ 1082019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------*/ 1092019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1102019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/* Number of arguments that can be passed in registers */ 1112019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#define S390_NUM_GPRPARMS 5 1122019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 113933065d4f3548466da4666c5cfda7e5eaff93759florian/* Number of double words needed to store all facility bits. */ 114933065d4f3548466da4666c5cfda7e5eaff93759florian#define S390_NUM_FACILITY_DW 2 115933065d4f3548466da4666c5cfda7e5eaff93759florian 1162019a976f07ff418dde2dfc7cc74667ef66d7764sewardj#endif /* __LIBVEX_PUB_S390X_H */ 1172019a976f07ff418dde2dfc7cc74667ef66d7764sewardj 1182019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------------*/ 1192019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--- end libvex_s390x_common.h ---*/ 1202019a976f07ff418dde2dfc7cc74667ef66d7764sewardj/*--------------------------------------------------------------------*/ 121