1OUTPUT_ARCH(aarch64) 2ENTRY(_text) 3jiffies = jiffies_64; 4PECOFF_FILE_ALIGNMENT = 0x200; 5SECTIONS 6{ 7 /DISCARD/ : { *(.exitcall.exit) *(.discard) *(.discard.*) *(.modinfo) *(.gnu.version*) } 8 /DISCARD/ : { 9 *(.interp .dynamic) 10 *(.dynsym .dynstr .hash .gnu.hash) 11 } 12 . = ((((((-(((1)) << ((((48))) - 1)))) + (0x08000000))) + (0x08000000))); 13 .head.text : { 14 _text = .; 15 KEEP(*(.head.text)) 16 } 17 .text : ALIGN(0x00010000) { 18 _stext = .; 19 . = ALIGN(8); __irqentry_text_start = .; *(.irqentry.text) __irqentry_text_end = .; 20 . = ALIGN(8); __softirqentry_text_start = .; *(.softirqentry.text) __softirqentry_text_end = .; 21 . = ALIGN(8); __entry_text_start = .; *(.entry.text) __entry_text_end = .; 22 . = ALIGN(8); *(.text.hot .text.hot.*) *(.text .text.fixup) *(.text.unlikely .text.unlikely.*) *(.text.unknown .text.unknown.*) . = ALIGN(8); __noinstr_text_start = .; *(.noinstr.text) __noinstr_text_end = .; *(.text..refcount) *(.ref.text) *(.text.asan.* .text.tsan.*) 23 . = ALIGN(8); __sched_text_start = .; *(.sched.text) __sched_text_end = .; 24 . = ALIGN(8); __cpuidle_text_start = .; *(.cpuidle.text) __cpuidle_text_end = .; 25 . = ALIGN(8); __lock_text_start = .; *(.spinlock.text) __lock_text_end = .; 26 . = ALIGN(8); __kprobes_text_start = .; *(.kprobes.text) __kprobes_text_end = .; 27 . = ALIGN((1 << 12)); __hyp_idmap_text_start = .; *(.hyp.idmap.text) __hyp_idmap_text_end = .; __hyp_text_start = .; *(.hyp.text) . = ALIGN(0x00000008); __start___kvm_ex_table = .; *(__kvm_ex_table) __stop___kvm_ex_table = .; . = ALIGN((1 << 12)); __hyp_text_end = .; 28 . = ALIGN(0x00001000); __idmap_text_start = .; *(.idmap.text) __idmap_text_end = .; 29 . = ALIGN(0x00001000); __hibernate_exit_text_start = .; *(.hibernate_exit.text) __hibernate_exit_text_end = .; 30 . = ALIGN(0x00001000); __relocate_new_kernel_start = .; *(.kexec_relocate.text) __relocate_new_kernel_end = .; 31 . = ALIGN((1 << 12)); __entry_tramp_text_start = .; *(.entry.tramp.text) . = ALIGN((1 << 12)); __entry_tramp_text_end = .; 32 *(.gnu.warning) 33 . = ALIGN(16); 34 *(.got) 35 } 36 .got.plt : { *(.got.plt) } 37 ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, 38 "Unexpected GOT/PLT entries detected!") 39 . = ALIGN(0x00010000); 40 _etext = .; 41 . = ALIGN(((1 << 12))); .rodata : AT(ADDR(.rodata) - 0) { __start_rodata = .; *(.rodata) *(.rodata.*) . = ALIGN(32); __begin_sched_classes = .; *(__idle_sched_class) *(__fair_sched_class) *(__rt_sched_class) *(__dl_sched_class) *(__stop_sched_class) __end_sched_classes = .; . = ALIGN(8); __start_ro_after_init = .; *(.data..ro_after_init) . = ALIGN(8); __start___jump_table = .; KEEP(*(__jump_table)) __stop___jump_table = .; . = ALIGN(8); __start_static_call_sites = .; KEEP(*(.static_call_sites)) __stop_static_call_sites = .; __start_static_call_tramp_key = .; KEEP(*(.static_call_tramp_key)) __stop_static_call_tramp_key = .; __end_ro_after_init = .; . = ALIGN(8); __start___tracepoints_ptrs = .; KEEP(*(__tracepoints_ptrs)) __stop___tracepoints_ptrs = .; *(__tracepoints_strings) } .rodata1 : AT(ADDR(.rodata1) - 0) { *(.rodata1) } .pci_fixup : AT(ADDR(.pci_fixup) - 0) { __start_pci_fixups_early = .; KEEP(*(.pci_fixup_early)) __end_pci_fixups_early = .; __start_pci_fixups_header = .; KEEP(*(.pci_fixup_header)) __end_pci_fixups_header = .; __start_pci_fixups_final = .; KEEP(*(.pci_fixup_final)) __end_pci_fixups_final = .; __start_pci_fixups_enable = .; KEEP(*(.pci_fixup_enable)) __end_pci_fixups_enable = .; __start_pci_fixups_resume = .; KEEP(*(.pci_fixup_resume)) __end_pci_fixups_resume = .; __start_pci_fixups_resume_early = .; KEEP(*(.pci_fixup_resume_early)) __end_pci_fixups_resume_early = .; __start_pci_fixups_suspend = .; KEEP(*(.pci_fixup_suspend)) __end_pci_fixups_suspend = .; __start_pci_fixups_suspend_late = .; KEEP(*(.pci_fixup_suspend_late)) __end_pci_fixups_suspend_late = .; } .builtin_fw : AT(ADDR(.builtin_fw) - 0) ALIGN(8) { __start_builtin_fw = .; KEEP(*(.builtin_fw)) __end_builtin_fw = .; } __ksymtab : AT(ADDR(__ksymtab) - 0) { __start___ksymtab = .; KEEP(*(SORT(___ksymtab+*))) __stop___ksymtab = .; } __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - 0) { __start___ksymtab_gpl = .; KEEP(*(SORT(___ksymtab_gpl+*))) __stop___ksymtab_gpl = .; } __kcrctab : AT(ADDR(__kcrctab) - 0) { __start___kcrctab = .; KEEP(*(SORT(___kcrctab+*))) __stop___kcrctab = .; } __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - 0) { __start___kcrctab_gpl = .; KEEP(*(SORT(___kcrctab_gpl+*))) __stop___kcrctab_gpl = .; } __ksymtab_strings : AT(ADDR(__ksymtab_strings) - 0) { *(__ksymtab_strings) } __init_rodata : AT(ADDR(__init_rodata) - 0) { *(.ref.rodata) } __param : AT(ADDR(__param) - 0) { __start___param = .; KEEP(*(__param)) __stop___param = .; } __modver : AT(ADDR(__modver) - 0) { __start___modver = .; KEEP(*(__modver)) __stop___modver = .; } . = ALIGN(4); __ex_table : AT(ADDR(__ex_table) - 0) { __start___ex_table = .; KEEP(*(__ex_table)) __stop___ex_table = .; } .notes : AT(ADDR(.notes) - 0) { __start_notes = .; KEEP(*(.note.*)) __stop_notes = .; } . = ALIGN(((1 << 12))); __end_rodata = .; 42 .hyp.rodata : { . = ALIGN((1 << 12)); __hyp_rodata_start = .; *(.hyp.data..ro_after_init) *(.hyp.rodata) . = ALIGN((1 << 12)); __hyp_rodata_end = .; } 43 idmap_pg_dir = .; 44 . += ((((((48)) - 4) / (12 - 3)) - 1) * (1 << 12)); 45 idmap_pg_end = .; 46 tramp_pg_dir = .; 47 . += (1 << 12); 48 reserved_pg_dir = .; 49 . += (1 << 12); 50 swapper_pg_dir = .; 51 . += (1 << 12); 52 . = ALIGN(0x00010000); 53 __init_begin = .; 54 __inittext_begin = .; 55 . = ALIGN(8); .init.text : AT(ADDR(.init.text) - 0) { _sinittext = .; *(.init.text .init.text.*) *(.text.startup) *(.meminit.text*) _einittext = .; } 56 __exittext_begin = .; 57 .exit.text : { 58 *(.exit.text) *(.text.exit) *(.memexit.text) 59 } 60 __exittext_end = .; 61 . = ALIGN(4); 62 .altinstructions : { 63 __alt_instructions = .; 64 *(.altinstructions) 65 __alt_instructions_end = .; 66 } 67 . = ALIGN(0x00010000); 68 __inittext_end = .; 69 __initdata_begin = .; 70 .init.data : { 71 KEEP(*(SORT(___kentry+*))) *(.init.data init.data.*) *(.meminit.data*) *(.init.rodata .init.rodata.*) *(.meminit.rodata) . = ALIGN(8); __clk_of_table = .; KEEP(*(__clk_of_table)) KEEP(*(__clk_of_table_end)) . = ALIGN(8); __reservedmem_of_table = .; KEEP(*(__reservedmem_of_table)) KEEP(*(__reservedmem_of_table_end)) . = ALIGN(8); __timer_of_table = .; KEEP(*(__timer_of_table)) KEEP(*(__timer_of_table_end)) . = ALIGN(8); __cpu_method_of_table = .; KEEP(*(__cpu_method_of_table)) KEEP(*(__cpu_method_of_table_end)) . = ALIGN(8); __cpuidle_method_of_table = .; KEEP(*(__cpuidle_method_of_table)) KEEP(*(__cpuidle_method_of_table_end)) . = ALIGN(32); __dtb_start = .; KEEP(*(.dtb.init.rodata)) __dtb_end = .; . = ALIGN(8); __irqchip_of_table = .; KEEP(*(__irqchip_of_table)) KEEP(*(__irqchip_of_table_end)) . = ALIGN(8); __irqchip_acpi_probe_table = .; KEEP(*(__irqchip_acpi_probe_table)) __irqchip_acpi_probe_table_end = .; . = ALIGN(8); __timer_acpi_probe_table = .; KEEP(*(__timer_acpi_probe_table)) __timer_acpi_probe_table_end = .; . = ALIGN(8); __governor_thermal_table = .; KEEP(*(__governor_thermal_table)) __governor_thermal_table_end = .; . = ALIGN(8); __earlycon_table = .; KEEP(*(__earlycon_table)) __earlycon_table_end = .; . = ALIGN(8); __start_lsm_info = .; KEEP(*(.lsm_info.init)) __end_lsm_info = .; . = ALIGN(8); __start_early_lsm_info = .; KEEP(*(.early_lsm_info.init)) __end_early_lsm_info = .; . = ALIGN(8); __kunit_suites_start = .; KEEP(*(.kunit_test_suites)) __kunit_suites_end = .; 72 . = ALIGN(16); __setup_start = .; KEEP(*(.init.setup)) __setup_end = .; 73 __initcall_start = .; KEEP(*(.initcallearly.init)) __initcall0_start = .; KEEP(*(.initcall0.init)) KEEP(*(.initcall0s.init)) __initcall1_start = .; KEEP(*(.initcall1.init)) KEEP(*(.initcall1s.init)) __initcall2_start = .; KEEP(*(.initcall2.init)) KEEP(*(.initcall2s.init)) __initcall3_start = .; KEEP(*(.initcall3.init)) KEEP(*(.initcall3s.init)) __initcall4_start = .; KEEP(*(.initcall4.init)) KEEP(*(.initcall4s.init)) __initcall5_start = .; KEEP(*(.initcall5.init)) KEEP(*(.initcall5s.init)) __initcallrootfs_start = .; KEEP(*(.initcallrootfs.init)) KEEP(*(.initcallrootfss.init)) __initcall6_start = .; KEEP(*(.initcall6.init)) KEEP(*(.initcall6s.init)) __initcall7_start = .; KEEP(*(.initcall7.init)) KEEP(*(.initcall7s.init)) __initcall_end = .; 74 __con_initcall_start = .; KEEP(*(.con_initcall.init)) __con_initcall_end = .; 75 . = ALIGN(4); __initramfs_start = .; KEEP(*(.init.ramfs)) . = ALIGN(8); KEEP(*(.init.ramfs.info)) 76 *(.init.altinstructions .init.bss) 77 } 78 .exit.data : { 79 *(.exit.data .exit.data.*) *(.fini_array .fini_array.*) *(.dtors .dtors.*) *(.memexit.data*) *(.memexit.rodata*) 80 } 81 . = ALIGN((1 << 12)); .data..percpu : AT(ADDR(.data..percpu) - 0) { __per_cpu_load = .; __per_cpu_start = .; *(.data..percpu..first) . = ALIGN((1 << 12)); *(.data..percpu..page_aligned) . = ALIGN((1 << (6))); *(.data..percpu..read_mostly) . = ALIGN((1 << (6))); *(.data..percpu) *(.data..percpu..shared_aligned) __per_cpu_end = .; } 82 . = ALIGN((1 << 12)); .hyp.data..percpu : { *(.hyp.data..percpu) } 83 .hyp.reloc : ALIGN(4) { __hyp_reloc_begin = .; *(.hyp.reloc) __hyp_reloc_end = .; } 84 .rela.dyn : ALIGN(8) { 85 *(.rela .rela*) 86 } 87 __rela_offset = ABSOLUTE(ADDR(.rela.dyn) - ((((((-(((1)) << ((((48))) - 1)))) + (0x08000000))) + (0x08000000)))); 88 __rela_size = SIZEOF(.rela.dyn); 89 . = ALIGN(0x00010000); 90 __initdata_end = .; 91 __init_end = .; 92 _data = .; 93 _sdata = .; 94 . = ALIGN((1 << 12)); .data : AT(ADDR(.data) - 0) { . = ALIGN((2 * (((1)) << (14 + 0)))); __start_init_task = .; init_thread_union = .; init_stack = .; KEEP(*(.data..init_task)) KEEP(*(.data..init_thread_info)) . = __start_init_task + (((1)) << (14 + 0)); __end_init_task = .; . = ALIGN((1 << 12)); __nosave_begin = .; *(.data..nosave) . = ALIGN((1 << 12)); __nosave_end = .; . = ALIGN((1 << 12)); *(.data..page_aligned) . = ALIGN((1 << 12)); . = ALIGN((1 << (6))); *(.data..cacheline_aligned) . = ALIGN((1 << (6))); *(.data..read_mostly) . = ALIGN((1 << (6))); *(.xiptext) *(.data) *(.ref.data) *(.data..shared_aligned) *(.data.unlikely) __start_once = .; *(.data.once) __end_once = .; . = ALIGN(32); *(__tracepoints) . = ALIGN(8); __start___dyndbg = .; KEEP(*(__dyndbg)) __stop___dyndbg = .; CONSTRUCTORS } . = ALIGN(8); __bug_table : AT(ADDR(__bug_table) - 0) { __start___bug_table = .; KEEP(*(__bug_table)) __stop___bug_table = .; } 95 .mmuoff.data.write : ALIGN(0x00000800) { 96 __mmuoff_data_start = .; 97 *(.mmuoff.data.write) 98 } 99 . = ALIGN(0x00000800); 100 .mmuoff.data.read : { 101 *(.mmuoff.data.read) 102 __mmuoff_data_end = .; 103 } 104 .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); } 105 __pecoff_data_rawsize = ABSOLUTE(. - __initdata_begin); 106 _edata = .; 107 . = ALIGN((1 << 12)); __bss_start = .; . = ALIGN((1 << 12)); .sbss : AT(ADDR(.sbss) - 0) { *(.dynsbss) *(.sbss) *(.scommon) } . = ALIGN(0); .bss : AT(ADDR(.bss) - 0) { __hyp_bss_start = .; *(.hyp.bss) . = ALIGN((1 << 12)); __hyp_bss_end = .; . = ALIGN((1 << 12)); *(.bss..page_aligned) . = ALIGN((1 << 12)); *(.dynbss) *(.bss) *(COMMON) } . = ALIGN(0); __bss_stop = .; 108 . = ALIGN((1 << 12)); 109 init_pg_dir = .; 110 . += ((1 << 12) * ( 1 + ((((((_end)) - 1) >> (((12 - 3) * (4 - (4 - 4)) + 3))) - (((((((((-(((1)) << ((((48))) - 1)))) + (0x08000000))) + (0x08000000))))) >> (((12 - 3) * (4 - (4 - 4)) + 3))) + 1 + (1))) + (0) + ((((((_end)) - 1) >> (((12 - 3) * (4 - (1)) + 3))) - (((((((((-(((1)) << ((((48))) - 1)))) + (0x08000000))) + (0x08000000))))) >> (((12 - 3) * (4 - (1)) + 3))) + 1 + (1))))); 111 init_pg_end = .; 112 . = ALIGN(0x00010000); 113 __pecoff_data_size = ABSOLUTE(. - __initdata_begin); 114 _end = .; 115 .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } 116 .debug 0 : { *(.debug) } .line 0 : { *(.line) } .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } .debug_gnu_pubnames 0 : { *(.debug_gnu_pubnames) } .debug_gnu_pubtypes 0 : { *(.debug_gnu_pubtypes) } .debug_types 0 : { *(.debug_types) } .debug_addr 0 : { *(.debug_addr) } .debug_line_str 0 : { *(.debug_line_str) } .debug_loclists 0 : { *(.debug_loclists) } .debug_macro 0 : { *(.debug_macro) } .debug_names 0 : { *(.debug_names) } .debug_rnglists 0 : { *(.debug_rnglists) } .debug_str_offsets 0 : { *(.debug_str_offsets) } 117 .comment 0 : { *(.comment) } .symtab 0 : { *(.symtab) } .strtab 0 : { *(.strtab) } .shstrtab 0 : { *(.shstrtab) } 118 _kernel_size_le_lo32 = (((_end - _text) & 0xffffffff) & 0xffffffff); _kernel_size_le_hi32 = (((_end - _text) >> 32) & 0xffffffff); _kernel_flags_le_lo32 = (((((0 << 0) | (((12 - 10) / 2) << (0 + 1)) | (1 << ((0 + 1) + 2)))) & 0xffffffff) & 0xffffffff); _kernel_flags_le_hi32 = (((((0 << 0) | (((12 - 10) / 2) << (0 + 1)) | (1 << ((0 + 1) + 2)))) >> 32) & 0xffffffff); 119 .plt : { 120 *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt) 121 } 122 ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!") 123 .data.rel.ro : { *(.data.rel.ro) } 124 ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!") 125} 126__efistub_kernel_size = _edata - _text; 127__efistub_primary_entry_offset = primary_entry - _text; 128__efistub_memcmp = __pi_memcmp; 129__efistub_memchr = __pi_memchr; 130__efistub_memcpy = __pi_memcpy; 131__efistub_memmove = __pi_memmove; 132__efistub_memset = __pi_memset; 133__efistub_strlen = __pi_strlen; 134__efistub_strnlen = __pi_strnlen; 135__efistub_strcmp = __pi_strcmp; 136__efistub_strncmp = __pi_strncmp; 137__efistub_strrchr = __pi_strrchr; 138__efistub_dcache_clean_poc = __pi_dcache_clean_poc; 139__efistub__text = _text; 140__efistub__end = _end; 141__efistub__edata = _edata; 142__efistub_screen_info = screen_info; 143__efistub__ctype = _ctype; 144__kvm_nvhe_kvm_patch_vector_branch = kvm_patch_vector_branch;; 145__kvm_nvhe_kvm_update_va_mask = kvm_update_va_mask;; 146__kvm_nvhe_kvm_get_kimage_voffset = kvm_get_kimage_voffset;; 147__kvm_nvhe_kvm_compute_final_ctr_el0 = kvm_compute_final_ctr_el0;; 148__kvm_nvhe_kvm_vgic_global_state = kvm_vgic_global_state;; 149__kvm_nvhe_nvhe_hyp_panic_handler = nvhe_hyp_panic_handler;; 150__kvm_nvhe___hyp_stub_vectors = __hyp_stub_vectors;; 151__kvm_nvhe___icache_flags = __icache_flags;; 152__kvm_nvhe_arm64_const_caps_ready = arm64_const_caps_ready;; 153__kvm_nvhe_cpu_hwcap_keys = cpu_hwcap_keys;; 154__kvm_nvhe_vgic_v2_cpuif_trap = vgic_v2_cpuif_trap;; 155__kvm_nvhe_vgic_v3_cpuif_trap = vgic_v3_cpuif_trap;; 156__kvm_nvhe___start___kvm_ex_table = __start___kvm_ex_table;; 157__kvm_nvhe___stop___kvm_ex_table = __stop___kvm_ex_table;; 158__kvm_nvhe_kvm_arm_hyp_percpu_base = kvm_arm_hyp_percpu_base;; 159__kvm_nvhe_kvm_arm_pmu_available = kvm_arm_pmu_available;; 160__kvm_nvhe_clear_page = __kvm_nvhe___pi_clear_page;; 161__kvm_nvhe_copy_page = __kvm_nvhe___pi_copy_page;; 162__kvm_nvhe_memcpy = __kvm_nvhe___pi_memcpy;; 163__kvm_nvhe_memset = __kvm_nvhe___pi_memset;; 164__kvm_nvhe___start_rodata = __start_rodata;; 165__kvm_nvhe___end_rodata = __end_rodata;; 166__kvm_nvhe___bss_start = __bss_start;; 167__kvm_nvhe___bss_stop = __bss_stop;; 168__kvm_nvhe___hyp_idmap_text_start = __hyp_idmap_text_start;; 169__kvm_nvhe___hyp_idmap_text_end = __hyp_idmap_text_end;; 170__kvm_nvhe___hyp_text_start = __hyp_text_start;; 171__kvm_nvhe___hyp_text_end = __hyp_text_end;; 172__kvm_nvhe___hyp_bss_start = __hyp_bss_start;; 173__kvm_nvhe___hyp_bss_end = __hyp_bss_end;; 174__kvm_nvhe___hyp_rodata_start = __hyp_rodata_start;; 175__kvm_nvhe___hyp_rodata_end = __hyp_rodata_end;; 176__kvm_nvhe_kvm_protected_mode_initialized = kvm_protected_mode_initialized;; 177ASSERT(__hyp_idmap_text_end - __hyp_idmap_text_start <= (1 << 12), 178 "HYP init code too big") 179ASSERT(__idmap_text_end - (__idmap_text_start & ~(0x00001000 - 1)) <= 0x00001000, 180 "ID map text too big or misaligned") 181ASSERT(__hibernate_exit_text_end - (__hibernate_exit_text_start & ~(0x00001000 - 1)) 182 <= 0x00001000, "Hibernate exit text too big or misaligned") 183ASSERT((__entry_tramp_text_end - __entry_tramp_text_start) == (1 << 12), 184 "Entry trampoline text too big") 185ASSERT(__hyp_bss_start == __bss_start, "HYP and Host BSS are misaligned") 186ASSERT(_text == ((((((-(((1)) << ((((48))) - 1)))) + (0x08000000))) + (0x08000000))), "HEAD is misaligned") 187ASSERT(swapper_pg_dir - reserved_pg_dir == ((1 << 12)), 188 "RESERVED_SWAPPER_OFFSET is wrong!") 189ASSERT(swapper_pg_dir - tramp_pg_dir == (2 * (1 << 12)), 190 "TRAMP_SWAPPER_OFFSET is wrong!") 191ASSERT(__relocate_new_kernel_end - (__relocate_new_kernel_start & ~(0x00001000 - 1)) 192 <= 0x00001000, "kexec relocation code is too big or misaligned") 193ASSERT(4096 >= 0x00001000, "KEXEC_CONTROL_PAGE_SIZE is broken") 194