1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- begin libvex_guest_arm.h ---*/ 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This file is part of Valgrind, a dynamic binary instrumentation 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown framework. 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov Copyright (C) 2004-2013 OpenWorks LLP 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown info@open-works.net 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is free software; you can redistribute it and/or 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown modify it under the terms of the GNU General Public License as 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown published by the Free Software Foundation; either version 2 of the 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown License, or (at your option) any later version. 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is distributed in the hope that it will be useful, but 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown WITHOUT ANY WARRANTY; without even the implied warranty of 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown General Public License for more details. 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown You should have received a copy of the GNU General Public License 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown along with this program; if not, write to the Free Software 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 02110-1301, USA. 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The GNU General Public License is contained in the file COPYING. 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/ 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef __LIBVEX_PUB_GUEST_ARM_H 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define __LIBVEX_PUB_GUEST_ARM_H 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "libvex_basictypes.h" 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- Vex's representation of the ARM CPU state. ---*/ 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct { 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* 0 */ 44663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng /* Event check fail addr and counter. */ 45663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng UInt host_EvC_FAILADDR; /* 0 */ 46663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng UInt host_EvC_COUNTER; /* 4 */ 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R0; 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R1; 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R2; 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R3; 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R4; 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R5; 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R6; 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R7; 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R8; 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R9; 57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R10; 58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R11; 59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R12; 60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R13; /* stack pointer */ 61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R14; /* link register */ 62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_R15T; 63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* program counter[31:1] ++ [T], encoding both the current 64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown instruction address and the ARM vs Thumb state of the 65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown machine. T==1 is Thumb, T==0 is ARM. Hence values of the 66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown form X--(31)--X1 denote a Thumb instruction at location 67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown X--(31)--X0, values of the form X--(30)--X00 denote an ARM 68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown instruction at precisely that address, and values of the form 69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown X--(30)--10 are invalid since they would imply an ARM 70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown instruction at a non-4-aligned address. */ 71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* 4-word thunk used to calculate N(sign) Z(zero) C(carry, 73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned overflow) and V(signed overflow) flags. */ 74663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng /* 72 */ 75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_CC_OP; 76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_CC_DEP1; 77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_CC_DEP2; 78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_CC_NDEP; 79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* A 32-bit value which is used to compute the APSR.Q (sticky 81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown saturation) flag, when necessary. If the value stored here 82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown is zero, APSR.Q is currently zero. If it is any other value, 83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown APSR.Q is currently one. */ 84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_QFLAG32; 85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* 32-bit values to represent APSR.GE0 .. GE3. Same 87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown zero-vs-nonzero scheme as for QFLAG32. */ 88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_GEFLAG0; 89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_GEFLAG1; 90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_GEFLAG2; 91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_GEFLAG3; 92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* Various pseudo-regs mandated by Vex or Valgrind. */ 94436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* Emulation notes */ 95436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov UInt guest_EMNOTE; 96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 97eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov /* For clinval/clflush: record start and length of area */ 98eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov UInt guest_CMSTART; 99eb0bae136f4eeaaf29761dddb148b118fb824632Dmitriy Ivanov UInt guest_CMLEN; 100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* Used to record the unredirected guest address at the start of 102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown a translation whose start has been redirected. By reading 103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown this pseudo-register shortly afterwards, the translation can 104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown find out what the corresponding no-redirection address was. 105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Note, this is only set for wrap-style redirects, not for 106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown replace-style ones. */ 107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_NRADDR; 108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* Needed for Darwin (but mandated for all guest architectures): 110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown program counter at the last syscall insn (int 0x80/81/82, 111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown sysenter, syscall, svc). Used when backing up to restart a 112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown syscall that has been interrupted by a signal. */ 113663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng /* 124 */ 114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_IP_AT_SYSCALL; 115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* VFP state. D0 .. D15 must be 8-aligned. */ 117663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng /* 128 */ 118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D0; 119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D1; 120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D2; 121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D3; 122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D4; 123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D5; 124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D6; 125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D7; 126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D8; 127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D9; 128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D10; 129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D11; 130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D12; 131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D13; 132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D14; 133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D15; 134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D16; 135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D17; 136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D18; 137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D19; 138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D20; 139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D21; 140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D22; 141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D23; 142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D24; 143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D25; 144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D26; 145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D27; 146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D28; 147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D29; 148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D30; 149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong guest_D31; 150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_FPSCR; 151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* Not a town in Cornwall, but instead the TPIDRURO, on of the 153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Thread ID registers present in CP15 (the system control 154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown coprocessor), register set "c13", register 3 (the User 155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Read-only Thread ID Register). arm-linux apparently uses it 156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown to hold the TLS pointer for the thread. It's read-only in 157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown user space. On Linux it is set in user space by various 158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown thread-related syscalls. */ 159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_TPIDRURO; 160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown /* Representation of the Thumb IT state. ITSTATE is a 32-bit 162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown value with 4 8-bit lanes. [7:0] pertain to the next insn to 163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown execute, [15:8] for the one after that, etc. The per-insn 164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown update to ITSTATE is to unsignedly shift it right 8 bits, 165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown hence introducing a zero byte for the furthest ahead 166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown instruction. As per the next para, a zero byte denotes the 167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown condition ALWAYS. 168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Each byte lane has one of the two following formats: 170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown cccc 0001 for an insn which is part of an IT block. cccc is 172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown the guarding condition (standard ARM condition 173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown code) XORd with 0xE, so as to cause 'cccc == 0' 174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown to encode the condition ALWAYS. 175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 0000 0000 for an insn which is not part of an IT block. 177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown If the bottom 4 bits are zero then the top 4 must be too. 179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Given the byte lane for an instruction, the guarding 181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown condition for the instruction is (((lane >> 4) & 0xF) ^ 0xE). 182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This is not as stupid as it sounds, because the front end 183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown elides the shift. And the am-I-in-an-IT-block check is 184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown (lane != 0). 185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown In the case where (by whatever means) we know at JIT time 187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown that an instruction is not in an IT block, we can prefix its 188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown IR with assignments ITSTATE = 0 and hence have iropt fold out 189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown the testing code. 190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The condition "is outside or last in IT block" corresponds 192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown to the top 24 bits of ITSTATE being zero. 193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown */ 194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt guest_ITSTATE; 195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 196436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* Padding to make it have an 16-aligned size */ 197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown UInt padding1; 198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VexGuestARMState; 200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- Utility functions for ARM guest stuff. ---*/ 204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */ 207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Initialise all guest ARM state. */ 209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern 211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid LibVEX_GuestARM_initialise ( /*OUT*/VexGuestARMState* vex_state ); 212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Calculate the ARM flag state from the saved data. */ 214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern 216436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy IvanovUInt LibVEX_GuestARM_get_cpsr ( /*IN*/const VexGuestARMState* vex_state ); 217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif /* ndef __LIBVEX_PUB_GUEST_ARM_H */ 220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- libvex_guest_arm.h ---*/ 224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*---------------------------------------------------------------*/ 225