Home | History | Annotate | Download | only in pub
      1 
      2 /*---------------------------------------------------------------*/
      3 /*--- begin                               libvex_trc_values.h ---*/
      4 /*---------------------------------------------------------------*/
      5 
      6 /*
      7    This file is part of Valgrind, a dynamic binary instrumentation
      8    framework.
      9 
     10    Copyright (C) 2004-2017 OpenWorks LLP
     11       info (at) open-works.net
     12 
     13    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.
     17 
     18    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
     26    02110-1301, USA.
     27 
     28    The GNU General Public License is contained in the file COPYING.
     29 
     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.
     34 */
     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.
     46 
     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.
     49 */
     50 
     51 #define VEX_TRC_JMP_INVALICACHE 61  /* invalidate icache (translations)
     52                                        before continuing */
     53 #define VEX_TRC_JMP_FLUSHDCACHE 103 /* flush dcache before continuing */
     54 
     55 #define VEX_TRC_JMP_NOREDIR    81  /* jump to undirected guest addr */
     56 #define VEX_TRC_JMP_SIGTRAP    85  /* deliver trap (SIGTRAP) before
     57                                       continuing */
     58 #define VEX_TRC_JMP_SIGSEGV    87  /* deliver segv (SIGSEGV) before
     59                                       continuing */
     60 #define VEX_TRC_JMP_SIGBUS     93  /* deliver SIGBUS before continuing */
     61 
     62 #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 
     68 #define VEX_TRC_JMP_SIGILL     101  /* deliver SIGILL (Illegal instruction)
     69                                        before continuing */
     70 
     71 #define VEX_TRC_JMP_EMWARN     63  /* deliver emulation warning before
     72                                       continuing */
     73 #define VEX_TRC_JMP_EMFAIL     83  /* emulation fatal error; abort system */
     74 
     75 #define VEX_TRC_JMP_CLIENTREQ  65  /* do a client req before continuing */
     76 #define VEX_TRC_JMP_YIELD      67  /* yield to thread sched
     77                                       before continuing */
     78 #define VEX_TRC_JMP_NODECODE   69  /* next instruction is not decodable */
     79 #define VEX_TRC_JMP_MAPFAIL    71  /* address translation failed */
     80 
     81 #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 */
     84 #define VEX_TRC_JMP_SYS_INT129   89 /* do syscall before continuing */
     85 #define VEX_TRC_JMP_SYS_INT130   91 /* do syscall before continuing */
     86 #define VEX_TRC_JMP_SYS_INT145  111 /* do syscall before continuing */
     87 #define VEX_TRC_JMP_SYS_INT210  113 /* do syscall before continuing */
     88 
     89 #define VEX_TRC_JMP_SYS_SYSENTER 79 /* do syscall before continuing */
     90 
     91 #define VEX_TRC_JMP_BORING       95 /* return to sched, but just
     92                                        keep going; no special action */
     93 
     94 #endif /* ndef __LIBVEX_TRC_VALUES_H */
     95 
     96 /*---------------------------------------------------------------*/
     97 /*---                                     libvex_trc_values.h ---*/
     98 /*---------------------------------------------------------------*/
     99