blob: e46e0fba73a7b8a6a4536fb6f7b8d905c067ddbf [file] [log] [blame]
sewardjc4278f42004-11-26 13:18:19 +00001
2/*---------------------------------------------------------------*/
sewardj752f9062010-05-03 21:38:49 +00003/*--- begin libvex_trc_values.h ---*/
sewardjc4278f42004-11-26 13:18:19 +00004/*---------------------------------------------------------------*/
5
6/*
sewardj752f9062010-05-03 21:38:49 +00007 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
sewardjc4278f42004-11-26 13:18:19 +00009
Elliott Hughesed398002017-06-21 14:41:24 -070010 Copyright (C) 2004-2017 OpenWorks LLP
sewardj752f9062010-05-03 21:38:49 +000011 info@open-works.net
sewardjc4278f42004-11-26 13:18:19 +000012
sewardj752f9062010-05-03 21:38:49 +000013 This program is free software; you can redistribute it and/or
14 modify it under the terms of the GNU General Public License as
15 published by the Free Software Foundation; either version 2 of the
16 License, or (at your option) any later version.
sewardjc4278f42004-11-26 13:18:19 +000017
sewardj752f9062010-05-03 21:38:49 +000018 This program is distributed in the hope that it will be useful, but
19 WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
sewardj7bd6ffe2005-08-03 16:07:36 +000026 02110-1301, USA.
27
sewardj752f9062010-05-03 21:38:49 +000028 The GNU General Public License is contained in the file COPYING.
sewardjc4278f42004-11-26 13:18:19 +000029
30 Neither the names of the U.S. Department of Energy nor the
31 University of California nor the names of its contributors may be
32 used to endorse or promote products derived from this software
33 without prior written permission.
sewardjc4278f42004-11-26 13:18:19 +000034*/
35
36#ifndef __LIBVEX_TRC_VALUES_H
37#define __LIBVEX_TRC_VALUES_H
38
39
40/* Magic values that the guest state pointer might be set to when
41 returning to the dispatcher. The only other legitimate value is to
42 point to the start of the thread's VEX guest state.
43
44 This file may get included in assembly code, so do not put
45 C-specific constructs in it.
sewardj9dd9cf12006-01-20 14:13:55 +000046
47 These values should be 61 or above so as not to conflict
48 with Valgrind's VG_TRC_ values, which are 60 or below.
sewardjc4278f42004-11-26 13:18:19 +000049*/
sewardj7ce9d152005-03-15 16:54:13 +000050
sewardj05f5e012014-05-04 10:52:11 +000051#define VEX_TRC_JMP_INVALICACHE 61 /* invalidate icache (translations)
52 before continuing */
sewardj65902992014-05-03 21:20:56 +000053#define VEX_TRC_JMP_FLUSHDCACHE 103 /* flush dcache before continuing */
54
sewardjce02aa72006-01-12 12:27:58 +000055#define VEX_TRC_JMP_NOREDIR 81 /* jump to undirected guest addr */
sewardj0f500042007-08-29 09:09:17 +000056#define VEX_TRC_JMP_SIGTRAP 85 /* deliver trap (SIGTRAP) before
57 continuing */
58#define VEX_TRC_JMP_SIGSEGV 87 /* deliver segv (SIGSEGV) before
sewardj334870d2006-02-07 16:42:39 +000059 continuing */
sewardje9d8a262009-07-01 08:06:34 +000060#define VEX_TRC_JMP_SIGBUS 93 /* deliver SIGBUS before continuing */
61
petarja6a19862012-10-19 14:55:58 +000062#define VEX_TRC_JMP_SIGFPE_INTDIV 97 /* deliver SIGFPE (integer divide
63 by zero) before continuing */
64
65#define VEX_TRC_JMP_SIGFPE_INTOVF 99 /* deliver SIGFPE (integer overflow)
66 before continuing */
67
dejanj0e006f22014-02-19 11:56:29 +000068#define VEX_TRC_JMP_SIGILL 101 /* deliver SIGILL (Illegal instruction)
69 before continuing */
70
sewardj4fa325a2005-11-03 13:27:24 +000071#define VEX_TRC_JMP_EMWARN 63 /* deliver emulation warning before
sewardj893aada2004-11-29 19:57:54 +000072 continuing */
sewardj9dd9cf12006-01-20 14:13:55 +000073#define VEX_TRC_JMP_EMFAIL 83 /* emulation fatal error; abort system */
74
sewardj4fa325a2005-11-03 13:27:24 +000075#define VEX_TRC_JMP_CLIENTREQ 65 /* do a client req before continuing */
76#define VEX_TRC_JMP_YIELD 67 /* yield to thread sched
sewardjc4278f42004-11-26 13:18:19 +000077 before continuing */
sewardj4fa325a2005-11-03 13:27:24 +000078#define VEX_TRC_JMP_NODECODE 69 /* next instruction is not decodable */
79#define VEX_TRC_JMP_MAPFAIL 71 /* address translation failed */
sewardj52444cb2004-12-13 14:09:01 +000080
sewardj4fa325a2005-11-03 13:27:24 +000081#define VEX_TRC_JMP_SYS_SYSCALL 73 /* do syscall before continuing */
82#define VEX_TRC_JMP_SYS_INT32 75 /* do syscall before continuing */
83#define VEX_TRC_JMP_SYS_INT128 77 /* do syscall before continuing */
sewardjd660d412008-12-03 21:29:59 +000084#define VEX_TRC_JMP_SYS_INT129 89 /* do syscall before continuing */
85#define VEX_TRC_JMP_SYS_INT130 91 /* do syscall before continuing */
sewardj3e5d82d2015-07-21 14:43:23 +000086#define VEX_TRC_JMP_SYS_INT145 111 /* do syscall before continuing */
87#define VEX_TRC_JMP_SYS_INT210 113 /* do syscall before continuing */
sewardjd660d412008-12-03 21:29:59 +000088
sewardj4fa325a2005-11-03 13:27:24 +000089#define VEX_TRC_JMP_SYS_SYSENTER 79 /* do syscall before continuing */
sewardjc4278f42004-11-26 13:18:19 +000090
sewardjc6f970f2012-04-02 21:54:49 +000091#define VEX_TRC_JMP_BORING 95 /* return to sched, but just
92 keep going; no special action */
93
sewardjc4278f42004-11-26 13:18:19 +000094#endif /* ndef __LIBVEX_TRC_VALUES_H */
95
96/*---------------------------------------------------------------*/
97/*--- libvex_trc_values.h ---*/
98/*---------------------------------------------------------------*/