1a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 2a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/*--------------------------------------------------------------------*/ 3a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/*--- Asm-only dispatcher stuff. pub_core_dispatch_asm.h ---*/ 4a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/*--------------------------------------------------------------------*/ 5a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 6a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/* 7a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn This file is part of Valgrind, a dynamic binary instrumentation 8a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn framework. 9a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 10b3a1e4bffbdbbf38304f216af405009868f43628sewardj Copyright (C) 2000-2015 Julian Seward 11a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn jseward@acm.org 12a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 13a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn This program is free software; you can redistribute it and/or 14a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn modify it under the terms of the GNU General Public License as 15a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn published by the Free Software Foundation; either version 2 of the 16a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn License, or (at your option) any later version. 17a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 18a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn This program is distributed in the hope that it will be useful, but 19a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn WITHOUT ANY WARRANTY; without even the implied warranty of 20a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn General Public License for more details. 22a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 23a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn You should have received a copy of the GNU General Public License 24a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn along with this program; if not, write to the Free Software 25a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 02111-1307, USA. 27a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 28a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn The GNU General Public License is contained in the file COPYING. 29a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn*/ 30a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 31a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn#ifndef __PUB_CORE_DISPATCH_ASM_H 32a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn#define __PUB_CORE_DISPATCH_ASM_H 33a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 34a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/* Magic values that the guest state might be set to when returning to the 35a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn dispatcher. The only other legitimate value is to point to the 36a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn start of the thread's VEX guest state. These also are return values from 37a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn from VG_(run_innerloop) to the scheduler. 38a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn*/ 39a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/* Defines values for JMP_EMWARN, JMP_SYSCALL, JMP_CLIENTREQ and 40a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn JMP_YIELD */ 41a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn#include "libvex_trc_values.h" 42a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 43a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/* And some more of our own. These must not have the same values as 44dc4f2e7e8cc8bc857af26071897712a325729110sewardj those from libvex_trc_values.h. (viz, 60 or below is safe). 45dc4f2e7e8cc8bc857af26071897712a325729110sewardj 46291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj (The following comment is no longer relevant, but is retained 47291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj for historical purposes.) 48dc4f2e7e8cc8bc857af26071897712a325729110sewardj These values *must* be odd (have bit 0 set) because the dispatchers 49dc4f2e7e8cc8bc857af26071897712a325729110sewardj (coregrind/m_dispatch/dispatch-*-*.S) use this fact to distinguish 50dc4f2e7e8cc8bc857af26071897712a325729110sewardj a TRC value from the unchanged baseblock pointer -- which has 0 as 51dc4f2e7e8cc8bc857af26071897712a325729110sewardj its lowest bit. 52dc4f2e7e8cc8bc857af26071897712a325729110sewardj*/ 53291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_BORING 29 /* no event; just keep going */ 54291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_INNER_FASTMISS 37 /* TRC only; means fast-cache miss. */ 55291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_INNER_COUNTERZERO 41 /* TRC only; means bb ctr == 0 */ 56291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_FAULT_SIGNAL 43 /* TRC only; got sigsegv/sigbus */ 57291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_INVARIANT_FAILED 47 /* TRC only; invariant violation */ 58291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_CHAIN_ME_TO_SLOW_EP 49 /* TRC only; chain to slow EP */ 59291849fb0285e0998b4c9e33eb153eb3373c4a88sewardj#define VG_TRC_CHAIN_ME_TO_FAST_EP 51 /* TRC only; chain to fast EP */ 60a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 61a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn#endif // __PUB_CORE_DISPATCH_ASM_H 62a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn 63a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/*--------------------------------------------------------------------*/ 64a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/*--- end ---*/ 65a733b5f6c4d6a7d7cb2b02446cab25249e881f4anjn/*--------------------------------------------------------------------*/ 66