Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #include <asm-generic/vmlinux.lds.h>
0003 #include <asm/vmlinux.lds.h>
0004 #include <asm/thread_info.h>
0005 #include <asm/page.h>
0006 #include <asm/sclp.h>
0007 #include "boot.h"
0008 
0009 OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
0010 OUTPUT_ARCH(s390:64-bit)
0011 
0012 ENTRY(startup)
0013 
0014 SECTIONS
0015 {
0016     . = 0;
0017     .ipldata : {
0018         *(.ipldata)
0019     }
0020     . = IPL_START;
0021     .head.text : {
0022         _head = . ;
0023         HEAD_TEXT
0024         _ehead = . ;
0025     }
0026     . = PARMAREA;
0027     .parmarea : {
0028         *(.parmarea)
0029     }
0030     .text : {
0031         _text = .;  /* Text */
0032         *(.text)
0033         *(.text.*)
0034         _etext = . ;
0035     }
0036     .rodata : {
0037         _rodata = . ;
0038         *(.rodata)   /* read-only data */
0039         *(.rodata.*)
0040         _erodata = . ;
0041     }
0042     NOTES
0043     .data : {
0044         _data = . ;
0045         *(.data)
0046         *(.data.*)
0047         _edata = . ;
0048     }
0049 
0050     BOOT_DATA
0051     BOOT_DATA_PRESERVED
0052 
0053     /*
0054      * This is the BSS section of the decompressor and not of the decompressed Linux kernel.
0055      * It will consume place in the decompressor's image.
0056      */
0057     . = ALIGN(8);
0058     .bss : {
0059         _bss = . ;
0060         *(.bss)
0061         *(.bss.*)
0062         *(COMMON)
0063         /*
0064          * Stacks for the decompressor
0065          */
0066         . = ALIGN(PAGE_SIZE);
0067         _dump_info_stack_start = .;
0068         . += PAGE_SIZE;
0069         _dump_info_stack_end = .;
0070         . = ALIGN(PAGE_SIZE);
0071         _stack_start = .;
0072         . += BOOT_STACK_SIZE;
0073         _stack_end = .;
0074         _ebss = .;
0075     }
0076 
0077     /*
0078      * uncompressed image info used by the decompressor it should match
0079      * struct vmlinux_info. It comes from .vmlinux.info section of
0080      * uncompressed vmlinux in a form of info.o
0081      */
0082     . = ALIGN(8);
0083     .vmlinux.info : {
0084         _vmlinux_info = .;
0085         *(.vmlinux.info)
0086     }
0087 
0088     .decompressor.syms : {
0089         . += 1; /* make sure we have \0 before the first entry */
0090         . = ALIGN(2);
0091         _decompressor_syms_start = .;
0092         *(.decompressor.syms)
0093         _decompressor_syms_end = .;
0094     }
0095 
0096 #ifdef CONFIG_KERNEL_UNCOMPRESSED
0097     . = 0x100000;
0098 #else
0099     . = ALIGN(8);
0100 #endif
0101     .rodata.compressed : {
0102         _compressed_start = .;
0103         *(.vmlinux.bin.compressed)
0104         _compressed_end = .;
0105         FILL(0xff);
0106         . = ALIGN(4096);
0107     }
0108     _end = .;
0109 
0110     /* Sections to be discarded */
0111     /DISCARD/ : {
0112         *(.eh_frame)
0113         *(__ex_table)
0114         *(*__ksymtab*)
0115         *(___kcrctab*)
0116     }
0117 }