File tree Expand file tree Collapse file tree 2 files changed +17
-2
lines changed 
arch/armv8/armv8-r/inc/arch Expand file tree Collapse file tree 2 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -46,8 +46,9 @@ struct addr_space_arch {
4646        .prlar = (_prlar),        \
4747    })
4848
49- #define  PTE_INVALID    PTE_FLAGS(0, 0)
50- #define  PTE_HYP_FLAGS  PTE_FLAGS(PRBAR_AP_RW_EL2 | PRBAR_SH_IS, PRLAR_ATTR(1) | PRLAR_EN)
49+ #define  PTE_INVALID         PTE_FLAGS(0, 0)
50+ #define  PTE_HYP_FLAGS       PTE_FLAGS(PRBAR_AP_RW_EL2 | PRBAR_SH_IS, PRLAR_ATTR(1) | PRLAR_EN)
51+ #define  PTE_HYP_FLAGS_CODE  PTE_FLAGS(PRBAR_AP_RO_EL2 | PRBAR_SH_IS, PRLAR_ATTR(1) | PRLAR_EN)
5152#define  PTE_HYP_DEV_FLAGS  \
5253    PTE_FLAGS(PRBAR_XN | PRBAR_AP_RW_EL2 | PRBAR_SH_IS, PRLAR_ATTR(2) | PRLAR_EN)
5354#define  PTE_VM_FLAGS  PTE_FLAGS(PRBAR_AP_RW_EL1_EL2 | PRBAR_SH_NS, PRLAR_ATTR(1) | PRLAR_EN)
Original file line number Diff line number Diff line change @@ -154,6 +154,11 @@ static void mem_init_boot_regions(void)
154154    vaddr_t  image_noload_start  =  (vaddr_t )& _image_noload_start ;
155155    vaddr_t  image_end  =  (vaddr_t )& _image_end ;
156156
157+ #ifdef  MEM_NON_UNIFIED 
158+     extern  uint8_t  _data_vma_start ;
159+     vaddr_t  data_vma_start  =  (vaddr_t )& _data_vma_start ;
160+ #endif 
161+ 
157162    struct  mp_region  mpr ;
158163
159164    bool  separate_noload_region  =  image_load_end  !=  image_noload_start ;
@@ -162,15 +167,24 @@ static void mem_init_boot_regions(void)
162167    mpr  =  (struct  mp_region ){
163168        .base  =  image_start ,
164169        .size  =  (size_t )(first_region_end  -  image_start ),
170+ #ifdef  MEM_NON_UNIFIED 
171+         .mem_flags  =  PTE_HYP_FLAGS_CODE ,
172+ #else 
165173        .mem_flags  =  PTE_HYP_FLAGS ,
174+ #endif 
166175        .as_sec  =  SEC_HYP_IMAGE ,
167176    };
168177    mem_map (& cpu ()-> as , & mpr , false, true);
169178
170179    if  (separate_noload_region ) {
171180        mpr  =  (struct  mp_region ){
181+ #ifdef  MEM_NON_UNIFIED 
182+             .base  =  data_vma_start ,
183+             .size  =  (size_t )(image_end  -  data_vma_start ),
184+ #else 
172185            .base  =  image_noload_start ,
173186            .size  =  (size_t )image_end  -  image_noload_start ,
187+ #endif 
174188            .mem_flags  =  PTE_HYP_FLAGS ,
175189            .as_sec  =  SEC_HYP_IMAGE ,
176190        };
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments