my cpu is : intel core i5 2400, Sandy Bridge
i start the branch trace store of one cpu(cpu0), msr register setting is as followed:
#define IA32_DS_AREA 0x600
#define IA32_DEBUGCTL 0x1d9
dwEDX = 0;
dwEAX = (DWORD)dbgStore32;
// set the DS memroy to MSR
WriteMSR(IA32_DS_AREA, dwEDX, dwEAX);
dwEAX |= (1 << BIT_BTS);
dwEAX |= (1 << BIT_TR);
//Clear LBR bit.
dwEAX &= ~(1 << 0 );
// Clear the BTINT flag in the MSR_DEBUGCTLA
dwEAX &= ~(1 << BIT_BTINT);
WriteMSR(IA32_DEBUGCTL, dwEDX, dwEAX);
WriteMSR(IA32_DEBUGCTL, dwEDX, dwEAX); //dwEAX=0, dwEDX=0x000000C0
the same program run normally on intel core solo processor
can anyone tell me why?



