| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #include <asm-generic/vmlinux.lds.h> | |
| #include <asm/vmlinux.lds.h> | |
| OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390") | |
| OUTPUT_ARCH(s390:64-bit) | |
| ENTRY(startup) | |
| SECTIONS | |
| { | |
| . = 0; | |
| .head.text : { | |
| _head = . ; | |
| HEAD_TEXT | |
| _ehead = . ; | |
| } | |
| .text : { | |
| _text = .; /* Text */ | |
| *(.text) | |
| *(.text.*) | |
| _etext = . ; | |
| } | |
| .rodata : { | |
| _rodata = . ; | |
| *(.rodata) /* read-only data */ | |
| *(.rodata.*) | |
| _erodata = . ; | |
| } | |
| .data : { | |
| _data = . ; | |
| *(.data) | |
| *(.data.*) | |
| _edata = . ; | |
| } | |
| /* | |
| * .dma section for code, data, ex_table that need to stay below 2 GB, | |
| * even when the kernel is relocate: above 2 GB. | |
| */ | |
| . = ALIGN(PAGE_SIZE); | |
| _sdma = .; | |
| .dma.text : { | |
| _stext_dma = .; | |
| *(.dma.text) | |
| . = ALIGN(PAGE_SIZE); | |
| _etext_dma = .; | |
| } | |
| . = ALIGN(16); | |
| .dma.ex_table : { | |
| _start_dma_ex_table = .; | |
| KEEP(*(.dma.ex_table)) | |
| _stop_dma_ex_table = .; | |
| } | |
| .dma.data : { *(.dma.data) } | |
| . = ALIGN(PAGE_SIZE); | |
| _edma = .; | |
| BOOT_DATA | |
| BOOT_DATA_PRESERVED | |
| /* | |
| * This is the BSS section of the decompressor and not of the decompressed Linux kernel. | |
| * It will consume place in the decompressor's image. | |
| */ | |
| . = ALIGN(8); | |
| .bss : { | |
| _bss = . ; | |
| *(.bss) | |
| *(.bss.*) | |
| *(COMMON) | |
| _ebss = .; | |
| } | |
| /* | |
| * uncompressed image info used by the decompressor it should match | |
| * struct vmlinux_info. It comes from .vmlinux.info section of | |
| * uncompressed vmlinux in a form of info.o | |
| */ | |
| . = ALIGN(8); | |
| .vmlinux.info : { | |
| _vmlinux_info = .; | |
| *(.vmlinux.info) | |
| } | |
| #ifdef CONFIG_KERNEL_UNCOMPRESSED | |
| . = 0x100000; | |
| #else | |
| . = ALIGN(8); | |
| #endif | |
| .rodata.compressed : { | |
| _compressed_start = .; | |
| *(.vmlinux.bin.compressed) | |
| _compressed_end = .; | |
| FILL(0xff); | |
| . = ALIGN(4096); | |
| } | |
| _end = .; | |
| /* Sections to be discarded */ | |
| /DISCARD/ : { | |
| *(.eh_frame) | |
| *(__ex_table) | |
| *(*__ksymtab*) | |
| *(___kcrctab*) | |
| } | |
| } |