.. | .. |
---|
2 | 2 | #ifndef _S390_SECTIONS_H |
---|
3 | 3 | #define _S390_SECTIONS_H |
---|
4 | 4 | |
---|
| 5 | +#define arch_is_kernel_initmem_freed arch_is_kernel_initmem_freed |
---|
| 6 | + |
---|
5 | 7 | #include <asm-generic/sections.h> |
---|
6 | 8 | |
---|
| 9 | +extern bool initmem_freed; |
---|
| 10 | + |
---|
| 11 | +static inline int arch_is_kernel_initmem_freed(unsigned long addr) |
---|
| 12 | +{ |
---|
| 13 | + if (!initmem_freed) |
---|
| 14 | + return 0; |
---|
| 15 | + return addr >= (unsigned long)__init_begin && |
---|
| 16 | + addr < (unsigned long)__init_end; |
---|
| 17 | +} |
---|
| 18 | + |
---|
| 19 | +/* |
---|
| 20 | + * .boot.data section contains variables "shared" between the decompressor and |
---|
| 21 | + * the decompressed kernel. The decompressor will store values in them, and |
---|
| 22 | + * copy over to the decompressed image before starting it. |
---|
| 23 | + * |
---|
| 24 | + * Each variable end up in its own intermediate section .boot.data.<var name>, |
---|
| 25 | + * those sections are later sorted by alignment + name and merged together into |
---|
| 26 | + * final .boot.data section, which should be identical in the decompressor and |
---|
| 27 | + * the decompressed kernel (that is checked during the build). |
---|
| 28 | + */ |
---|
| 29 | +#define __bootdata(var) __section(".boot.data." #var) var |
---|
| 30 | + |
---|
| 31 | +/* |
---|
| 32 | + * .boot.preserved.data is similar to .boot.data, but it is not part of the |
---|
| 33 | + * .init section and thus will be preserved for later use in the decompressed |
---|
| 34 | + * kernel. |
---|
| 35 | + */ |
---|
| 36 | +#define __bootdata_preserved(var) __section(".boot.preserved.data." #var) var |
---|
| 37 | + |
---|
| 38 | +extern unsigned long __sdma, __edma; |
---|
| 39 | +extern unsigned long __stext_dma, __etext_dma; |
---|
| 40 | + |
---|
7 | 41 | #endif |
---|