Merge branches 'work.misc' and 'work.dcache' of git://git.kernel.org/pub/scm/linux...
[sfrench/cifs-2.6.git] / arch / s390 / purgatory / head.S
index 660c96a05a9b64e2d409335e1a3af0afcc11026b..2e3707b12eddbb92f02a27632ced337c7a889200 100644 (file)
@@ -243,33 +243,26 @@ gprregs:
        .quad   0
        .endr
 
-purgatory_sha256_digest:
-       .global purgatory_sha256_digest
-       .rept   32      /* SHA256_DIGEST_SIZE */
-       .byte   0
-       .endr
-
-purgatory_sha_regions:
-       .global purgatory_sha_regions
-       .rept   16 * __KEXEC_SHA_REGION_SIZE    /* KEXEC_SEGMENTS_MAX */
-       .byte   0
-       .endr
-
-kernel_entry:
-       .global kernel_entry
-       .quad   0
-
-kernel_type:
-       .global kernel_type
-       .quad   0
-
-crash_start:
-       .global crash_start
-       .quad   0
+/* Macro to define a global variable with name and size (in bytes) to be
+ * shared with C code.
+ *
+ * Add the .size and .type attribute to satisfy checks on the Elf_Sym during
+ * purgatory load.
+ */
+.macro GLOBAL_VARIABLE name,size
+\name:
+       .global \name
+       .size   \name,\size
+       .type   \name,object
+       .skip   \size,0
+.endm
 
-crash_size:
-       .global crash_size
-       .quad   0
+GLOBAL_VARIABLE purgatory_sha256_digest,32
+GLOBAL_VARIABLE purgatory_sha_regions,16*__KEXEC_SHA_REGION_SIZE
+GLOBAL_VARIABLE kernel_entry,8
+GLOBAL_VARIABLE kernel_type,8
+GLOBAL_VARIABLE crash_start,8
+GLOBAL_VARIABLE crash_size,8
 
        .align  PAGE_SIZE
 stack: