@@ -407,7 +407,6 @@ fn probecmd(context: &mut humility::ExecutionContext) -> Result<()> {
407407 }
408408 }
409409
410-
411410 if part. has_tz ( ) {
412411 // Temporarily force banked register accesses to Secure versions
413412 let mut dscsr = DSCSR :: read ( core) ?;
@@ -467,6 +466,157 @@ fn probecmd(context: &mut humility::ExecutionContext) -> Result<()> {
467466 }
468467 }
469468
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+
470620 if !dhcsr. halted ( ) {
471621 core. run ( ) ?;
472622 }
0 commit comments