static u_long SetDRn( int i, u_long linear, long type ) { ptrace( PTRACE_POKEUSER, pid, O_DEBUGREG( i ), (void *)linear ); return( ( type << DR7_RWLSHIFT( i ) ) // | ( DR7_GEMASK << DR7_GLSHIFT( i ) ) | DR7_GE | ( DR7_LEMASK << DR7_GLSHIFT( i ) ) | DR7_LE ); }
static unsigned long SetDRn( int i, unsigned long linear, long type ) { switch( i ) { case 0: SetDR0( linear ); break; case 1: SetDR1( linear ); break; case 2: SetDR2( linear ); break; case 3: SetDR3( linear ); break; } return( ( type << DR7_RWLSHIFT(i) ) // | ( DR7_GEMASK << DR7_GLSHIFT(i) ) | DR7_GE | ( DR7_LEMASK << DR7_GLSHIFT(i) ) | DR7_LE ); }
static void SetDRnBW( int dr, dword linear, int len ) /* Set DRn for break on write */ { *DR[ dr ] = linear; SysRegs.dr7 |= ( ( DRLen( len )+DR7_BWR) << DR7_RWLSHIFT( dr ) ) | ( DR7_GEMASK << DR7_GLSHIFT( dr ) ); }