@@ -84,7 +84,7 @@ bool RegisterContextWindows::AddHardwareBreakpoint(uint32_t slot,
84
84
case 1 :
85
85
case 2 :
86
86
case 4 :
87
- #if defined(_M_AMD64 )
87
+ #if defined(_WIN64 )
88
88
case 8 :
89
89
#endif
90
90
break ;
@@ -95,6 +95,7 @@ bool RegisterContextWindows::AddHardwareBreakpoint(uint32_t slot,
95
95
if (!CacheAllRegisterValues ())
96
96
return false ;
97
97
98
+ #if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_AMD64)
98
99
unsigned shift = 2 * slot;
99
100
m_context.Dr7 |= 1ULL << shift;
100
101
@@ -109,6 +110,12 @@ bool RegisterContextWindows::AddHardwareBreakpoint(uint32_t slot,
109
110
m_context.Dr7 |= (read ? 3ULL : (write ? 1ULL : 0 )) << shift;
110
111
111
112
return ApplyAllRegisterValues ();
113
+
114
+ #else
115
+ Log *log = ProcessWindowsLog::GetLogIfAny (WINDOWS_LOG_REGISTERS);
116
+ LLDB_LOG (log, " hardware breakpoints not currently supported on this arch" );
117
+ return false ;
118
+ #endif
112
119
}
113
120
114
121
bool RegisterContextWindows::RemoveHardwareBreakpoint (uint32_t slot) {
@@ -118,19 +125,25 @@ bool RegisterContextWindows::RemoveHardwareBreakpoint(uint32_t slot) {
118
125
if (!CacheAllRegisterValues ())
119
126
return false ;
120
127
128
+ #if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_AMD64)
121
129
unsigned shift = 2 * slot;
122
130
m_context.Dr7 &= ~(1ULL << shift);
123
131
124
132
return ApplyAllRegisterValues ();
133
+ #else
134
+ return false ;
135
+ #endif
125
136
}
126
137
127
138
uint32_t RegisterContextWindows::GetTriggeredHardwareBreakpointSlotId () {
128
139
if (!CacheAllRegisterValues ())
129
140
return LLDB_INVALID_INDEX32;
130
141
142
+ #if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_AMD64)
131
143
for (unsigned i = 0UL ; i < NUM_HARDWARE_BREAKPOINT_SLOTS; i++)
132
144
if (m_context.Dr6 & (1ULL << i))
133
145
return i;
146
+ #endif
134
147
135
148
return LLDB_INVALID_INDEX32;
136
149
}
0 commit comments