Merge tag 'sound-4.15-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / arch / s390 / kernel / vmlinux.lds.S
index 96a713a470e77a67a56c0b18f3db29b02ccf2471..a049ff005f03df571ab58a52180b42e44b63bf6d 100644 (file)
@@ -60,12 +60,7 @@ SECTIONS
 
        RO_DATA_SECTION(PAGE_SIZE)
 
-#ifdef CONFIG_SHARED_KERNEL
-       . = ALIGN(0x100000);    /* VM shared segments are 1MB aligned */
-#endif
-
        . = ALIGN(PAGE_SIZE);
-       _eshared = .;           /* End of shareable data */
        _sdata = .;             /* Start of data section */
 
        . = ALIGN(PAGE_SIZE);
@@ -105,6 +100,29 @@ SECTIONS
                EXIT_DATA
        }
 
+       /*
+        * struct alt_inst entries. From the header (alternative.h):
+        * "Alternative instructions for different CPU types or capabilities"
+        * Think locking instructions on spinlocks.
+        * Note, that it is a part of __init region.
+        */
+       . = ALIGN(8);
+       .altinstructions : {
+               __alt_instructions = .;
+               *(.altinstructions)
+               __alt_instructions_end = .;
+       }
+
+       /*
+        * And here are the replacement instructions. The linker sticks
+        * them as binary blobs. The .altinstructions has enough data to
+        * get the address and the length of them to patch the kernel safely.
+        * Note, that it is a part of __init region.
+        */
+       .altinstr_replacement : {
+               *(.altinstr_replacement)
+       }
+
        /* early.c uses stsi, which requires page aligned data. */
        . = ALIGN(PAGE_SIZE);
        INIT_DATA_SECTION(0x100)