@@ -174,6 +174,9 @@ void __init mem_init(void)
174
174
175
175
/* Limit the memory size via mem. */
176
176
static phys_addr_t memory_limit ;
177
+ #ifdef CONFIG_XIP_KERNEL
178
+ #define memory_limit (*(phys_addr_t *)XIP_FIXUP(&memory_limit))
179
+ #endif /* CONFIG_XIP_KERNEL */
177
180
178
181
static int __init early_mem (char * p )
179
182
{
@@ -952,7 +955,7 @@ static void __init create_fdt_early_page_table(uintptr_t fix_fdt_va,
952
955
* setup_vm_final installs the linear mapping. For 32-bit kernel, as the
953
956
* kernel is mapped in the linear mapping, that makes no difference.
954
957
*/
955
- dtb_early_va = kernel_mapping_pa_to_va (XIP_FIXUP ( dtb_pa ) );
958
+ dtb_early_va = kernel_mapping_pa_to_va (dtb_pa );
956
959
#endif
957
960
958
961
dtb_early_pa = dtb_pa ;
@@ -1055,9 +1058,9 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa)
1055
1058
#endif
1056
1059
1057
1060
kernel_map .virt_addr = KERNEL_LINK_ADDR + kernel_map .virt_offset ;
1058
- kernel_map .page_offset = _AC (CONFIG_PAGE_OFFSET , UL );
1059
1061
1060
1062
#ifdef CONFIG_XIP_KERNEL
1063
+ kernel_map .page_offset = PAGE_OFFSET_L3 ;
1061
1064
kernel_map .xiprom = (uintptr_t )CONFIG_XIP_PHYS_ADDR ;
1062
1065
kernel_map .xiprom_sz = (uintptr_t )(& _exiprom ) - (uintptr_t )(& _xiprom );
1063
1066
@@ -1067,6 +1070,7 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa)
1067
1070
1068
1071
kernel_map .va_kernel_xip_pa_offset = kernel_map .virt_addr - kernel_map .xiprom ;
1069
1072
#else
1073
+ kernel_map .page_offset = _AC (CONFIG_PAGE_OFFSET , UL );
1070
1074
kernel_map .phys_addr = (uintptr_t )(& _start );
1071
1075
kernel_map .size = (uintptr_t )(& _end ) - kernel_map .phys_addr ;
1072
1076
#endif
0 commit comments