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