modified guest state ptr */
/* Has the guest state pointer been messed with? If yes, exit. */
- ldr r1, [sp, #0]
movw r3, #:lower16:VG_(dispatch_ctr)
+ tst r8, #1
- cmp r8, r1
movt r3, #:upper16:VG_(dispatch_ctr)
bne gsp_changed
modified guest state ptr */
/* Has the guest state pointer been messed with? If yes, exit. */
- ldr r1, [sp, #0]
movw r3, #:lower16:VG_(dispatch_ctr)
+ tst r8, #1
- cmp r8, r1
movt r3, #:upper16:VG_(dispatch_ctr)
bne gsp_changed
#include "libvex_trc_values.h"
/* And some more of our own. These must not have the same values as
- those from libvex_trc_values.h. (viz, 60 or below is safe). */
+ those from libvex_trc_values.h. (viz, 60 or below is safe).
+
+ These values *must* be odd (have bit 0 set) because the dispatchers
+ (coregrind/m_dispatch/dispatch-*-*.S) use this fact to distinguish
+ a TRC value from the unchanged baseblock pointer -- which has 0 as
+ its lowest bit.
+*/
#define VG_TRC_BORING 29 /* no event; just keep going */
#define VG_TRC_INNER_FASTMISS 37 /* TRC only; means fast-cache miss. */
#define VG_TRC_INNER_COUNTERZERO 41 /* TRC only; means bb ctr == 0 */