@@ -181,50 +181,38 @@ static volatile char write_data;
181
181
182
182
static void guest_code (uint8_t bpn , uint8_t wpn )
183
183
{
184
- GUEST_SYNC (0 );
185
-
186
184
/* Software-breakpoint */
187
185
reset_debug_state ();
188
186
asm volatile ("sw_bp: brk #0" );
189
187
GUEST_ASSERT_EQ (sw_bp_addr , PC (sw_bp ));
190
188
191
- GUEST_SYNC (1 );
192
-
193
189
/* Hardware-breakpoint */
194
190
reset_debug_state ();
195
191
install_hw_bp (bpn , PC (hw_bp ));
196
192
asm volatile ("hw_bp: nop" );
197
193
GUEST_ASSERT_EQ (hw_bp_addr , PC (hw_bp ));
198
194
199
- GUEST_SYNC (2 );
200
-
201
195
/* Hardware-breakpoint + svc */
202
196
reset_debug_state ();
203
197
install_hw_bp (bpn , PC (bp_svc ));
204
198
asm volatile ("bp_svc: svc #0" );
205
199
GUEST_ASSERT_EQ (hw_bp_addr , PC (bp_svc ));
206
200
GUEST_ASSERT_EQ (svc_addr , PC (bp_svc ) + 4 );
207
201
208
- GUEST_SYNC (3 );
209
-
210
202
/* Hardware-breakpoint + software-breakpoint */
211
203
reset_debug_state ();
212
204
install_hw_bp (bpn , PC (bp_brk ));
213
205
asm volatile ("bp_brk: brk #0" );
214
206
GUEST_ASSERT_EQ (sw_bp_addr , PC (bp_brk ));
215
207
GUEST_ASSERT_EQ (hw_bp_addr , PC (bp_brk ));
216
208
217
- GUEST_SYNC (4 );
218
-
219
209
/* Watchpoint */
220
210
reset_debug_state ();
221
211
install_wp (wpn , PC (write_data ));
222
212
write_data = 'x' ;
223
213
GUEST_ASSERT_EQ (write_data , 'x' );
224
214
GUEST_ASSERT_EQ (wp_data_addr , PC (write_data ));
225
215
226
- GUEST_SYNC (5 );
227
-
228
216
/* Single-step */
229
217
reset_debug_state ();
230
218
install_ss ();
@@ -238,17 +226,13 @@ static void guest_code(uint8_t bpn, uint8_t wpn)
238
226
GUEST_ASSERT_EQ (ss_addr [1 ], PC (ss_start ) + 4 );
239
227
GUEST_ASSERT_EQ (ss_addr [2 ], PC (ss_start ) + 8 );
240
228
241
- GUEST_SYNC (6 );
242
-
243
229
/* OS Lock does not block software-breakpoint */
244
230
reset_debug_state ();
245
231
enable_os_lock ();
246
232
sw_bp_addr = 0 ;
247
233
asm volatile ("sw_bp2: brk #0" );
248
234
GUEST_ASSERT_EQ (sw_bp_addr , PC (sw_bp2 ));
249
235
250
- GUEST_SYNC (7 );
251
-
252
236
/* OS Lock blocking hardware-breakpoint */
253
237
reset_debug_state ();
254
238
enable_os_lock ();
@@ -257,8 +241,6 @@ static void guest_code(uint8_t bpn, uint8_t wpn)
257
241
asm volatile ("hw_bp2: nop" );
258
242
GUEST_ASSERT_EQ (hw_bp_addr , 0 );
259
243
260
- GUEST_SYNC (8 );
261
-
262
244
/* OS Lock blocking watchpoint */
263
245
reset_debug_state ();
264
246
enable_os_lock ();
@@ -269,8 +251,6 @@ static void guest_code(uint8_t bpn, uint8_t wpn)
269
251
GUEST_ASSERT_EQ (write_data , 'x' );
270
252
GUEST_ASSERT_EQ (wp_data_addr , 0 );
271
253
272
- GUEST_SYNC (9 );
273
-
274
254
/* OS Lock blocking single-step */
275
255
reset_debug_state ();
276
256
enable_os_lock ();
@@ -370,7 +350,6 @@ static void test_guest_debug_exceptions(void)
370
350
struct kvm_vcpu * vcpu ;
371
351
struct kvm_vm * vm ;
372
352
struct ucall uc ;
373
- int stage ;
374
353
375
354
vm = vm_create_with_one_vcpu (& vcpu , guest_code );
376
355
ucall_init (vm , NULL );
@@ -391,23 +370,16 @@ static void test_guest_debug_exceptions(void)
391
370
392
371
/* Run tests with breakpoint#0 and watchpoint#0. */
393
372
vcpu_args_set (vcpu , 2 , 0 , 0 );
394
- for (stage = 0 ; stage < 11 ; stage ++ ) {
395
- vcpu_run (vcpu );
396
373
397
- switch (get_ucall (vcpu , & uc )) {
398
- case UCALL_SYNC :
399
- TEST_ASSERT (uc .args [1 ] == stage ,
400
- "Stage %d: Unexpected sync ucall, got %lx" ,
401
- stage , (ulong )uc .args [1 ]);
402
- break ;
403
- case UCALL_ABORT :
404
- REPORT_GUEST_ASSERT_2 (uc , "values: %#lx, %#lx" );
405
- break ;
406
- case UCALL_DONE :
407
- goto done ;
408
- default :
409
- TEST_FAIL ("Unknown ucall %lu" , uc .cmd );
410
- }
374
+ vcpu_run (vcpu );
375
+ switch (get_ucall (vcpu , & uc )) {
376
+ case UCALL_ABORT :
377
+ REPORT_GUEST_ASSERT_2 (uc , "values: %#lx, %#lx" );
378
+ break ;
379
+ case UCALL_DONE :
380
+ goto done ;
381
+ default :
382
+ TEST_FAIL ("Unknown ucall %lu" , uc .cmd );
411
383
}
412
384
413
385
done :
0 commit comments