@@ -407,7 +407,6 @@ fn probecmd(context: &mut humility::ExecutionContext) -> Result<()> {
407
407
}
408
408
}
409
409
410
-
411
410
if part. has_tz ( ) {
412
411
// Temporarily force banked register accesses to Secure versions
413
412
let mut dscsr = DSCSR :: read ( core) ?;
@@ -467,6 +466,157 @@ fn probecmd(context: &mut humility::ExecutionContext) -> Result<()> {
467
466
}
468
467
}
469
468
469
+ if part. has_tz ( ) {
470
+ // Temporarily force banked register accesses to Secure versions
471
+ let mut dscsr = DSCSR :: read ( core) ?;
472
+ dscsr. set_sbrsel ( true ) ;
473
+ dscsr. set_sbrselen ( true ) ;
474
+ dscsr. write ( core) ?;
475
+
476
+ {
477
+ let mpu_type = MPU_TYPE :: read ( core) ?;
478
+ print ( "MPU_S_TYPE" , format ! ( "0x{:x}" , mpu_type. 0 ) ) ;
479
+
480
+ if mpu_type. dregion ( ) > 0 {
481
+ let mpu_ctrl = MPU_CTRL :: read ( core) ?;
482
+ humility:: msg!(
483
+ "{:>12} => 0x{:8}" ,
484
+ "MPU_S_CTRL" ,
485
+ format!( "{:x}" , mpu_ctrl. 0 )
486
+ ) ;
487
+
488
+ let mpu_mair0 = MPU_MAIR0 :: read ( core) ?;
489
+ humility:: msg!(
490
+ "{:>12} => 0x{:8}" ,
491
+ "MPU_S_MAIR0" ,
492
+ format!( "{:x}" , mpu_mair0. 0 )
493
+ ) ;
494
+
495
+ let mpu_mair1 = MPU_MAIR1 :: read ( core) ?;
496
+ humility:: msg!(
497
+ "{:>12} => 0x{:8}" ,
498
+ "MPU_S_MAIR1" ,
499
+ format!( "{:x}" , mpu_mair1. 0 )
500
+ ) ;
501
+ }
502
+
503
+ for rnr in 0 ..mpu_type. dregion ( ) {
504
+ let mut mpu_rnr = MPU_RNR ( 0 ) ;
505
+ mpu_rnr. set_region ( rnr) ;
506
+ mpu_rnr. write ( core) ?;
507
+
508
+ let mpu_rbar = MPU_RBAR :: read ( core) ?;
509
+ humility:: msg!(
510
+ "{:>12} => 0x{:8}" ,
511
+ format!( "MPU_S_RBAR{}" , rnr) ,
512
+ format!( "{:x}" , mpu_rbar. 0 )
513
+ ) ;
514
+
515
+ let mpu_rlar = MPU_RLAR :: read ( core) ?;
516
+ humility:: msg!(
517
+ "{:>12} => 0x{:8}" ,
518
+ format!( "MPU_S_RLAR{}" , rnr) ,
519
+ format!( "{:x}" , mpu_rlar. 0 )
520
+ ) ;
521
+ }
522
+ }
523
+
524
+ // Now switch to the Non-Secure versions
525
+ dscsr. set_sbrsel ( false ) ;
526
+ dscsr. write ( core) ?;
527
+
528
+ {
529
+ let mpu_type = MPU_TYPE :: read ( core) ?;
530
+ print ( "MPU_NS_TYPE" , format ! ( "0x{:x}" , mpu_type. 0 ) ) ;
531
+
532
+ if mpu_type. dregion ( ) > 0 {
533
+ let mpu_ctrl = MPU_CTRL :: read ( core) ?;
534
+ humility:: msg!(
535
+ "{:>12} => 0x{:8}" ,
536
+ "MPU_S_CTRL" ,
537
+ format!( "{:x}" , mpu_ctrl. 0 )
538
+ ) ;
539
+
540
+ let mpu_mair0 = MPU_MAIR0 :: read ( core) ?;
541
+ humility:: msg!(
542
+ "{:>12} => 0x{:8}" ,
543
+ "MPU_NS_MAIR0" ,
544
+ format!( "{:x}" , mpu_mair0. 0 )
545
+ ) ;
546
+
547
+ let mpu_mair1 = MPU_MAIR1 :: read ( core) ?;
548
+ humility:: msg!(
549
+ "{:>12} => 0x{:8}" ,
550
+ "MPU_NS_MAIR1" ,
551
+ format!( "{:x}" , mpu_mair1. 0 )
552
+ ) ;
553
+ }
554
+
555
+ for rnr in 0 ..mpu_type. dregion ( ) {
556
+ let mut mpu_rnr = MPU_RNR ( 0 ) ;
557
+ mpu_rnr. set_region ( rnr) ;
558
+ mpu_rnr. write ( core) ?;
559
+
560
+ let mpu_rbar = MPU_RBAR :: read ( core) ?;
561
+ humility:: msg!(
562
+ "{:>12} => 0x{:8}" ,
563
+ format!( "MPU_NS_RBAR{}" , rnr) ,
564
+ format!( "{:x}" , mpu_rbar. 0 )
565
+ ) ;
566
+
567
+ let mpu_rlar = MPU_RLAR :: read ( core) ?;
568
+ humility:: msg!(
569
+ "{:>12} => 0x{:8}" ,
570
+ format!( "MPU_NS_RLAR{}" , rnr) ,
571
+ format!( "{:x}" , mpu_rlar. 0 )
572
+ ) ;
573
+ }
574
+ }
575
+
576
+ // Finally, switch back to current security domain versions
577
+ dscsr. set_sbrselen ( false ) ;
578
+ dscsr. write ( core) ?;
579
+ } else {
580
+ let mpu_type = MPU_TYPE :: read ( core) ?;
581
+ print ( "MPU_TYPE" , format ! ( "0x{:x}" , mpu_type. 0 ) ) ;
582
+
583
+ if mpu_type. dregion ( ) > 0 {
584
+ let mpu_mair0 = MPU_MAIR0 :: read ( core) ?;
585
+ humility:: msg!(
586
+ "{:>12} => 0x{:8}" ,
587
+ "MPU_MAIR0" ,
588
+ format!( "{:x}" , mpu_mair0. 0 )
589
+ ) ;
590
+
591
+ let mpu_mair1 = MPU_MAIR1 :: read ( core) ?;
592
+ humility:: msg!(
593
+ "{:>12} => 0x{:8}" ,
594
+ "MPU_MAIR1" ,
595
+ format!( "{:x}" , mpu_mair1. 0 )
596
+ ) ;
597
+ }
598
+
599
+ for rnr in 0 ..mpu_type. dregion ( ) {
600
+ let mut mpu_rnr = MPU_RNR ( 0 ) ;
601
+ mpu_rnr. set_region ( rnr) ;
602
+ mpu_rnr. write ( core) ?;
603
+
604
+ let mpu_rbar = MPU_RBAR :: read ( core) ?;
605
+ humility:: msg!(
606
+ "{:>12} => 0x{:8}" ,
607
+ format!( "MPU_RBAR{}" , rnr) ,
608
+ format!( "{:x}" , mpu_rbar. 0 )
609
+ ) ;
610
+
611
+ let mpu_rlar = MPU_RLAR :: read ( core) ?;
612
+ humility:: msg!(
613
+ "{:>12} => 0x{:8}" ,
614
+ format!( "MPU_RLAR{}" , rnr) ,
615
+ format!( "{:x}" , mpu_rlar. 0 )
616
+ ) ;
617
+ }
618
+ }
619
+
470
620
if !dhcsr. halted ( ) {
471
621
core. run ( ) ?;
472
622
}
0 commit comments