bf9921a9c1
Introduce .boot.preserve.data section which is similar to .boot.data and "shared" between the decompressor code and the decompressed kernel. The decompressor will store values in it, and copy over to the decompressed image before starting it. This method allows to avoid using pre-defined addresses and other hacks to pass values between those boot phases. Unlike .boot.data section .boot.preserved.data is NOT a part of init data, and hence will be preserved for the kernel life time. Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
27 lines
959 B
C
27 lines
959 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _S390_SECTIONS_H
|
|
#define _S390_SECTIONS_H
|
|
|
|
#include <asm-generic/sections.h>
|
|
|
|
/*
|
|
* .boot.data section contains variables "shared" between the decompressor and
|
|
* the decompressed kernel. The decompressor will store values in them, and
|
|
* copy over to the decompressed image before starting it.
|
|
*
|
|
* Each variable end up in its own intermediate section .boot.data.<var name>,
|
|
* those sections are later sorted by alignment + name and merged together into
|
|
* final .boot.data section, which should be identical in the decompressor and
|
|
* the decompressed kernel (that is checked during the build).
|
|
*/
|
|
#define __bootdata(var) __section(.boot.data.var) var
|
|
|
|
/*
|
|
* .boot.preserved.data is similar to .boot.data, but it is not part of the
|
|
* .init section and thus will be preserved for later use in the decompressed
|
|
* kernel.
|
|
*/
|
|
#define __bootdata_preserved(var) __section(.boot.preserved.data.var) var
|
|
|
|
#endif
|