@@ -2730,7 +2730,89 @@ fn aux_data_accessible_area(config: Config) {
2730
2730
instance. set_next_program_counter ( offsets[ 0 ] ) ;
2731
2731
match_interrupt ! ( instance. run( ) . unwrap( ) , InterruptKind :: Finished ) ;
2732
2732
2733
+ assert ! ( instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 4 , false ) ) ;
2734
+ assert ! ( instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 4 , false ) ) ;
2735
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 4 , false ) ) ;
2733
2736
assert ! ( instance. read_u32( module. memory_map( ) . aux_data_address( ) + page_size - 3 ) . is_ok( ) ) ;
2737
+ assert ! ( instance
2738
+ . read_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 )
2739
+ . is_ok( ) ) ;
2740
+ assert ! ( instance
2741
+ . read_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 )
2742
+ . is_err( ) ) ;
2743
+
2744
+ assert ! ( instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 4 , true ) ) ;
2745
+ assert ! ( instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 4 , true ) ) ;
2746
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 4 , true ) ) ;
2747
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 , 4 , true ) ) ;
2748
+ assert ! ( instance
2749
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 0 )
2750
+ . is_ok( ) ) ;
2751
+ assert ! ( instance
2752
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 0 )
2753
+ . is_ok( ) ) ;
2754
+ assert ! ( instance
2755
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 0 )
2756
+ . is_err( ) ) ;
2757
+ assert ! ( instance
2758
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 , 0 )
2759
+ . is_err( ) ) ;
2760
+ assert ! ( instance
2761
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 4 )
2762
+ . is_ok( ) ) ;
2763
+ assert ! ( instance
2764
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 4 )
2765
+ . is_ok( ) ) ;
2766
+ assert ! ( instance
2767
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 4 )
2768
+ . is_err( ) ) ;
2769
+ assert ! ( instance
2770
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size * 2 , 4 )
2771
+ . is_err( ) ) ;
2772
+
2773
+ instance. set_host_side_aux_write_protect ( true ) . unwrap ( ) ;
2774
+
2775
+ // Still readable as before.
2776
+ assert ! ( instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 4 , false ) ) ;
2777
+ assert ! ( instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 4 , false ) ) ;
2778
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 4 , false ) ) ;
2779
+ assert ! ( instance. read_u32( module. memory_map( ) . aux_data_address( ) + page_size - 3 ) . is_ok( ) ) ;
2780
+ assert ! ( instance
2781
+ . read_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 )
2782
+ . is_ok( ) ) ;
2783
+ assert ! ( instance
2784
+ . read_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 )
2785
+ . is_err( ) ) ;
2786
+
2787
+ // Not writable anymore.
2788
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 4 , true ) ) ;
2789
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 4 , true ) ) ;
2790
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 4 , true ) ) ;
2791
+ assert ! ( !instance. is_memory_accessible( module. memory_map( ) . aux_data_address( ) + page_size * 2 , 4 , true ) ) ;
2792
+ assert ! ( instance
2793
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 0 )
2794
+ . is_err( ) ) ;
2795
+ assert ! ( instance
2796
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 0 )
2797
+ . is_err( ) ) ;
2798
+ assert ! ( instance
2799
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 0 )
2800
+ . is_err( ) ) ;
2801
+ assert ! ( instance
2802
+ . write_u32( module. memory_map( ) . aux_data_address( ) + page_size * 2 , 0 )
2803
+ . is_err( ) ) ;
2804
+ assert ! ( instance
2805
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size - 3 , 4 )
2806
+ . is_err( ) ) ;
2807
+ assert ! ( instance
2808
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 4 , 4 )
2809
+ . is_err( ) ) ;
2810
+ assert ! ( instance
2811
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size * 2 - 3 , 4 )
2812
+ . is_err( ) ) ;
2813
+ assert ! ( instance
2814
+ . zero_memory( module. memory_map( ) . aux_data_address( ) + page_size * 2 , 4 )
2815
+ . is_err( ) ) ;
2734
2816
}
2735
2817
2736
2818
fn access_memory_from_host ( config : Config ) {
0 commit comments