10de80192f57cd132b31b233c65734de04939ce65sewardj 20de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 30de80192f57cd132b31b233c65734de04939ce65sewardj/*--- begin libvex_guest_tilegx.h ---*/ 40de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 50de80192f57cd132b31b233c65734de04939ce65sewardj 60de80192f57cd132b31b233c65734de04939ce65sewardj/* 70de80192f57cd132b31b233c65734de04939ce65sewardj This file is part of Valgrind, a dynamic binary instrumentation 80de80192f57cd132b31b233c65734de04939ce65sewardj framework. 90de80192f57cd132b31b233c65734de04939ce65sewardj 10785952d4bf502fa756b2ac58595fd31fe0f88559sewardj Copyright (C) 2010-2015 Tilera Corp. 110de80192f57cd132b31b233c65734de04939ce65sewardj 120de80192f57cd132b31b233c65734de04939ce65sewardj This program is free software; you can redistribute it and/or 130de80192f57cd132b31b233c65734de04939ce65sewardj modify it under the terms of the GNU General Public License as 140de80192f57cd132b31b233c65734de04939ce65sewardj published by the Free Software Foundation; either version 2 of the 150de80192f57cd132b31b233c65734de04939ce65sewardj License, or (at your option) any later version. 160de80192f57cd132b31b233c65734de04939ce65sewardj 170de80192f57cd132b31b233c65734de04939ce65sewardj This program is distributed in the hope that it will be useful, but 180de80192f57cd132b31b233c65734de04939ce65sewardj WITHOUT ANY WARRANTY; without even the implied warranty of 190de80192f57cd132b31b233c65734de04939ce65sewardj MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 200de80192f57cd132b31b233c65734de04939ce65sewardj General Public License for more details. 210de80192f57cd132b31b233c65734de04939ce65sewardj 220de80192f57cd132b31b233c65734de04939ce65sewardj You should have received a copy of the GNU General Public License 230de80192f57cd132b31b233c65734de04939ce65sewardj along with this program; if not, write to the Free Software 240de80192f57cd132b31b233c65734de04939ce65sewardj Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 250de80192f57cd132b31b233c65734de04939ce65sewardj 02111-1307, USA. 260de80192f57cd132b31b233c65734de04939ce65sewardj 270de80192f57cd132b31b233c65734de04939ce65sewardj The GNU General Public License is contained in the file COPYING. 280de80192f57cd132b31b233c65734de04939ce65sewardj*/ 290de80192f57cd132b31b233c65734de04939ce65sewardj 300de80192f57cd132b31b233c65734de04939ce65sewardj/* Contributed by Zhi-Gang Liu <zliu at tilera dot com> */ 310de80192f57cd132b31b233c65734de04939ce65sewardj 320de80192f57cd132b31b233c65734de04939ce65sewardj#ifndef __LIBVEX_PUB_GUEST_TILEGX_H 330de80192f57cd132b31b233c65734de04939ce65sewardj#define __LIBVEX_PUB_GUEST_TILEGX_H 340de80192f57cd132b31b233c65734de04939ce65sewardj 350de80192f57cd132b31b233c65734de04939ce65sewardj#include "libvex_basictypes.h" 360de80192f57cd132b31b233c65734de04939ce65sewardj#include "libvex_emnote.h" 370de80192f57cd132b31b233c65734de04939ce65sewardj 380de80192f57cd132b31b233c65734de04939ce65sewardj#undef TILEGX_DEBUG 390de80192f57cd132b31b233c65734de04939ce65sewardj 400de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 410de80192f57cd132b31b233c65734de04939ce65sewardj/*--- Vex's representation of the tilegx CPU state. ---*/ 420de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 430de80192f57cd132b31b233c65734de04939ce65sewardj 440de80192f57cd132b31b233c65734de04939ce65sewardjtypedef ULong ULONG; 450de80192f57cd132b31b233c65734de04939ce65sewardj 460de80192f57cd132b31b233c65734de04939ce65sewardjtypedef 470de80192f57cd132b31b233c65734de04939ce65sewardjstruct { 480de80192f57cd132b31b233c65734de04939ce65sewardj /* CPU Registers */ 490de80192f57cd132b31b233c65734de04939ce65sewardj /* 0 */ ULONG guest_r0; 500de80192f57cd132b31b233c65734de04939ce65sewardj /* 8 */ ULONG guest_r1; 510de80192f57cd132b31b233c65734de04939ce65sewardj /* 16 */ ULONG guest_r2; 520de80192f57cd132b31b233c65734de04939ce65sewardj /* 24 */ ULONG guest_r3; 530de80192f57cd132b31b233c65734de04939ce65sewardj /* 32 */ ULONG guest_r4; 540de80192f57cd132b31b233c65734de04939ce65sewardj /* 40 */ ULONG guest_r5; 550de80192f57cd132b31b233c65734de04939ce65sewardj /* 48 */ ULONG guest_r6; 560de80192f57cd132b31b233c65734de04939ce65sewardj /* 56 */ ULONG guest_r7; 570de80192f57cd132b31b233c65734de04939ce65sewardj /* 64 */ ULONG guest_r8; 580de80192f57cd132b31b233c65734de04939ce65sewardj /* 72 */ ULONG guest_r9; 590de80192f57cd132b31b233c65734de04939ce65sewardj /* 80 */ ULONG guest_r10; 600de80192f57cd132b31b233c65734de04939ce65sewardj /* 88 */ ULONG guest_r11; 610de80192f57cd132b31b233c65734de04939ce65sewardj /* 96 */ ULONG guest_r12; 620de80192f57cd132b31b233c65734de04939ce65sewardj /* 104 */ ULONG guest_r13; 630de80192f57cd132b31b233c65734de04939ce65sewardj /* 112 */ ULONG guest_r14; 640de80192f57cd132b31b233c65734de04939ce65sewardj /* 120 */ ULONG guest_r15; 650de80192f57cd132b31b233c65734de04939ce65sewardj /* 128 */ ULONG guest_r16; 660de80192f57cd132b31b233c65734de04939ce65sewardj /* 136 */ ULONG guest_r17; 670de80192f57cd132b31b233c65734de04939ce65sewardj /* 144 */ ULONG guest_r18; 680de80192f57cd132b31b233c65734de04939ce65sewardj /* 152 */ ULONG guest_r19; 690de80192f57cd132b31b233c65734de04939ce65sewardj /* 160 */ ULONG guest_r20; 700de80192f57cd132b31b233c65734de04939ce65sewardj /* 168 */ ULONG guest_r21; 710de80192f57cd132b31b233c65734de04939ce65sewardj /* 176 */ ULONG guest_r22; 720de80192f57cd132b31b233c65734de04939ce65sewardj /* 184 */ ULONG guest_r23; 730de80192f57cd132b31b233c65734de04939ce65sewardj /* 192 */ ULONG guest_r24; 740de80192f57cd132b31b233c65734de04939ce65sewardj /* 200 */ ULONG guest_r25; 750de80192f57cd132b31b233c65734de04939ce65sewardj /* 208 */ ULONG guest_r26; 760de80192f57cd132b31b233c65734de04939ce65sewardj /* 216 */ ULONG guest_r27; 770de80192f57cd132b31b233c65734de04939ce65sewardj /* 224 */ ULONG guest_r28; 780de80192f57cd132b31b233c65734de04939ce65sewardj /* 232 */ ULONG guest_r29; 790de80192f57cd132b31b233c65734de04939ce65sewardj /* 240 */ ULONG guest_r30; 800de80192f57cd132b31b233c65734de04939ce65sewardj /* 248 */ ULONG guest_r31; 810de80192f57cd132b31b233c65734de04939ce65sewardj /* 256 */ ULONG guest_r32; 820de80192f57cd132b31b233c65734de04939ce65sewardj /* 264 */ ULONG guest_r33; 830de80192f57cd132b31b233c65734de04939ce65sewardj /* 272 */ ULONG guest_r34; 840de80192f57cd132b31b233c65734de04939ce65sewardj /* 280 */ ULONG guest_r35; 850de80192f57cd132b31b233c65734de04939ce65sewardj /* 288 */ ULONG guest_r36; 860de80192f57cd132b31b233c65734de04939ce65sewardj /* 296 */ ULONG guest_r37; 870de80192f57cd132b31b233c65734de04939ce65sewardj /* 304 */ ULONG guest_r38; 880de80192f57cd132b31b233c65734de04939ce65sewardj /* 312 */ ULONG guest_r39; 890de80192f57cd132b31b233c65734de04939ce65sewardj /* 320 */ ULONG guest_r40; 900de80192f57cd132b31b233c65734de04939ce65sewardj /* 328 */ ULONG guest_r41; 910de80192f57cd132b31b233c65734de04939ce65sewardj /* 336 */ ULONG guest_r42; 920de80192f57cd132b31b233c65734de04939ce65sewardj /* 344 */ ULONG guest_r43; 930de80192f57cd132b31b233c65734de04939ce65sewardj /* 352 */ ULONG guest_r44; 940de80192f57cd132b31b233c65734de04939ce65sewardj /* 360 */ ULONG guest_r45; 950de80192f57cd132b31b233c65734de04939ce65sewardj /* 368 */ ULONG guest_r46; 960de80192f57cd132b31b233c65734de04939ce65sewardj /* 376 */ ULONG guest_r47; 970de80192f57cd132b31b233c65734de04939ce65sewardj /* 384 */ ULONG guest_r48; 980de80192f57cd132b31b233c65734de04939ce65sewardj /* 392 */ ULONG guest_r49; 990de80192f57cd132b31b233c65734de04939ce65sewardj /* 400 */ ULONG guest_r50; 1000de80192f57cd132b31b233c65734de04939ce65sewardj /* 408 */ ULONG guest_r51; 1010de80192f57cd132b31b233c65734de04939ce65sewardj /* 416 */ ULONG guest_r52; /* FP */ 1020de80192f57cd132b31b233c65734de04939ce65sewardj /* 424 */ ULONG guest_r53; 1030de80192f57cd132b31b233c65734de04939ce65sewardj /* 432 */ ULONG guest_r54; /* SP */ 1040de80192f57cd132b31b233c65734de04939ce65sewardj /* 440 */ ULONG guest_r55; /* LR */ 1050de80192f57cd132b31b233c65734de04939ce65sewardj /* 448 */ ULONG guest_r56; /* zero */ 1060de80192f57cd132b31b233c65734de04939ce65sewardj /* 456 */ ULONG guest_r57; /* Reserved */ 1070de80192f57cd132b31b233c65734de04939ce65sewardj /* 464 */ ULONG guest_r58; /* Reserved */ 1080de80192f57cd132b31b233c65734de04939ce65sewardj /* 472 */ ULONG guest_r59; /* Reserved */ 1090de80192f57cd132b31b233c65734de04939ce65sewardj /* 480 */ ULONG guest_r60; /* Reserved */ 1100de80192f57cd132b31b233c65734de04939ce65sewardj /* 488 */ ULONG guest_r61; /* Reserved */ 1110de80192f57cd132b31b233c65734de04939ce65sewardj /* 496 */ ULONG guest_r62; /* Reserved */ 1120de80192f57cd132b31b233c65734de04939ce65sewardj /* 504 */ ULONG guest_r63; /* Reserved */ 1130de80192f57cd132b31b233c65734de04939ce65sewardj /* 512 */ ULONG guest_pc; 1140de80192f57cd132b31b233c65734de04939ce65sewardj /* 520 */ ULONG guest_spare; /* Reserved */ 1150de80192f57cd132b31b233c65734de04939ce65sewardj /* 528 */ ULONG guest_EMNOTE; 1160de80192f57cd132b31b233c65734de04939ce65sewardj /* 536 */ ULONG guest_CMSTART; 1170de80192f57cd132b31b233c65734de04939ce65sewardj /* 544 */ ULONG guest_CMLEN; 1180de80192f57cd132b31b233c65734de04939ce65sewardj /* 552 */ ULONG guest_NRADDR; 1190de80192f57cd132b31b233c65734de04939ce65sewardj /* 560 */ ULong guest_cmpexch; 1200de80192f57cd132b31b233c65734de04939ce65sewardj /* 568 */ ULong guest_zero; 1210de80192f57cd132b31b233c65734de04939ce65sewardj /* 576 */ ULong guest_ex_context_0; 1220de80192f57cd132b31b233c65734de04939ce65sewardj /* 584 */ ULong guest_ex_context_1; 1230de80192f57cd132b31b233c65734de04939ce65sewardj /* 592 */ ULong host_EvC_FAILADDR; 1240de80192f57cd132b31b233c65734de04939ce65sewardj /* 600 */ ULong host_EvC_COUNTER; 1250de80192f57cd132b31b233c65734de04939ce65sewardj /* 608 */ ULong guest_COND; 1260de80192f57cd132b31b233c65734de04939ce65sewardj /* 616 */ ULong PAD; 1270de80192f57cd132b31b233c65734de04939ce65sewardj 1280de80192f57cd132b31b233c65734de04939ce65sewardj} VexGuestTILEGXState; 1290de80192f57cd132b31b233c65734de04939ce65sewardj 1300de80192f57cd132b31b233c65734de04939ce65sewardj#define OFFSET_tilegx_r(_N) (8 * (_N)) 1310de80192f57cd132b31b233c65734de04939ce65sewardj 1320de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 1330de80192f57cd132b31b233c65734de04939ce65sewardj/*--- Utility functions for TILEGX guest stuff. ---*/ 1340de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 1350de80192f57cd132b31b233c65734de04939ce65sewardj 1360de80192f57cd132b31b233c65734de04939ce65sewardj/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */ 1370de80192f57cd132b31b233c65734de04939ce65sewardj 1380de80192f57cd132b31b233c65734de04939ce65sewardj/* Initialise all guest TILEGX state. */ 1390de80192f57cd132b31b233c65734de04939ce65sewardj 1400de80192f57cd132b31b233c65734de04939ce65sewardjextern 1410de80192f57cd132b31b233c65734de04939ce65sewardjvoid LibVEX_GuestTILEGX_initialise ( /*OUT*/VexGuestTILEGXState* vex_state ); 1420de80192f57cd132b31b233c65734de04939ce65sewardj 1430de80192f57cd132b31b233c65734de04939ce65sewardj 1440de80192f57cd132b31b233c65734de04939ce65sewardj#endif /* __LIBVEX_PUB_GUEST_TILEGX_H */ 1450de80192f57cd132b31b233c65734de04939ce65sewardj 1460de80192f57cd132b31b233c65734de04939ce65sewardj 1470de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 1480de80192f57cd132b31b233c65734de04939ce65sewardj/*--- libvex_guest_tilegx.h ---*/ 1490de80192f57cd132b31b233c65734de04939ce65sewardj/*---------------------------------------------------------------*/ 150