mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	treewide: Convert macro and uses of __section(foo) to __section("foo")
Use a more generic form for __section that requires quotes to avoid
complications with clang and gcc differences.
Remove the quote operator # from compiler_attributes.h __section macro.
Convert all unquoted __section(foo) uses to quoted __section("foo").
Also convert __attribute__((section("foo"))) uses to __section("foo")
even if the __attribute__ has multiple list entry forms.
Conversion done using the script at:
    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl
Signed-off-by: Joe Perches <joe@perches.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@gooogle.com>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									986b9eacb2
								
							
						
					
					
						commit
						33def8498f
					
				
					 117 changed files with 196 additions and 196 deletions
				
			
		|  | @ -64,15 +64,15 @@ | ||||||
| #else	/* !__ASSEMBLY__ */ | #else	/* !__ASSEMBLY__ */ | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_ARC_HAS_ICCM | #ifdef CONFIG_ARC_HAS_ICCM | ||||||
| #define __arcfp_code __section(.text.arcfp) | #define __arcfp_code __section(".text.arcfp") | ||||||
| #else | #else | ||||||
| #define __arcfp_code __section(.text) | #define __arcfp_code __section(".text") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_ARC_HAS_DCCM | #ifdef CONFIG_ARC_HAS_DCCM | ||||||
| #define __arcfp_data __section(.data.arcfp) | #define __arcfp_data __section(".data.arcfp") | ||||||
| #else | #else | ||||||
| #define __arcfp_data __section(.data) | #define __arcfp_data __section(".data") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #endif /* __ASSEMBLY__ */ | #endif /* __ASSEMBLY__ */ | ||||||
|  |  | ||||||
|  | @ -53,7 +53,7 @@ extern const struct machine_desc __arch_info_begin[], __arch_info_end[]; | ||||||
|  */ |  */ | ||||||
| #define MACHINE_START(_type, _name)			\ | #define MACHINE_START(_type, _name)			\ | ||||||
| static const struct machine_desc __mach_desc_##_type	\ | static const struct machine_desc __mach_desc_##_type	\ | ||||||
| __used __section(.arch.info.init) = {			\ | __used __section(".arch.info.init") = {			\ | ||||||
| 	.name		= _name, | 	.name		= _name, | ||||||
| 
 | 
 | ||||||
| #define MACHINE_END				\ | #define MACHINE_END				\ | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
| #include <asm/io.h> | #include <asm/io.h> | ||||||
| #include <asm/mach_desc.h> | #include <asm/mach_desc.h> | ||||||
| 
 | 
 | ||||||
| int arc_hsdk_axi_dmac_coherent __section(.data) = 0; | int arc_hsdk_axi_dmac_coherent __section(".data") = 0; | ||||||
| 
 | 
 | ||||||
| #define ARC_CCM_UNUSED_ADDR	0x60000000 | #define ARC_CCM_UNUSED_ADDR	0x60000000 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -24,6 +24,6 @@ | ||||||
| #define ARCH_SLAB_MINALIGN 8 | #define ARCH_SLAB_MINALIGN 8 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ struct of_cpuidle_method { | ||||||
| 
 | 
 | ||||||
| #define CPUIDLE_METHOD_OF_DECLARE(name, _method, _ops)			\ | #define CPUIDLE_METHOD_OF_DECLARE(name, _method, _ops)			\ | ||||||
| 	static const struct of_cpuidle_method __cpuidle_method_of_table_##name \ | 	static const struct of_cpuidle_method __cpuidle_method_of_table_##name \ | ||||||
| 	__used __section(__cpuidle_method_of_table)			\ | 	__used __section("__cpuidle_method_of_table")			\ | ||||||
| 	= { .method = _method, .ops = _ops } | 	= { .method = _method, .ops = _ops } | ||||||
| 
 | 
 | ||||||
| extern int arm_cpuidle_suspend(int index); | extern int arm_cpuidle_suspend(int index); | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| #include <linux/pgtable.h> | #include <linux/pgtable.h> | ||||||
| 
 | 
 | ||||||
| /* Tag a function as requiring to be executed via an identity mapping. */ | /* Tag a function as requiring to be executed via an identity mapping. */ | ||||||
| #define __idmap __section(.idmap.text) noinline notrace | #define __idmap __section(".idmap.text") noinline notrace | ||||||
| 
 | 
 | ||||||
| extern pgd_t *idmap_pgd; | extern pgd_t *idmap_pgd; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -81,7 +81,7 @@ extern const struct machine_desc __arch_info_begin[], __arch_info_end[]; | ||||||
| #define MACHINE_START(_type,_name)			\ | #define MACHINE_START(_type,_name)			\ | ||||||
| static const struct machine_desc __mach_desc_##_type	\ | static const struct machine_desc __mach_desc_##_type	\ | ||||||
|  __used							\ |  __used							\ | ||||||
|  __attribute__((__section__(".arch.info.init"))) = {	\ |  __section(".arch.info.init") = {			\ | ||||||
| 	.nr		= MACH_TYPE_##_type,		\ | 	.nr		= MACH_TYPE_##_type,		\ | ||||||
| 	.name		= _name, | 	.name		= _name, | ||||||
| 
 | 
 | ||||||
|  | @ -91,7 +91,7 @@ static const struct machine_desc __mach_desc_##_type	\ | ||||||
| #define DT_MACHINE_START(_name, _namestr)		\ | #define DT_MACHINE_START(_name, _namestr)		\ | ||||||
| static const struct machine_desc __mach_desc_##_name	\ | static const struct machine_desc __mach_desc_##_name	\ | ||||||
|  __used							\ |  __used							\ | ||||||
|  __attribute__((__section__(".arch.info.init"))) = {	\ |  __section(".arch.info.init") = {			\ | ||||||
| 	.nr		= ~0,				\ | 	.nr		= ~0,				\ | ||||||
| 	.name		= _namestr, | 	.name		= _namestr, | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| #include <uapi/asm/setup.h> | #include <uapi/asm/setup.h> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #define __tag __used __attribute__((__section__(".taglist.init"))) | #define __tag __used __section(".taglist.init") | ||||||
| #define __tagtable(tag, fn) \ | #define __tagtable(tag, fn) \ | ||||||
| static const struct tagtable __tagtable_##fn __tag = { tag, fn } | static const struct tagtable __tagtable_##fn __tag = { tag, fn } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -112,7 +112,7 @@ struct of_cpu_method { | ||||||
| 
 | 
 | ||||||
| #define CPU_METHOD_OF_DECLARE(name, _method, _ops)			\ | #define CPU_METHOD_OF_DECLARE(name, _method, _ops)			\ | ||||||
| 	static const struct of_cpu_method __cpu_method_of_table_##name	\ | 	static const struct of_cpu_method __cpu_method_of_table_##name	\ | ||||||
| 		__used __section(__cpu_method_of_table)			\ | 		__used __section("__cpu_method_of_table")		\ | ||||||
| 		= { .method = _method, .ops = _ops } | 		= { .method = _method, .ops = _ops } | ||||||
| /*
 | /*
 | ||||||
|  * set platform specific SMP operations |  * set platform specific SMP operations | ||||||
|  |  | ||||||
|  | @ -16,13 +16,13 @@ | ||||||
| #include <linux/compiler.h> | #include <linux/compiler.h> | ||||||
| 
 | 
 | ||||||
| /* Tag variables with this */ | /* Tag variables with this */ | ||||||
| #define __tcmdata __section(.tcm.data) | #define __tcmdata __section(".tcm.data") | ||||||
| /* Tag constants with this */ | /* Tag constants with this */ | ||||||
| #define __tcmconst __section(.tcm.rodata) | #define __tcmconst __section(".tcm.rodata") | ||||||
| /* Tag functions inside TCM called from outside TCM with this */ | /* Tag functions inside TCM called from outside TCM with this */ | ||||||
| #define __tcmfunc __attribute__((long_call)) __section(.tcm.text) noinline | #define __tcmfunc __attribute__((long_call)) __section(".tcm.text") noinline | ||||||
| /* Tag function inside TCM called from inside TCM  with this */ | /* Tag function inside TCM called from inside TCM  with this */ | ||||||
| #define __tcmlocalfunc __section(.tcm.text) | #define __tcmlocalfunc __section(".tcm.text") | ||||||
| 
 | 
 | ||||||
| void *tcm_alloc(size_t len); | void *tcm_alloc(size_t len); | ||||||
| void tcm_free(void *addr, size_t len); | void tcm_free(void *addr, size_t len); | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
| extern struct of_cpuidle_method __cpuidle_method_of_table[]; | extern struct of_cpuidle_method __cpuidle_method_of_table[]; | ||||||
| 
 | 
 | ||||||
| static const struct of_cpuidle_method __cpuidle_method_of_table_sentinel | static const struct of_cpuidle_method __cpuidle_method_of_table_sentinel | ||||||
| 	__used __section(__cpuidle_method_of_table_end); | 	__used __section("__cpuidle_method_of_table_end"); | ||||||
| 
 | 
 | ||||||
| static struct cpuidle_ops cpuidle_ops[NR_CPUS] __ro_after_init; | static struct cpuidle_ops cpuidle_ops[NR_CPUS] __ro_after_init; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -29,7 +29,7 @@ | ||||||
| extern struct of_cpu_method __cpu_method_of_table[]; | extern struct of_cpu_method __cpu_method_of_table[]; | ||||||
| 
 | 
 | ||||||
| static const struct of_cpu_method __cpu_method_of_table_sentinel | static const struct of_cpu_method __cpu_method_of_table_sentinel | ||||||
| 	__used __section(__cpu_method_of_table_end); | 	__used __section("__cpu_method_of_table_end"); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| static int __init set_smp_ops_by_method(struct device_node *node) | static int __init set_smp_ops_by_method(struct device_node *node) | ||||||
|  |  | ||||||
|  | @ -79,7 +79,7 @@ static inline u32 cache_type_cwg(void) | ||||||
| 	return (read_cpuid_cachetype() >> CTR_CWG_SHIFT) & CTR_CWG_MASK; | 	return (read_cpuid_cachetype() >> CTR_CWG_SHIFT) & CTR_CWG_MASK; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __section(.data..read_mostly) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| static inline int cache_line_size_of_cpu(void) | static inline int cache_line_size_of_cpu(void) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -54,7 +54,7 @@ static __init pteval_t create_mapping_protection(efi_memory_desc_t *md) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* we will fill this structure from the stub, so don't put it in .bss */ | /* we will fill this structure from the stub, so don't put it in .bss */ | ||||||
| struct screen_info screen_info __section(.data); | struct screen_info screen_info __section(".data"); | ||||||
| 
 | 
 | ||||||
| int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) | int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ | ||||||
| #include <asm/smp_plat.h> | #include <asm/smp_plat.h> | ||||||
| 
 | 
 | ||||||
| extern void secondary_holding_pen(void); | extern void secondary_holding_pen(void); | ||||||
| volatile unsigned long __section(.mmuoff.data.read) | volatile unsigned long __section(".mmuoff.data.read") | ||||||
| secondary_holding_pen_release = INVALID_HWID; | secondary_holding_pen_release = INVALID_HWID; | ||||||
| 
 | 
 | ||||||
| static phys_addr_t cpu_release_addr[NR_CPUS]; | static phys_addr_t cpu_release_addr[NR_CPUS]; | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ | ||||||
| u64 idmap_t0sz = TCR_T0SZ(VA_BITS); | u64 idmap_t0sz = TCR_T0SZ(VA_BITS); | ||||||
| u64 idmap_ptrs_per_pgd = PTRS_PER_PGD; | u64 idmap_ptrs_per_pgd = PTRS_PER_PGD; | ||||||
| 
 | 
 | ||||||
| u64 __section(.mmuoff.data.write) vabits_actual; | u64 __section(".mmuoff.data.write") vabits_actual; | ||||||
| EXPORT_SYMBOL(vabits_actual); | EXPORT_SYMBOL(vabits_actual); | ||||||
| 
 | 
 | ||||||
| u64 kimage_voffset __ro_after_init; | u64 kimage_voffset __ro_after_init; | ||||||
|  |  | ||||||
|  | @ -10,13 +10,13 @@ | ||||||
| #include <linux/compiler.h> | #include <linux/compiler.h> | ||||||
| 
 | 
 | ||||||
| /* Tag variables with this */ | /* Tag variables with this */ | ||||||
| #define __tcmdata __section(.tcm.data) | #define __tcmdata __section(".tcm.data") | ||||||
| /* Tag constants with this */ | /* Tag constants with this */ | ||||||
| #define __tcmconst __section(.tcm.rodata) | #define __tcmconst __section(".tcm.rodata") | ||||||
| /* Tag functions inside TCM called from outside TCM with this */ | /* Tag functions inside TCM called from outside TCM with this */ | ||||||
| #define __tcmfunc __section(.tcm.text) noinline | #define __tcmfunc __section(".tcm.text") noinline | ||||||
| /* Tag function inside TCM called from inside TCM  with this */ | /* Tag function inside TCM called from inside TCM  with this */ | ||||||
| #define __tcmlocalfunc __section(.tcm.text) | #define __tcmlocalfunc __section(".tcm.text") | ||||||
| 
 | 
 | ||||||
| void *tcm_alloc(size_t len); | void *tcm_alloc(size_t len); | ||||||
| void tcm_free(void *addr, size_t len); | void tcm_free(void *addr, size_t len); | ||||||
|  |  | ||||||
|  | @ -25,6 +25,6 @@ | ||||||
| # define SMP_CACHE_BYTES	(1 << 3) | # define SMP_CACHE_BYTES	(1 << 3) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #endif /* _ASM_IA64_CACHE_H */ | #endif /* _ASM_IA64_CACHE_H */ | ||||||
|  |  | ||||||
|  | @ -46,7 +46,7 @@ DEFINE_PER_CPU(unsigned int, CURRENT_SAVE);	/* Saved current pointer */ | ||||||
|  * ASM code. Default position is BSS section which is cleared |  * ASM code. Default position is BSS section which is cleared | ||||||
|  * in machine_early_init(). |  * in machine_early_init(). | ||||||
|  */ |  */ | ||||||
| char cmd_line[COMMAND_LINE_SIZE] __attribute__ ((section(".data"))); | char cmd_line[COMMAND_LINE_SIZE] __section(".data"); | ||||||
| 
 | 
 | ||||||
| void __init setup_arch(char **cmdline_p) | void __init setup_arch(char **cmdline_p) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -14,6 +14,6 @@ | ||||||
| #define L1_CACHE_SHIFT		CONFIG_MIPS_L1_CACHE_SHIFT | #define L1_CACHE_SHIFT		CONFIG_MIPS_L1_CACHE_SHIFT | ||||||
| #define L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT) | #define L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT) | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #endif /* _ASM_CACHE_H */ | #endif /* _ASM_CACHE_H */ | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ extern long __mips_machines_end; | ||||||
| 
 | 
 | ||||||
| #define MIPS_MACHINE(name)						\ | #define MIPS_MACHINE(name)						\ | ||||||
| 	static const struct mips_machine __mips_mach_##name		\ | 	static const struct mips_machine __mips_mach_##name		\ | ||||||
| 		__used __section(.mips.machines.init) | 		__used __section(".mips.machines.init") | ||||||
| 
 | 
 | ||||||
| #define for_each_mips_machine(mach)					\ | #define for_each_mips_machine(mach)					\ | ||||||
| 	for ((mach) = (struct mips_machine *)&__mips_machines_start;	\ | 	for ((mach) = (struct mips_machine *)&__mips_machines_start;	\ | ||||||
|  |  | ||||||
|  | @ -44,7 +44,7 @@ | ||||||
| #include <asm/prom.h> | #include <asm/prom.h> | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_MIPS_ELF_APPENDED_DTB | #ifdef CONFIG_MIPS_ELF_APPENDED_DTB | ||||||
| const char __section(.appended_dtb) __appended_dtb[0x100000]; | const char __section(".appended_dtb") __appended_dtb[0x100000]; | ||||||
| #endif /* CONFIG_MIPS_ELF_APPENDED_DTB */ | #endif /* CONFIG_MIPS_ELF_APPENDED_DTB */ | ||||||
| 
 | 
 | ||||||
| struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; | struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; | ||||||
|  |  | ||||||
|  | @ -569,7 +569,7 @@ unsigned long pgd_current[NR_CPUS]; | ||||||
|  * size, and waste space.  So we place it in its own section and align |  * size, and waste space.  So we place it in its own section and align | ||||||
|  * it in the linker script. |  * it in the linker script. | ||||||
|  */ |  */ | ||||||
| pgd_t swapper_pg_dir[PTRS_PER_PGD] __section(.bss..swapper_pg_dir); | pgd_t swapper_pg_dir[PTRS_PER_PGD] __section(".bss..swapper_pg_dir"); | ||||||
| #ifndef __PAGETABLE_PUD_FOLDED | #ifndef __PAGETABLE_PUD_FOLDED | ||||||
| pud_t invalid_pud_table[PTRS_PER_PUD] __page_aligned_bss; | pud_t invalid_pud_table[PTRS_PER_PUD] __page_aligned_bss; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
| 
 | 
 | ||||||
| #define ARCH_DMA_MINALIGN	L1_CACHE_BYTES | #define ARCH_DMA_MINALIGN	L1_CACHE_BYTES | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __section(.data..read_mostly) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| void parisc_cache_init(void);	/* initializes cache-flushing */ | void parisc_cache_init(void);	/* initializes cache-flushing */ | ||||||
| void disable_sr_hashing_asm(int); /* low level support for above */ | void disable_sr_hashing_asm(int); /* low level support for above */ | ||||||
|  |  | ||||||
|  | @ -52,7 +52,7 @@ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_SMP | #ifdef CONFIG_SMP | ||||||
| # define __lock_aligned __section(.data..lock_aligned) | # define __lock_aligned __section(".data..lock_aligned") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #endif /* __PARISC_LDCW_H */ | #endif /* __PARISC_LDCW_H */ | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
| #include <asm/ftrace.h> | #include <asm/ftrace.h> | ||||||
| #include <asm/patch.h> | #include <asm/patch.h> | ||||||
| 
 | 
 | ||||||
| #define __hot __attribute__ ((__section__ (".text.hot"))) | #define __hot __section(".text.hot") | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_FUNCTION_GRAPH_TRACER | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | ||||||
| /*
 | /*
 | ||||||
|  |  | ||||||
|  | @ -42,11 +42,11 @@ extern void parisc_kernel_start(void);	/* Kernel entry point in head.S */ | ||||||
|  * guarantee that global objects will be laid out in memory in the same order |  * guarantee that global objects will be laid out in memory in the same order | ||||||
|  * as the order of declaration, so put these in different sections and use |  * as the order of declaration, so put these in different sections and use | ||||||
|  * the linker script to order them. */ |  * the linker script to order them. */ | ||||||
| pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data..vm0.pmd"), aligned(PAGE_SIZE))); | pmd_t pmd0[PTRS_PER_PMD] __section(".data..vm0.pmd") __attribute__ ((aligned(PAGE_SIZE))); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data..vm0.pgd"), aligned(PAGE_SIZE))); | pgd_t swapper_pg_dir[PTRS_PER_PGD] __section(".data..vm0.pgd") __attribute__ ((aligned(PAGE_SIZE))); | ||||||
| pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data..vm0.pte"), aligned(PAGE_SIZE))); | pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __section(".data..vm0.pte") __attribute__ ((aligned(PAGE_SIZE))); | ||||||
| 
 | 
 | ||||||
| static struct resource data_resource = { | static struct resource data_resource = { | ||||||
| 	.name	= "Kernel data", | 	.name	= "Kernel data", | ||||||
|  |  | ||||||
|  | @ -97,7 +97,7 @@ static inline u32 l1_icache_bytes(void) | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __section(.data..read_mostly) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_PPC_BOOK3S_32 | #ifdef CONFIG_PPC_BOOK3S_32 | ||||||
| extern long _get_L2CR(void); | extern long _get_L2CR(void); | ||||||
|  |  | ||||||
|  | @ -232,7 +232,7 @@ extern void book3e_idle(void); | ||||||
| extern struct machdep_calls ppc_md; | extern struct machdep_calls ppc_md; | ||||||
| extern struct machdep_calls *machine_id; | extern struct machdep_calls *machine_id; | ||||||
| 
 | 
 | ||||||
| #define __machine_desc __attribute__ ((__section__ (".machine.desc"))) | #define __machine_desc __section(".machine.desc") | ||||||
| 
 | 
 | ||||||
| #define define_machine(name)					\ | #define define_machine(name)					\ | ||||||
| 	extern struct machdep_calls mach_##name;		\ | 	extern struct machdep_calls mach_##name;		\ | ||||||
|  |  | ||||||
|  | @ -26,7 +26,7 @@ | ||||||
| static void scrollscreen(void); | static void scrollscreen(void); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __force_data __section(.data) | #define __force_data __section(".data") | ||||||
| 
 | 
 | ||||||
| static int g_loc_X __force_data; | static int g_loc_X __force_data; | ||||||
| static int g_loc_Y __force_data; | static int g_loc_Y __force_data; | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ | ||||||
| #include <linux/linux_logo.h> | #include <linux/linux_logo.h> | ||||||
| 
 | 
 | ||||||
| /* All of prom_init bss lives here */ | /* All of prom_init bss lives here */ | ||||||
| #define __prombss __section(.bss.prominit) | #define __prombss __section(".bss.prominit") | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Eventually bump that one up |  * Eventually bump that one up | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ | ||||||
| #ifdef CONFIG_BUG | #ifdef CONFIG_BUG | ||||||
| 
 | 
 | ||||||
| #define WARN_ON_ONCE_RM(condition)	({			\ | #define WARN_ON_ONCE_RM(condition)	({			\ | ||||||
| 	static bool __section(.data.unlikely) __warned;		\ | 	static bool __section(".data.unlikely") __warned;	\ | ||||||
| 	int __ret_warn_once = !!(condition);			\ | 	int __ret_warn_once = !!(condition);			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (unlikely(__ret_warn_once && !__warned)) {		\ | 	if (unlikely(__ret_warn_once && !__warned)) {		\ | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
| 
 | 
 | ||||||
| #define SOC_EARLY_INIT_DECLARE(name, compat, fn)			\ | #define SOC_EARLY_INIT_DECLARE(name, compat, fn)			\ | ||||||
| 	static const struct of_device_id __soc_early_init__##name	\ | 	static const struct of_device_id __soc_early_init__##name	\ | ||||||
| 		__used __section(__soc_early_init_table)		\ | 		__used __section("__soc_early_init_table")		\ | ||||||
| 		 = { .compatible = compat, .data = fn  } | 		 = { .compatible = compat, .data = fn  } | ||||||
| 
 | 
 | ||||||
| void soc_early_init(void); | void soc_early_init(void); | ||||||
|  | @ -46,7 +46,7 @@ struct soc_builtin_dtb { | ||||||
| 	}								\ | 	}								\ | ||||||
| 									\ | 									\ | ||||||
| 	static const struct soc_builtin_dtb __soc_builtin_dtb__##name	\ | 	static const struct soc_builtin_dtb __soc_builtin_dtb__##name	\ | ||||||
| 		__used __section(__soc_builtin_dtb_table) =		\ | 		__used __section("__soc_builtin_dtb_table") =		\ | ||||||
| 	{								\ | 	{								\ | ||||||
| 		.vendor_id = vendor,					\ | 		.vendor_id = vendor,					\ | ||||||
| 		.arch_id   = arch,					\ | 		.arch_id   = arch,					\ | ||||||
|  |  | ||||||
|  | @ -15,8 +15,8 @@ | ||||||
| 
 | 
 | ||||||
| const struct cpu_operations *cpu_ops[NR_CPUS] __ro_after_init; | const struct cpu_operations *cpu_ops[NR_CPUS] __ro_after_init; | ||||||
| 
 | 
 | ||||||
| void *__cpu_up_stack_pointer[NR_CPUS] __section(.data); | void *__cpu_up_stack_pointer[NR_CPUS] __section(".data"); | ||||||
| void *__cpu_up_task_pointer[NR_CPUS] __section(.data); | void *__cpu_up_task_pointer[NR_CPUS] __section(".data"); | ||||||
| 
 | 
 | ||||||
| extern const struct cpu_operations cpu_ops_sbi; | extern const struct cpu_operations cpu_ops_sbi; | ||||||
| extern const struct cpu_operations cpu_ops_spinwait; | extern const struct cpu_operations cpu_ops_spinwait; | ||||||
|  |  | ||||||
|  | @ -32,7 +32,7 @@ | ||||||
| #include "head.h" | #include "head.h" | ||||||
| 
 | 
 | ||||||
| #if defined(CONFIG_DUMMY_CONSOLE) || defined(CONFIG_EFI) | #if defined(CONFIG_DUMMY_CONSOLE) || defined(CONFIG_EFI) | ||||||
| struct screen_info screen_info __section(.data) = { | struct screen_info screen_info __section(".data") = { | ||||||
| 	.orig_video_lines	= 30, | 	.orig_video_lines	= 30, | ||||||
| 	.orig_video_cols	= 80, | 	.orig_video_cols	= 80, | ||||||
| 	.orig_video_mode	= 0, | 	.orig_video_mode	= 0, | ||||||
|  | @ -47,7 +47,7 @@ struct screen_info screen_info __section(.data) = { | ||||||
|  * This is used before the kernel initializes the BSS so it can't be in the |  * This is used before the kernel initializes the BSS so it can't be in the | ||||||
|  * BSS. |  * BSS. | ||||||
|  */ |  */ | ||||||
| atomic_t hart_lottery __section(.sdata); | atomic_t hart_lottery __section(".sdata"); | ||||||
| unsigned long boot_cpu_hartid; | unsigned long boot_cpu_hartid; | ||||||
| static DEFINE_PER_CPU(struct cpu, cpu_devices); | static DEFINE_PER_CPU(struct cpu, cpu_devices); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -46,7 +46,7 @@ struct diag_ops __bootdata_preserved(diag_dma_ops) = { | ||||||
| 	.diag0c = _diag0c_dma, | 	.diag0c = _diag0c_dma, | ||||||
| 	.diag308_reset = _diag308_reset_dma | 	.diag308_reset = _diag308_reset_dma | ||||||
| }; | }; | ||||||
| static struct diag210 _diag210_tmp_dma __section(.dma.data); | static struct diag210 _diag210_tmp_dma __section(".dma.data"); | ||||||
| struct diag210 *__bootdata_preserved(__diag210_tmp_dma) = &_diag210_tmp_dma; | struct diag210 *__bootdata_preserved(__diag210_tmp_dma) = &_diag210_tmp_dma; | ||||||
| 
 | 
 | ||||||
| void error(char *x) | void error(char *x) | ||||||
|  |  | ||||||
|  | @ -14,6 +14,6 @@ | ||||||
| #define L1_CACHE_SHIFT     8 | #define L1_CACHE_SHIFT     8 | ||||||
| #define NET_SKB_PAD	   32 | #define NET_SKB_PAD	   32 | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __section(.data..read_mostly) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -26,14 +26,14 @@ static inline int arch_is_kernel_initmem_freed(unsigned long addr) | ||||||
|  * final .boot.data section, which should be identical in the decompressor and |  * final .boot.data section, which should be identical in the decompressor and | ||||||
|  * the decompressed kernel (that is checked during the build). |  * the decompressed kernel (that is checked during the build). | ||||||
|  */ |  */ | ||||||
| #define __bootdata(var) __section(.boot.data.var) var | #define __bootdata(var) __section(".boot.data.var") var | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * .boot.preserved.data is similar to .boot.data, but it is not part of the |  * .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 |  * .init section and thus will be preserved for later use in the decompressed | ||||||
|  * kernel. |  * kernel. | ||||||
|  */ |  */ | ||||||
| #define __bootdata_preserved(var) __section(.boot.preserved.data.var) var | #define __bootdata_preserved(var) __section(".boot.preserved.data.var") var | ||||||
| 
 | 
 | ||||||
| extern unsigned long __sdma, __edma; | extern unsigned long __sdma, __edma; | ||||||
| extern unsigned long __stext_dma, __etext_dma; | extern unsigned long __stext_dma, __etext_dma; | ||||||
|  |  | ||||||
|  | @ -48,7 +48,7 @@ | ||||||
| #include <asm/uv.h> | #include <asm/uv.h> | ||||||
| #include <linux/virtio_config.h> | #include <linux/virtio_config.h> | ||||||
| 
 | 
 | ||||||
| pgd_t swapper_pg_dir[PTRS_PER_PGD] __section(.bss..swapper_pg_dir); | pgd_t swapper_pg_dir[PTRS_PER_PGD] __section(".bss..swapper_pg_dir"); | ||||||
| 
 | 
 | ||||||
| unsigned long empty_zero_page, zero_page_mask; | unsigned long empty_zero_page, zero_page_mask; | ||||||
| EXPORT_SYMBOL(empty_zero_page); | EXPORT_SYMBOL(empty_zero_page); | ||||||
|  |  | ||||||
|  | @ -49,7 +49,7 @@ static struct plat_smp_ops dummy_smp_ops = { | ||||||
| 
 | 
 | ||||||
| extern const struct of_cpu_method __cpu_method_of_table[]; | extern const struct of_cpu_method __cpu_method_of_table[]; | ||||||
| const struct of_cpu_method __cpu_method_of_table_sentinel | const struct of_cpu_method __cpu_method_of_table_sentinel | ||||||
| 	__section(__cpu_method_of_table_end); | 	__section("__cpu_method_of_table_end"); | ||||||
| 
 | 
 | ||||||
| static void sh_of_smp_probe(void) | static void sh_of_smp_probe(void) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| 
 | 
 | ||||||
| #define L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT) | #define L1_CACHE_BYTES		(1 << L1_CACHE_SHIFT) | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #ifndef __ASSEMBLY__ | #ifndef __ASSEMBLY__ | ||||||
| struct cache_info { | struct cache_info { | ||||||
|  |  | ||||||
|  | @ -36,6 +36,6 @@ extern struct sh_machine_vector sh_mv; | ||||||
| #define get_system_type()	sh_mv.mv_name | #define get_system_type()	sh_mv.mv_name | ||||||
| 
 | 
 | ||||||
| #define __initmv \ | #define __initmv \ | ||||||
| 	__used __section(.machvec.init) | 	__used __section(".machvec.init") | ||||||
| 
 | 
 | ||||||
| #endif /* _ASM_SH_MACHVEC_H */ | #endif /* _ASM_SH_MACHVEC_H */ | ||||||
|  |  | ||||||
|  | @ -71,7 +71,7 @@ struct of_cpu_method { | ||||||
| 
 | 
 | ||||||
| #define CPU_METHOD_OF_DECLARE(name, _method, _ops)			\ | #define CPU_METHOD_OF_DECLARE(name, _method, _ops)			\ | ||||||
| 	static const struct of_cpu_method __cpu_method_of_table_##name	\ | 	static const struct of_cpu_method __cpu_method_of_table_##name	\ | ||||||
| 		__used __section(__cpu_method_of_table)			\ | 		__used __section("__cpu_method_of_table")		\ | ||||||
| 		= { .method = _method, .ops = _ops } | 		= { .method = _method, .ops = _ops } | ||||||
| 
 | 
 | ||||||
| #else | #else | ||||||
|  |  | ||||||
|  | @ -21,6 +21,6 @@ | ||||||
| 
 | 
 | ||||||
| #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) | #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #endif /* !(_SPARC_CACHE_H) */ | #endif /* !(_SPARC_CACHE_H) */ | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ static void draw_byte_32(unsigned char *bits, unsigned int *base, int rb); | ||||||
| static void draw_byte_16(unsigned char *bits, unsigned int *base, int rb); | static void draw_byte_16(unsigned char *bits, unsigned int *base, int rb); | ||||||
| static void draw_byte_8(unsigned char *bits, unsigned int *base, int rb); | static void draw_byte_8(unsigned char *bits, unsigned int *base, int rb); | ||||||
| 
 | 
 | ||||||
| #define __force_data __attribute__((__section__(".data"))) | #define __force_data __section(".data") | ||||||
| 
 | 
 | ||||||
| static int g_loc_X __force_data; | static int g_loc_X __force_data; | ||||||
| static int g_loc_Y __force_data; | static int g_loc_Y __force_data; | ||||||
|  |  | ||||||
|  | @ -45,15 +45,15 @@ typedef void (*exitcall_t)(void); | ||||||
| 
 | 
 | ||||||
| /* These are for everybody (although not all archs will actually
 | /* These are for everybody (although not all archs will actually
 | ||||||
|    discard it in modules) */ |    discard it in modules) */ | ||||||
| #define __init		__section(.init.text) | #define __init		__section(".init.text") | ||||||
| #define __initdata	__section(.init.data) | #define __initdata	__section(".init.data") | ||||||
| #define __exitdata	__section(.exit.data) | #define __exitdata	__section(".exit.data") | ||||||
| #define __exit_call	__used __section(.exitcall.exit) | #define __exit_call	__used __section(".exitcall.exit") | ||||||
| 
 | 
 | ||||||
| #ifdef MODULE | #ifdef MODULE | ||||||
| #define __exit		__section(.exit.text) | #define __exit		__section(".exit.text") | ||||||
| #else | #else | ||||||
| #define __exit		__used __section(.exit.text) | #define __exit		__used __section(".exit.text") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  | @ -102,10 +102,10 @@ extern struct uml_param __uml_setup_start, __uml_setup_end; | ||||||
|  * Mark functions and data as being only used at initialization |  * Mark functions and data as being only used at initialization | ||||||
|  * or exit time. |  * or exit time. | ||||||
|  */ |  */ | ||||||
| #define __uml_init_setup	__used __section(.uml.setup.init) | #define __uml_init_setup	__used __section(".uml.setup.init") | ||||||
| #define __uml_setup_help	__used __section(.uml.help.init) | #define __uml_setup_help	__used __section(".uml.help.init") | ||||||
| #define __uml_postsetup_call	__used __section(.uml.postsetup.init) | #define __uml_postsetup_call	__used __section(".uml.postsetup.init") | ||||||
| #define __uml_exit_call		__used __section(.uml.exitcall.exit) | #define __uml_exit_call		__used __section(".uml.exitcall.exit") | ||||||
| 
 | 
 | ||||||
| #ifdef __UM_HOST__ | #ifdef __UM_HOST__ | ||||||
| 
 | 
 | ||||||
|  | @ -120,7 +120,7 @@ extern struct uml_param __uml_setup_start, __uml_setup_end; | ||||||
| 
 | 
 | ||||||
| #define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn | #define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn | ||||||
| 
 | 
 | ||||||
| #define __init_call	__used __section(.initcall.init) | #define __init_call	__used __section(".initcall.init") | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|  * on some systems. |  * on some systems. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| void __attribute__ ((__section__ (".__syscall_stub"))) | void __section(".__syscall_stub") | ||||||
| stub_clone_handler(void) | stub_clone_handler(void) | ||||||
| { | { | ||||||
| 	struct stub_data *data = (struct stub_data *) STUB_DATA; | 	struct stub_data *data = (struct stub_data *) STUB_DATA; | ||||||
|  |  | ||||||
|  | @ -52,7 +52,7 @@ struct cpuinfo_um boot_cpu_data = { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| union thread_union cpu0_irqstack | union thread_union cpu0_irqstack | ||||||
| 	__attribute__((__section__(".data..init_irqstack"))) = | 	__section(".data..init_irqstack") = | ||||||
| 		{ .thread_info = INIT_THREAD_INFO(init_task) }; | 		{ .thread_info = INIT_THREAD_INFO(init_task) }; | ||||||
| 
 | 
 | ||||||
| /* Changed in setup_arch, which is called in early boot */ | /* Changed in setup_arch, which is called in early boot */ | ||||||
|  |  | ||||||
|  | @ -10,9 +10,9 @@ | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_X86_5LEVEL | #ifdef CONFIG_X86_5LEVEL | ||||||
| /* __pgtable_l5_enabled needs to be in .data to avoid being cleared along with .bss */ | /* __pgtable_l5_enabled needs to be in .data to avoid being cleared along with .bss */ | ||||||
| unsigned int __section(.data) __pgtable_l5_enabled; | unsigned int __section(".data") __pgtable_l5_enabled; | ||||||
| unsigned int __section(.data) pgdir_shift = 39; | unsigned int __section(".data") pgdir_shift = 39; | ||||||
| unsigned int __section(.data) ptrs_per_p4d = 1; | unsigned int __section(".data") ptrs_per_p4d = 1; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| struct paging_config { | struct paging_config { | ||||||
|  | @ -30,7 +30,7 @@ static char trampoline_save[TRAMPOLINE_32BIT_SIZE]; | ||||||
|  * Avoid putting the pointer into .bss as it will be cleared between |  * Avoid putting the pointer into .bss as it will be cleared between | ||||||
|  * paging_prepare() and extract_kernel(). |  * paging_prepare() and extract_kernel(). | ||||||
|  */ |  */ | ||||||
| unsigned long *trampoline_32bit __section(.data); | unsigned long *trampoline_32bit __section(".data"); | ||||||
| 
 | 
 | ||||||
| extern struct boot_params *boot_params; | extern struct boot_params *boot_params; | ||||||
| int cmdline_find_option_bool(const char *option); | int cmdline_find_option_bool(const char *option); | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ int early_serial_base; | ||||||
|  * error during initialization. |  * error during initialization. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| static void __attribute__((section(".inittext"))) serial_putchar(int ch) | static void __section(".inittext") serial_putchar(int ch) | ||||||
| { | { | ||||||
| 	unsigned timeout = 0xffff; | 	unsigned timeout = 0xffff; | ||||||
| 
 | 
 | ||||||
|  | @ -35,7 +35,7 @@ static void __attribute__((section(".inittext"))) serial_putchar(int ch) | ||||||
| 	outb(ch, early_serial_base + TXR); | 	outb(ch, early_serial_base + TXR); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void __attribute__((section(".inittext"))) bios_putchar(int ch) | static void __section(".inittext") bios_putchar(int ch) | ||||||
| { | { | ||||||
| 	struct biosregs ireg; | 	struct biosregs ireg; | ||||||
| 
 | 
 | ||||||
|  | @ -47,7 +47,7 @@ static void __attribute__((section(".inittext"))) bios_putchar(int ch) | ||||||
| 	intcall(0x10, &ireg, NULL); | 	intcall(0x10, &ireg, NULL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void __attribute__((section(".inittext"))) putchar(int ch) | void __section(".inittext") putchar(int ch) | ||||||
| { | { | ||||||
| 	if (ch == '\n') | 	if (ch == '\n') | ||||||
| 		putchar('\r');	/* \n -> \r\n */ | 		putchar('\r');	/* \n -> \r\n */ | ||||||
|  | @ -58,7 +58,7 @@ void __attribute__((section(".inittext"))) putchar(int ch) | ||||||
| 		serial_putchar(ch); | 		serial_putchar(ch); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void __attribute__((section(".inittext"))) puts(const char *str) | void __section(".inittext") puts(const char *str) | ||||||
| { | { | ||||||
| 	while (*str) | 	while (*str) | ||||||
| 		putchar(*str++); | 		putchar(*str++); | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ struct card_info { | ||||||
| 	u16 xmode_n;		/* Size of unprobed mode range */ | 	u16 xmode_n;		/* Size of unprobed mode range */ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define __videocard struct card_info __attribute__((used,section(".videocards"))) | #define __videocard struct card_info __section(".videocards") __attribute__((used)) | ||||||
| extern struct card_info video_cards[], video_cards_end[]; | extern struct card_info video_cards[], video_cards_end[]; | ||||||
| 
 | 
 | ||||||
| int mode_defined(u16 mode);	/* video.c */ | int mode_defined(u16 mode);	/* video.c */ | ||||||
|  |  | ||||||
|  | @ -374,12 +374,12 @@ extern struct apic *apic; | ||||||
| #define apic_driver(sym)					\ | #define apic_driver(sym)					\ | ||||||
| 	static const struct apic *__apicdrivers_##sym __used		\ | 	static const struct apic *__apicdrivers_##sym __used		\ | ||||||
| 	__aligned(sizeof(struct apic *))			\ | 	__aligned(sizeof(struct apic *))			\ | ||||||
| 	__section(.apicdrivers) = { &sym } | 	__section(".apicdrivers") = { &sym } | ||||||
| 
 | 
 | ||||||
| #define apic_drivers(sym1, sym2)					\ | #define apic_drivers(sym1, sym2)					\ | ||||||
| 	static struct apic *__apicdrivers_##sym1##sym2[2] __used	\ | 	static struct apic *__apicdrivers_##sym1##sym2[2] __used	\ | ||||||
| 	__aligned(sizeof(struct apic *))				\ | 	__aligned(sizeof(struct apic *))				\ | ||||||
| 	__section(.apicdrivers) = { &sym1, &sym2 } | 	__section(".apicdrivers") = { &sym1, &sym2 } | ||||||
| 
 | 
 | ||||||
| extern struct apic *__apicdrivers[], *__apicdrivers_end[]; | extern struct apic *__apicdrivers[], *__apicdrivers_end[]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| #define L1_CACHE_SHIFT	(CONFIG_X86_L1_CACHE_SHIFT) | #define L1_CACHE_SHIFT	(CONFIG_X86_L1_CACHE_SHIFT) | ||||||
| #define L1_CACHE_BYTES	(1 << L1_CACHE_SHIFT) | #define L1_CACHE_BYTES	(1 << L1_CACHE_SHIFT) | ||||||
| 
 | 
 | ||||||
| #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | #define __read_mostly __section(".data..read_mostly") | ||||||
| 
 | 
 | ||||||
| #define INTERNODE_CACHE_SHIFT CONFIG_X86_INTERNODE_CACHE_SHIFT | #define INTERNODE_CACHE_SHIFT CONFIG_X86_INTERNODE_CACHE_SHIFT | ||||||
| #define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT) | #define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT) | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ struct devs_id { | ||||||
| 
 | 
 | ||||||
| #define sfi_device(i)								\ | #define sfi_device(i)								\ | ||||||
| 	static const struct devs_id *const __intel_mid_sfi_##i##_dev __used	\ | 	static const struct devs_id *const __intel_mid_sfi_##i##_dev __used	\ | ||||||
| 	__attribute__((__section__(".x86_intel_mid_dev.init"))) = &i | 	__section(".x86_intel_mid_dev.init") = &i | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| * struct mid_sd_board_info - template for SD device creation | * struct mid_sd_board_info - template for SD device creation | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ | ||||||
| #include <asm/nospec-branch.h> | #include <asm/nospec-branch.h> | ||||||
| 
 | 
 | ||||||
| /* Provide __cpuidle; we can't safely include <linux/cpu.h> */ | /* Provide __cpuidle; we can't safely include <linux/cpu.h> */ | ||||||
| #define __cpuidle __attribute__((__section__(".cpuidle.text"))) | #define __cpuidle __section(".cpuidle.text") | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Interrupt control: |  * Interrupt control: | ||||||
|  |  | ||||||
|  | @ -54,7 +54,7 @@ bool sme_active(void); | ||||||
| bool sev_active(void); | bool sev_active(void); | ||||||
| bool sev_es_active(void); | bool sev_es_active(void); | ||||||
| 
 | 
 | ||||||
| #define __bss_decrypted __attribute__((__section__(".bss..decrypted"))) | #define __bss_decrypted __section(".bss..decrypted") | ||||||
| 
 | 
 | ||||||
| #else	/* !CONFIG_AMD_MEM_ENCRYPT */ | #else	/* !CONFIG_AMD_MEM_ENCRYPT */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -119,7 +119,7 @@ void *extend_brk(size_t size, size_t align); | ||||||
|  * executable.) |  * executable.) | ||||||
|  */ |  */ | ||||||
| #define RESERVE_BRK(name,sz)						\ | #define RESERVE_BRK(name,sz)						\ | ||||||
| 	static void __section(.discard.text) __used notrace		\ | 	static void __section(".discard.text") __used notrace		\ | ||||||
| 	__brk_reservation_fn_##name##__(void) {				\ | 	__brk_reservation_fn_##name##__(void) {				\ | ||||||
| 		asm volatile (						\ | 		asm volatile (						\ | ||||||
| 			".pushsection .brk_reservation,\"aw\",@nobits;" \ | 			".pushsection .brk_reservation,\"aw\",@nobits;" \ | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ struct _tlb_table { | ||||||
| 
 | 
 | ||||||
| #define cpu_dev_register(cpu_devX) \ | #define cpu_dev_register(cpu_devX) \ | ||||||
| 	static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \ | 	static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \ | ||||||
| 	__attribute__((__section__(".x86_cpu_dev.init"))) = \ | 	__section(".x86_cpu_dev.init") = \ | ||||||
| 	&cpu_devX; | 	&cpu_devX; | ||||||
| 
 | 
 | ||||||
| extern const struct cpu_dev *const __x86_cpu_dev_start[], | extern const struct cpu_dev *const __x86_cpu_dev_start[], | ||||||
|  |  | ||||||
|  | @ -84,7 +84,7 @@ static struct desc_ptr startup_gdt_descr = { | ||||||
| 	.address = 0, | 	.address = 0, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define __head	__section(.head.text) | #define __head	__section(".head.text") | ||||||
| 
 | 
 | ||||||
| static void __head *fixup_pointer(void *ptr, unsigned long physaddr) | static void __head *fixup_pointer(void *ptr, unsigned long physaddr) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -37,13 +37,13 @@ | ||||||
|  * reside in the .data section so as not to be zeroed out when the .bss |  * reside in the .data section so as not to be zeroed out when the .bss | ||||||
|  * section is later cleared. |  * section is later cleared. | ||||||
|  */ |  */ | ||||||
| u64 sme_me_mask __section(.data) = 0; | u64 sme_me_mask __section(".data") = 0; | ||||||
| u64 sev_status __section(.data) = 0; | u64 sev_status __section(".data") = 0; | ||||||
| EXPORT_SYMBOL(sme_me_mask); | EXPORT_SYMBOL(sme_me_mask); | ||||||
| DEFINE_STATIC_KEY_FALSE(sev_enable_key); | DEFINE_STATIC_KEY_FALSE(sev_enable_key); | ||||||
| EXPORT_SYMBOL_GPL(sev_enable_key); | EXPORT_SYMBOL_GPL(sev_enable_key); | ||||||
| 
 | 
 | ||||||
| bool sev_enabled __section(.data); | bool sev_enabled __section(".data"); | ||||||
| 
 | 
 | ||||||
| /* Buffer used for early in-place encryption by BSP, no locking needed */ | /* Buffer used for early in-place encryption by BSP, no locking needed */ | ||||||
| static char sme_early_buffer[PAGE_SIZE] __initdata __aligned(PAGE_SIZE); | static char sme_early_buffer[PAGE_SIZE] __initdata __aligned(PAGE_SIZE); | ||||||
|  |  | ||||||
|  | @ -81,7 +81,7 @@ struct sme_populate_pgd_data { | ||||||
|  * section is 2MB aligned to allow for simple pagetable setup using only |  * section is 2MB aligned to allow for simple pagetable setup using only | ||||||
|  * PMD entries (see vmlinux.lds.S). |  * PMD entries (see vmlinux.lds.S). | ||||||
|  */ |  */ | ||||||
| static char sme_workarea[2 * PMD_PAGE_SIZE] __section(.init.scratch); | static char sme_workarea[2 * PMD_PAGE_SIZE] __section(".init.scratch"); | ||||||
| 
 | 
 | ||||||
| static char sme_cmdline_arg[] __initdata = "mem_encrypt"; | static char sme_cmdline_arg[] __initdata = "mem_encrypt"; | ||||||
| static char sme_cmdline_on[]  __initdata = "on"; | static char sme_cmdline_on[]  __initdata = "on"; | ||||||
|  |  | ||||||
|  | @ -19,8 +19,8 @@ | ||||||
|  * pvh_bootparams and pvh_start_info need to live in the data segment since |  * pvh_bootparams and pvh_start_info need to live in the data segment since | ||||||
|  * they are used after startup_{32|64}, which clear .bss, are invoked. |  * they are used after startup_{32|64}, which clear .bss, are invoked. | ||||||
|  */ |  */ | ||||||
| struct boot_params pvh_bootparams __attribute__((section(".data"))); | struct boot_params pvh_bootparams __section(".data"); | ||||||
| struct hvm_start_info pvh_start_info __attribute__((section(".data"))); | struct hvm_start_info pvh_start_info __section(".data"); | ||||||
| 
 | 
 | ||||||
| unsigned int pvh_start_info_sz = sizeof(pvh_start_info); | unsigned int pvh_start_info_sz = sizeof(pvh_start_info); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -14,9 +14,9 @@ | ||||||
| 
 | 
 | ||||||
| #include "../boot/string.h" | #include "../boot/string.h" | ||||||
| 
 | 
 | ||||||
| u8 purgatory_sha256_digest[SHA256_DIGEST_SIZE] __section(.kexec-purgatory); | u8 purgatory_sha256_digest[SHA256_DIGEST_SIZE] __section(".kexec-purgatory"); | ||||||
| 
 | 
 | ||||||
| struct kexec_sha_region purgatory_sha_regions[KEXEC_SEGMENT_MAX] __section(.kexec-purgatory); | struct kexec_sha_region purgatory_sha_regions[KEXEC_SEGMENT_MAX] __section(".kexec-purgatory"); | ||||||
| 
 | 
 | ||||||
| static int verify_sha256_digest(void) | static int verify_sha256_digest(void) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| #include <sysdep/mcontext.h> | #include <sysdep/mcontext.h> | ||||||
| #include <sys/ucontext.h> | #include <sys/ucontext.h> | ||||||
| 
 | 
 | ||||||
| void __attribute__ ((__section__ (".__syscall_stub"))) | void __section(".__syscall_stub") | ||||||
| stub_segv_handler(int sig, siginfo_t *info, void *p) | stub_segv_handler(int sig, siginfo_t *info, void *p) | ||||||
| { | { | ||||||
| 	ucontext_t *uc = p; | 	ucontext_t *uc = p; | ||||||
|  |  | ||||||
|  | @ -71,7 +71,7 @@ EXPORT_SYMBOL_GPL(xen_have_vector_callback); | ||||||
|  * NB: needs to live in .data because it's used by xen_prepare_pvh which runs |  * NB: needs to live in .data because it's used by xen_prepare_pvh which runs | ||||||
|  * before clearing the bss. |  * before clearing the bss. | ||||||
|  */ |  */ | ||||||
| uint32_t xen_start_flags __attribute__((section(".data"))) = 0; | uint32_t xen_start_flags __section(".data") = 0; | ||||||
| EXPORT_SYMBOL(xen_start_flags); | EXPORT_SYMBOL(xen_start_flags); | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|  * The variable xen_pvh needs to live in the data segment since it is used |  * The variable xen_pvh needs to live in the data segment since it is used | ||||||
|  * after startup_{32|64} is invoked, which will clear the .bss segment. |  * after startup_{32|64} is invoked, which will clear the .bss segment. | ||||||
|  */ |  */ | ||||||
| bool xen_pvh __attribute__((section(".data"))) = 0; | bool xen_pvh __section(".data") = 0; | ||||||
| 
 | 
 | ||||||
| void __init xen_pvh_init(struct boot_params *boot_params) | void __init xen_pvh_init(struct boot_params *boot_params) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -93,7 +93,7 @@ typedef struct tagtable { | ||||||
| } tagtable_t; | } tagtable_t; | ||||||
| 
 | 
 | ||||||
| #define __tagtable(tag, fn) static tagtable_t __tagtable_##fn 		\ | #define __tagtable(tag, fn) static tagtable_t __tagtable_##fn 		\ | ||||||
| 	__attribute__((used, section(".taglist"))) = { tag, fn } | 	__section(".taglist") __attribute__((used)) = { tag, fn } | ||||||
| 
 | 
 | ||||||
| /* parse current tag */ | /* parse current tag */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4363,7 +4363,7 @@ struct of_clk_provider { | ||||||
| 
 | 
 | ||||||
| extern struct of_device_id __clk_of_table; | extern struct of_device_id __clk_of_table; | ||||||
| static const struct of_device_id __clk_of_table_sentinel | static const struct of_device_id __clk_of_table_sentinel | ||||||
| 	__used __section(__clk_of_table_end); | 	__used __section("__clk_of_table_end"); | ||||||
| 
 | 
 | ||||||
| static LIST_HEAD(of_clk_providers); | static LIST_HEAD(of_clk_providers); | ||||||
| static DEFINE_MUTEX(of_clk_mutex); | static DEFINE_MUTEX(of_clk_mutex); | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
| extern struct of_device_id __timer_of_table[]; | extern struct of_device_id __timer_of_table[]; | ||||||
| 
 | 
 | ||||||
| static const struct of_device_id __timer_of_table_sentinel | static const struct of_device_id __timer_of_table_sentinel | ||||||
| 	__used __section(__timer_of_table_end); | 	__used __section("__timer_of_table_end"); | ||||||
| 
 | 
 | ||||||
| void __init timer_probe(void) | void __init timer_probe(void) | ||||||
| { | { | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|  * special section. |  * special section. | ||||||
|  */ |  */ | ||||||
| static const struct of_device_id | static const struct of_device_id | ||||||
| irqchip_of_match_end __used __section(__irqchip_of_table_end); | irqchip_of_match_end __used __section("__irqchip_of_table_end"); | ||||||
| 
 | 
 | ||||||
| extern struct of_device_id __irqchip_of_table[]; | extern struct of_device_id __irqchip_of_table[]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -162,7 +162,7 @@ static int __init __reserved_mem_alloc_size(unsigned long node, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static const struct of_device_id __rmem_of_table_sentinel | static const struct of_device_id __rmem_of_table_sentinel | ||||||
| 	__used __section(__reservedmem_of_table_end); | 	__used __section("__reservedmem_of_table_end"); | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * __reserved_mem_init_node() - call region specific reserved memory init code |  * __reserved_mem_init_node() - call region specific reserved memory init code | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ extern struct thermal_governor *__governor_thermal_table_end[]; | ||||||
| 
 | 
 | ||||||
| #define THERMAL_TABLE_ENTRY(table, name)			\ | #define THERMAL_TABLE_ENTRY(table, name)			\ | ||||||
| 	static typeof(name) *__thermal_table_entry_##name	\ | 	static typeof(name) *__thermal_table_entry_##name	\ | ||||||
| 	__used __section(__##table##_thermal_table) = &name | 	__used __section("__" #table "_thermal_table") = &name | ||||||
| 
 | 
 | ||||||
| #define THERMAL_GOVERNOR_DECLARE(name)	THERMAL_TABLE_ENTRY(governor, name) | #define THERMAL_GOVERNOR_DECLARE(name)	THERMAL_TABLE_ENTRY(governor, name) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ do {									\ | ||||||
| 
 | 
 | ||||||
| #define xfs_printk_once(func, dev, fmt, ...)			\ | #define xfs_printk_once(func, dev, fmt, ...)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	static bool __section(.data.once) __print_once;		\ | 	static bool __section(".data.once") __print_once;	\ | ||||||
| 	bool __ret_print_once = !__print_once; 			\ | 	bool __ret_print_once = !__print_once; 			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (!__print_once) {					\ | 	if (!__print_once) {					\ | ||||||
|  |  | ||||||
|  | @ -141,7 +141,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint, | ||||||
| 
 | 
 | ||||||
| #ifndef WARN_ON_ONCE | #ifndef WARN_ON_ONCE | ||||||
| #define WARN_ON_ONCE(condition)	({				\ | #define WARN_ON_ONCE(condition)	({				\ | ||||||
| 	static bool __section(.data.once) __warned;		\ | 	static bool __section(".data.once") __warned;		\ | ||||||
| 	int __ret_warn_once = !!(condition);			\ | 	int __ret_warn_once = !!(condition);			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (unlikely(__ret_warn_once && !__warned)) {		\ | 	if (unlikely(__ret_warn_once && !__warned)) {		\ | ||||||
|  | @ -153,7 +153,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint, | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define WARN_ONCE(condition, format...)	({			\ | #define WARN_ONCE(condition, format...)	({			\ | ||||||
| 	static bool __section(.data.once) __warned;		\ | 	static bool __section(".data.once") __warned;		\ | ||||||
| 	int __ret_warn_once = !!(condition);			\ | 	int __ret_warn_once = !!(condition);			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (unlikely(__ret_warn_once && !__warned)) {		\ | 	if (unlikely(__ret_warn_once && !__warned)) {		\ | ||||||
|  | @ -164,7 +164,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint, | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define WARN_TAINT_ONCE(condition, taint, format...)	({	\ | #define WARN_TAINT_ONCE(condition, taint, format...)	({	\ | ||||||
| 	static bool __section(.data.once) __warned;		\ | 	static bool __section(".data.once") __warned;		\ | ||||||
| 	int __ret_warn_once = !!(condition);			\ | 	int __ret_warn_once = !!(condition);			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (unlikely(__ret_warn_once && !__warned)) {		\ | 	if (unlikely(__ret_warn_once && !__warned)) {		\ | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ struct pt_regs; | ||||||
|  */ |  */ | ||||||
| #define ALLOW_ERROR_INJECTION(fname, _etype)				\ | #define ALLOW_ERROR_INJECTION(fname, _etype)				\ | ||||||
| static struct error_injection_entry __used				\ | static struct error_injection_entry __used				\ | ||||||
| 	__attribute__((__section__("_error_injection_whitelist")))	\ | 	__section("_error_injection_whitelist")				\ | ||||||
| 	_eil_addr_##fname = {						\ | 	_eil_addr_##fname = {						\ | ||||||
| 		.addr = (unsigned long)fname,				\ | 		.addr = (unsigned long)fname,				\ | ||||||
| 		.etype = EI_ETYPE_##_etype,				\ | 		.etype = EI_ETYPE_##_etype,				\ | ||||||
|  |  | ||||||
|  | @ -10,11 +10,11 @@ | ||||||
|  */ |  */ | ||||||
| # define __NOKPROBE_SYMBOL(fname)				\ | # define __NOKPROBE_SYMBOL(fname)				\ | ||||||
| static unsigned long __used					\ | static unsigned long __used					\ | ||||||
| 	__attribute__((__section__("_kprobe_blacklist")))	\ | 	__section("_kprobe_blacklist")				\ | ||||||
| 	_kbl_addr_##fname = (unsigned long)fname; | 	_kbl_addr_##fname = (unsigned long)fname; | ||||||
| # define NOKPROBE_SYMBOL(fname)	__NOKPROBE_SYMBOL(fname) | # define NOKPROBE_SYMBOL(fname)	__NOKPROBE_SYMBOL(fname) | ||||||
| /* Use this to forbid a kprobes attach on very low level functions */ | /* Use this to forbid a kprobes attach on very low level functions */ | ||||||
| # define __kprobes	__attribute__((__section__(".kprobes.text"))) | # define __kprobes	__section(".kprobes.text") | ||||||
| # define nokprobe_inline	__always_inline | # define nokprobe_inline	__always_inline | ||||||
| #else | #else | ||||||
| # define NOKPROBE_SYMBOL(fname) | # define NOKPROBE_SYMBOL(fname) | ||||||
|  |  | ||||||
|  | @ -288,7 +288,7 @@ static inline int kunit_run_all_tests(void) | ||||||
| 	static struct kunit_suite *unique_array[] = { __VA_ARGS__, NULL };     \ | 	static struct kunit_suite *unique_array[] = { __VA_ARGS__, NULL };     \ | ||||||
| 	kunit_test_suites_for_module(unique_array);			       \ | 	kunit_test_suites_for_module(unique_array);			       \ | ||||||
| 	static struct kunit_suite **unique_suites			       \ | 	static struct kunit_suite **unique_suites			       \ | ||||||
| 	__used __section(.kunit_test_suites) = unique_array | 	__used __section(".kunit_test_suites") = unique_array | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * kunit_test_suites() - used to register one or more &struct kunit_suite |  * kunit_test_suites() - used to register one or more &struct kunit_suite | ||||||
|  |  | ||||||
|  | @ -1153,7 +1153,7 @@ struct acpi_probe_entry { | ||||||
| #define ACPI_DECLARE_PROBE_ENTRY(table, name, table_id, subtable,	\ | #define ACPI_DECLARE_PROBE_ENTRY(table, name, table_id, subtable,	\ | ||||||
| 				 valid, data, fn)			\ | 				 valid, data, fn)			\ | ||||||
| 	static const struct acpi_probe_entry __acpi_probe_##name	\ | 	static const struct acpi_probe_entry __acpi_probe_##name	\ | ||||||
| 		__used __section(__##table##_acpi_probe_table) = {	\ | 		__used __section("__" #table "_acpi_probe_table") = {	\ | ||||||
| 			.id = table_id,					\ | 			.id = table_id,					\ | ||||||
| 			.type = subtable,				\ | 			.type = subtable,				\ | ||||||
| 			.subtable_valid = valid,			\ | 			.subtable_valid = valid,			\ | ||||||
|  | @ -1164,7 +1164,7 @@ struct acpi_probe_entry { | ||||||
| #define ACPI_DECLARE_SUBTABLE_PROBE_ENTRY(table, name, table_id,	\ | #define ACPI_DECLARE_SUBTABLE_PROBE_ENTRY(table, name, table_id,	\ | ||||||
| 					  subtable, valid, data, fn)	\ | 					  subtable, valid, data, fn)	\ | ||||||
| 	static const struct acpi_probe_entry __acpi_probe_##name	\ | 	static const struct acpi_probe_entry __acpi_probe_##name	\ | ||||||
| 		__used __section(__##table##_acpi_probe_table) = {	\ | 		__used __section("__" #table "_acpi_probe_table") = {	\ | ||||||
| 			.id = table_id,					\ | 			.id = table_id,					\ | ||||||
| 			.type = subtable,				\ | 			.type = subtable,				\ | ||||||
| 			.subtable_valid = valid,			\ | 			.subtable_valid = valid,			\ | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ | ||||||
|  * but may get written to during init, so can't live in .rodata (via "const"). |  * but may get written to during init, so can't live in .rodata (via "const"). | ||||||
|  */ |  */ | ||||||
| #ifndef __ro_after_init | #ifndef __ro_after_init | ||||||
| #define __ro_after_init __attribute__((__section__(".data..ro_after_init"))) | #define __ro_after_init __section(".data..ro_after_init") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #ifndef ____cacheline_aligned | #ifndef ____cacheline_aligned | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, | ||||||
| 			long ______r;					\ | 			long ______r;					\ | ||||||
| 			static struct ftrace_likely_data		\ | 			static struct ftrace_likely_data		\ | ||||||
| 				__aligned(4)				\ | 				__aligned(4)				\ | ||||||
| 				__section(_ftrace_annotated_branch)	\ | 				__section("_ftrace_annotated_branch")	\ | ||||||
| 				______f = {				\ | 				______f = {				\ | ||||||
| 				.data.func = __func__,			\ | 				.data.func = __func__,			\ | ||||||
| 				.data.file = __FILE__,			\ | 				.data.file = __FILE__,			\ | ||||||
|  | @ -60,7 +60,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, | ||||||
| #define __trace_if_value(cond) ({			\ | #define __trace_if_value(cond) ({			\ | ||||||
| 	static struct ftrace_branch_data		\ | 	static struct ftrace_branch_data		\ | ||||||
| 		__aligned(4)				\ | 		__aligned(4)				\ | ||||||
| 		__section(_ftrace_branch)		\ | 		__section("_ftrace_branch")		\ | ||||||
| 		__if_trace = {				\ | 		__if_trace = {				\ | ||||||
| 			.func = __func__,		\ | 			.func = __func__,		\ | ||||||
| 			.file = __FILE__,		\ | 			.file = __FILE__,		\ | ||||||
|  | @ -118,7 +118,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, | ||||||
| 	".popsection\n\t" | 	".popsection\n\t" | ||||||
| 
 | 
 | ||||||
| /* Annotate a C jump table to allow objtool to follow the code flow */ | /* Annotate a C jump table to allow objtool to follow the code flow */ | ||||||
| #define __annotate_jump_table __section(.rodata..c_jump_table) | #define __annotate_jump_table __section(".rodata..c_jump_table") | ||||||
| 
 | 
 | ||||||
| #else | #else | ||||||
| #define annotate_reachable() | #define annotate_reachable() | ||||||
|  | @ -206,7 +206,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, | ||||||
|  * visible to the compiler. |  * visible to the compiler. | ||||||
|  */ |  */ | ||||||
| #define __ADDRESSABLE(sym) \ | #define __ADDRESSABLE(sym) \ | ||||||
| 	static void * __section(.discard.addressable) __used \ | 	static void * __section(".discard.addressable") __used \ | ||||||
| 		__UNIQUE_ID(__PASTE(__addressable_,sym)) = (void *)&sym; | 		__UNIQUE_ID(__PASTE(__addressable_,sym)) = (void *)&sym; | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  |  | ||||||
|  | @ -254,7 +254,7 @@ | ||||||
|  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-section-variable-attribute
 |  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-section-variable-attribute
 | ||||||
|  * clang: https://clang.llvm.org/docs/AttributeReference.html#section-declspec-allocate
 |  * clang: https://clang.llvm.org/docs/AttributeReference.html#section-declspec-allocate
 | ||||||
|  */ |  */ | ||||||
| #define __section(S)                    __attribute__((__section__(#S))) | #define __section(section)              __attribute__((__section__(section))) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-unused-function-attribute
 |  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-unused-function-attribute
 | ||||||
|  |  | ||||||
|  | @ -173,7 +173,7 @@ void cpu_startup_entry(enum cpuhp_state state); | ||||||
| void cpu_idle_poll_ctrl(bool enable); | void cpu_idle_poll_ctrl(bool enable); | ||||||
| 
 | 
 | ||||||
| /* Attach to any functions which should be considered cpuidle. */ | /* Attach to any functions which should be considered cpuidle. */ | ||||||
| #define __cpuidle	__attribute__((__section__(".cpuidle.text"))) | #define __cpuidle	__section(".cpuidle.text") | ||||||
| 
 | 
 | ||||||
| bool cpu_in_idle(unsigned long pc); | bool cpu_in_idle(unsigned long pc); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -84,7 +84,7 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, | ||||||
| 
 | 
 | ||||||
| #define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt)		\ | #define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt)		\ | ||||||
| 	static struct _ddebug  __aligned(8)			\ | 	static struct _ddebug  __aligned(8)			\ | ||||||
| 	__section(__dyndbg) name = {				\ | 	__section("__dyndbg") name = {				\ | ||||||
| 		.modname = KBUILD_MODNAME,			\ | 		.modname = KBUILD_MODNAME,			\ | ||||||
| 		.function = __func__,				\ | 		.function = __func__,				\ | ||||||
| 		.filename = __FILE__,				\ | 		.filename = __FILE__,				\ | ||||||
|  |  | ||||||
|  | @ -130,7 +130,7 @@ struct kernel_symbol { | ||||||
|  * discarded in the final link stage. |  * discarded in the final link stage. | ||||||
|  */ |  */ | ||||||
| #define __ksym_marker(sym)	\ | #define __ksym_marker(sym)	\ | ||||||
| 	static int __ksym_marker_##sym[0] __section(.discard.ksym) __used | 	static int __ksym_marker_##sym[0] __section(".discard.ksym") __used | ||||||
| 
 | 
 | ||||||
| #define __EXPORT_SYMBOL(sym, sec, ns)					\ | #define __EXPORT_SYMBOL(sym, sec, ns)					\ | ||||||
| 	__ksym_marker(sym);						\ | 	__ksym_marker(sym);						\ | ||||||
|  |  | ||||||
|  | @ -36,7 +36,7 @@ struct builtin_fw { | ||||||
| 
 | 
 | ||||||
| #define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size)			     \ | #define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size)			     \ | ||||||
| 	static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \ | 	static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \ | ||||||
| 	__used __section(.builtin_fw) = { name, blob, size } | 	__used __section(".builtin_fw") = { name, blob, size } | ||||||
| 
 | 
 | ||||||
| #if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE)) | #if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE)) | ||||||
| int request_firmware(const struct firmware **fw, const char *name, | int request_firmware(const struct firmware **fw, const char *name, | ||||||
|  |  | ||||||
|  | @ -47,11 +47,11 @@ | ||||||
| 
 | 
 | ||||||
| /* These are for everybody (although not all archs will actually
 | /* These are for everybody (although not all archs will actually
 | ||||||
|    discard it in modules) */ |    discard it in modules) */ | ||||||
| #define __init		__section(.init.text) __cold  __latent_entropy __noinitretpoline | #define __init		__section(".init.text") __cold  __latent_entropy __noinitretpoline | ||||||
| #define __initdata	__section(.init.data) | #define __initdata	__section(".init.data") | ||||||
| #define __initconst	__section(.init.rodata) | #define __initconst	__section(".init.rodata") | ||||||
| #define __exitdata	__section(.exit.data) | #define __exitdata	__section(".exit.data") | ||||||
| #define __exit_call	__used __section(.exitcall.exit) | #define __exit_call	__used __section(".exitcall.exit") | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * modpost check for section mismatches during the kernel build. |  * modpost check for section mismatches during the kernel build. | ||||||
|  | @ -70,9 +70,9 @@ | ||||||
|  * |  * | ||||||
|  * The markers follow same syntax rules as __init / __initdata. |  * The markers follow same syntax rules as __init / __initdata. | ||||||
|  */ |  */ | ||||||
| #define __ref            __section(.ref.text) noinline | #define __ref            __section(".ref.text") noinline | ||||||
| #define __refdata        __section(.ref.data) | #define __refdata        __section(".ref.data") | ||||||
| #define __refconst       __section(.ref.rodata) | #define __refconst       __section(".ref.rodata") | ||||||
| 
 | 
 | ||||||
| #ifdef MODULE | #ifdef MODULE | ||||||
| #define __exitused | #define __exitused | ||||||
|  | @ -80,16 +80,16 @@ | ||||||
| #define __exitused  __used | #define __exitused  __used | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __exit          __section(.exit.text) __exitused __cold notrace | #define __exit          __section(".exit.text") __exitused __cold notrace | ||||||
| 
 | 
 | ||||||
| /* Used for MEMORY_HOTPLUG */ | /* Used for MEMORY_HOTPLUG */ | ||||||
| #define __meminit        __section(.meminit.text) __cold notrace \ | #define __meminit        __section(".meminit.text") __cold notrace \ | ||||||
| 						  __latent_entropy | 						  __latent_entropy | ||||||
| #define __meminitdata    __section(.meminit.data) | #define __meminitdata    __section(".meminit.data") | ||||||
| #define __meminitconst   __section(.meminit.rodata) | #define __meminitconst   __section(".meminit.rodata") | ||||||
| #define __memexit        __section(.memexit.text) __exitused __cold notrace | #define __memexit        __section(".memexit.text") __exitused __cold notrace | ||||||
| #define __memexitdata    __section(.memexit.data) | #define __memexitdata    __section(".memexit.data") | ||||||
| #define __memexitconst   __section(.memexit.rodata) | #define __memexitconst   __section(".memexit.rodata") | ||||||
| 
 | 
 | ||||||
| /* For assembly routines */ | /* For assembly routines */ | ||||||
| #define __HEAD		.section	".head.text","ax" | #define __HEAD		.section	".head.text","ax" | ||||||
|  | @ -254,7 +254,7 @@ struct obs_kernel_param { | ||||||
| 	static const char __setup_str_##unique_id[] __initconst		\ | 	static const char __setup_str_##unique_id[] __initconst		\ | ||||||
| 		__aligned(1) = str; 					\ | 		__aligned(1) = str; 					\ | ||||||
| 	static struct obs_kernel_param __setup_##unique_id		\ | 	static struct obs_kernel_param __setup_##unique_id		\ | ||||||
| 		__used __section(.init.setup)				\ | 		__used __section(".init.setup")				\ | ||||||
| 		__attribute__((aligned((sizeof(long)))))		\ | 		__attribute__((aligned((sizeof(long)))))		\ | ||||||
| 		= { __setup_str_##unique_id, fn, early } | 		= { __setup_str_##unique_id, fn, early } | ||||||
| 
 | 
 | ||||||
|  | @ -298,7 +298,7 @@ void __init parse_early_options(char *cmdline); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /* Data marked not to be saved by software suspend */ | /* Data marked not to be saved by software suspend */ | ||||||
| #define __nosavedata __section(.data..nosave) | #define __nosavedata __section(".data..nosave") | ||||||
| 
 | 
 | ||||||
| #ifdef MODULE | #ifdef MODULE | ||||||
| #define __exit_p(x) x | #define __exit_p(x) x | ||||||
|  |  | ||||||
|  | @ -40,12 +40,12 @@ extern struct cred init_cred; | ||||||
| 
 | 
 | ||||||
| /* Attach to the init_task data structure for proper alignment */ | /* Attach to the init_task data structure for proper alignment */ | ||||||
| #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | #ifdef CONFIG_ARCH_TASK_STRUCT_ON_STACK | ||||||
| #define __init_task_data __attribute__((__section__(".data..init_task"))) | #define __init_task_data __section(".data..init_task") | ||||||
| #else | #else | ||||||
| #define __init_task_data /**/ | #define __init_task_data /**/ | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /* Attach to the thread_info data structure for proper alignment */ | /* Attach to the thread_info data structure for proper alignment */ | ||||||
| #define __init_thread_info __attribute__((__section__(".data..init_thread_info"))) | #define __init_thread_info __section(".data..init_thread_info") | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -792,9 +792,9 @@ extern int arch_early_irq_init(void); | ||||||
|  * We want to know which function is an entrypoint of a hardirq or a softirq. |  * We want to know which function is an entrypoint of a hardirq or a softirq. | ||||||
|  */ |  */ | ||||||
| #ifndef __irq_entry | #ifndef __irq_entry | ||||||
| # define __irq_entry	 __attribute__((__section__(".irqentry.text"))) | # define __irq_entry	 __section(".irqentry.text") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __softirq_entry  __attribute__((__section__(".softirqentry.text"))) | #define __softirq_entry  __section(".softirqentry.text") | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -729,7 +729,7 @@ do {							\ | ||||||
| #define do_trace_printk(fmt, args...)					\ | #define do_trace_printk(fmt, args...)					\ | ||||||
| do {									\ | do {									\ | ||||||
| 	static const char *trace_printk_fmt __used			\ | 	static const char *trace_printk_fmt __used			\ | ||||||
| 		__attribute__((section("__trace_printk_fmt"))) =	\ | 		__section("__trace_printk_fmt") =			\ | ||||||
| 		__builtin_constant_p(fmt) ? fmt : NULL;			\ | 		__builtin_constant_p(fmt) ? fmt : NULL;			\ | ||||||
| 									\ | 									\ | ||||||
| 	__trace_printk_check_format(fmt, ##args);			\ | 	__trace_printk_check_format(fmt, ##args);			\ | ||||||
|  | @ -773,7 +773,7 @@ int __trace_printk(unsigned long ip, const char *fmt, ...); | ||||||
| 
 | 
 | ||||||
| #define trace_puts(str) ({						\ | #define trace_puts(str) ({						\ | ||||||
| 	static const char *trace_printk_fmt __used			\ | 	static const char *trace_printk_fmt __used			\ | ||||||
| 		__attribute__((section("__trace_printk_fmt"))) =	\ | 		__section("__trace_printk_fmt") =			\ | ||||||
| 		__builtin_constant_p(str) ? str : NULL;			\ | 		__builtin_constant_p(str) ? str : NULL;			\ | ||||||
| 									\ | 									\ | ||||||
| 	if (__builtin_constant_p(str))					\ | 	if (__builtin_constant_p(str))					\ | ||||||
|  | @ -795,7 +795,7 @@ extern void trace_dump_stack(int skip); | ||||||
| do {									\ | do {									\ | ||||||
| 	if (__builtin_constant_p(fmt)) {				\ | 	if (__builtin_constant_p(fmt)) {				\ | ||||||
| 		static const char *trace_printk_fmt __used		\ | 		static const char *trace_printk_fmt __used		\ | ||||||
| 		  __attribute__((section("__trace_printk_fmt"))) =	\ | 		  __section("__trace_printk_fmt") =			\ | ||||||
| 			__builtin_constant_p(fmt) ? fmt : NULL;		\ | 			__builtin_constant_p(fmt) ? fmt : NULL;		\ | ||||||
| 									\ | 									\ | ||||||
| 		__ftrace_vbprintk(_THIS_IP_, trace_printk_fmt, vargs);	\ | 		__ftrace_vbprintk(_THIS_IP_, trace_printk_fmt, vargs);	\ | ||||||
|  |  | ||||||
|  | @ -36,8 +36,8 @@ | ||||||
| 		  __stringify(name)) | 		  __stringify(name)) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __page_aligned_data	__section(.data..page_aligned) __aligned(PAGE_SIZE) | #define __page_aligned_data	__section(".data..page_aligned") __aligned(PAGE_SIZE) | ||||||
| #define __page_aligned_bss	__section(.bss..page_aligned) __aligned(PAGE_SIZE) | #define __page_aligned_bss	__section(".bss..page_aligned") __aligned(PAGE_SIZE) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * For assembly routines. |  * For assembly routines. | ||||||
|  |  | ||||||
|  | @ -1611,12 +1611,12 @@ extern struct lsm_info __start_early_lsm_info[], __end_early_lsm_info[]; | ||||||
| 
 | 
 | ||||||
| #define DEFINE_LSM(lsm)							\ | #define DEFINE_LSM(lsm)							\ | ||||||
| 	static struct lsm_info __lsm_##lsm				\ | 	static struct lsm_info __lsm_##lsm				\ | ||||||
| 		__used __section(.lsm_info.init)			\ | 		__used __section(".lsm_info.init")			\ | ||||||
| 		__aligned(sizeof(unsigned long)) | 		__aligned(sizeof(unsigned long)) | ||||||
| 
 | 
 | ||||||
| #define DEFINE_EARLY_LSM(lsm)						\ | #define DEFINE_EARLY_LSM(lsm)						\ | ||||||
| 	static struct lsm_info __early_lsm_##lsm			\ | 	static struct lsm_info __early_lsm_##lsm			\ | ||||||
| 		__used __section(.early_lsm_info.init)			\ | 		__used __section(".early_lsm_info.init")		\ | ||||||
| 		__aligned(sizeof(unsigned long)) | 		__aligned(sizeof(unsigned long)) | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_SECURITY_SELINUX_DISABLE | #ifdef CONFIG_SECURITY_SELINUX_DISABLE | ||||||
|  |  | ||||||
|  | @ -278,7 +278,7 @@ extern typeof(name) __mod_##type##__##name##_device_table		\ | ||||||
| 		.version	= _version,				\ | 		.version	= _version,				\ | ||||||
| 	};								\ | 	};								\ | ||||||
| 	static const struct module_version_attribute			\ | 	static const struct module_version_attribute			\ | ||||||
| 	__used __attribute__ ((__section__ ("__modver")))		\ | 	__used __section("__modver")					\ | ||||||
| 	* __moduleparam_const __modver_attr = &___modver_attr | 	* __moduleparam_const __modver_attr = &___modver_attr | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
| 
 | 
 | ||||||
| #define __MODULE_INFO(tag, name, info)					  \ | #define __MODULE_INFO(tag, name, info)					  \ | ||||||
| static const char __UNIQUE_ID(name)[]					  \ | static const char __UNIQUE_ID(name)[]					  \ | ||||||
|   __used __attribute__((section(".modinfo"), unused, aligned(1)))	  \ |   __used __section(".modinfo") __attribute__((unused, aligned(1)))	  \ | ||||||
|   = __MODULE_INFO_PREFIX __stringify(tag) "=" info |   = __MODULE_INFO_PREFIX __stringify(tag) "=" info | ||||||
| 
 | 
 | ||||||
| #define __MODULE_PARM_TYPE(name, _type)					  \ | #define __MODULE_PARM_TYPE(name, _type)					  \ | ||||||
|  | @ -289,7 +289,7 @@ struct kparam_array | ||||||
| 	static const char __param_str_##name[] = prefix #name;		\ | 	static const char __param_str_##name[] = prefix #name;		\ | ||||||
| 	static struct kernel_param __moduleparam_const __param_##name	\ | 	static struct kernel_param __moduleparam_const __param_##name	\ | ||||||
| 	__used								\ | 	__used								\ | ||||||
|     __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \ |     __section("__param") __attribute__ ((unused, aligned(sizeof(void *)))) \ | ||||||
| 	= { __param_str_##name, THIS_MODULE, ops,			\ | 	= { __param_str_##name, THIS_MODULE, ops,			\ | ||||||
| 	    VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } } | 	    VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ | ||||||
|  * those functions so they get relocated to ram. |  * those functions so they get relocated to ram. | ||||||
|  */ |  */ | ||||||
| #ifdef CONFIG_XIP_KERNEL | #ifdef CONFIG_XIP_KERNEL | ||||||
| #define __xipram noinline __attribute__ ((__section__ (".xiptext"))) | #define __xipram noinline __section(".xiptext") | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ struct unwind_hint { | ||||||
|  * For more information, see tools/objtool/Documentation/stack-validation.txt. |  * For more information, see tools/objtool/Documentation/stack-validation.txt. | ||||||
|  */ |  */ | ||||||
| #define STACK_FRAME_NON_STANDARD(func) \ | #define STACK_FRAME_NON_STANDARD(func) \ | ||||||
| 	static void __used __section(.discard.func_stack_frame_non_standard) \ | 	static void __used __section(".discard.func_stack_frame_non_standard") \ | ||||||
| 		*__func_stack_frame_non_standard_##func = func | 		*__func_stack_frame_non_standard_##func = func | ||||||
| 
 | 
 | ||||||
| #else /* __ASSEMBLY__ */ | #else /* __ASSEMBLY__ */ | ||||||
|  |  | ||||||
|  | @ -1299,7 +1299,7 @@ static inline int of_get_available_child_count(const struct device_node *np) | ||||||
| #if defined(CONFIG_OF) && !defined(MODULE) | #if defined(CONFIG_OF) && !defined(MODULE) | ||||||
| #define _OF_DECLARE(table, name, compat, fn, fn_type)			\ | #define _OF_DECLARE(table, name, compat, fn, fn_type)			\ | ||||||
| 	static const struct of_device_id __of_table_##name		\ | 	static const struct of_device_id __of_table_##name		\ | ||||||
| 		__used __section(__##table##_of_table)			\ | 		__used __section("__" #table "_of_table")		\ | ||||||
| 		 = { .compatible = compat,				\ | 		 = { .compatible = compat,				\ | ||||||
| 		     .data = (fn == (fn_type)NULL) ? fn : fn  } | 		     .data = (fn == (fn_type)NULL) ? fn : fn  } | ||||||
| #else | #else | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ | ||||||
| 	PER_CPU_ATTRIBUTES | 	PER_CPU_ATTRIBUTES | ||||||
| 
 | 
 | ||||||
| #define __PCPU_DUMMY_ATTRS						\ | #define __PCPU_DUMMY_ATTRS						\ | ||||||
| 	__attribute__((section(".discard"), unused)) | 	__section(".discard") __attribute__((unused)) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * s390 and alpha modules require percpu variables to be defined as |  * s390 and alpha modules require percpu variables to be defined as | ||||||
|  |  | ||||||
|  | @ -437,7 +437,7 @@ extern int kptr_restrict; | ||||||
| #ifdef CONFIG_PRINTK | #ifdef CONFIG_PRINTK | ||||||
| #define printk_once(fmt, ...)					\ | #define printk_once(fmt, ...)					\ | ||||||
| ({								\ | ({								\ | ||||||
| 	static bool __section(.data.once) __print_once;		\ | 	static bool __section(".data.once") __print_once;	\ | ||||||
| 	bool __ret_print_once = !__print_once;			\ | 	bool __ret_print_once = !__print_once;			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (!__print_once) {					\ | 	if (!__print_once) {					\ | ||||||
|  | @ -448,7 +448,7 @@ extern int kptr_restrict; | ||||||
| }) | }) | ||||||
| #define printk_deferred_once(fmt, ...)				\ | #define printk_deferred_once(fmt, ...)				\ | ||||||
| ({								\ | ({								\ | ||||||
| 	static bool __section(.data.once) __print_once;		\ | 	static bool __section(".data.once") __print_once;	\ | ||||||
| 	bool __ret_print_once = !__print_once;			\ | 	bool __ret_print_once = !__print_once;			\ | ||||||
| 								\ | 								\ | ||||||
| 	if (!__print_once) {					\ | 	if (!__print_once) {					\ | ||||||
|  |  | ||||||
|  | @ -299,7 +299,7 @@ static inline int rcu_read_lock_any_held(void) | ||||||
|  */ |  */ | ||||||
| #define RCU_LOCKDEP_WARN(c, s)						\ | #define RCU_LOCKDEP_WARN(c, s)						\ | ||||||
| 	do {								\ | 	do {								\ | ||||||
| 		static bool __section(.data.unlikely) __warned;		\ | 		static bool __section(".data.unlikely") __warned;	\ | ||||||
| 		if (debug_lockdep_rcu_enabled() && !__warned && (c)) {	\ | 		if (debug_lockdep_rcu_enabled() && !__warned && (c)) {	\ | ||||||
| 			__warned = true;				\ | 			__warned = true;				\ | ||||||
| 			lockdep_rcu_suspicious(__FILE__, __LINE__, s);	\ | 			lockdep_rcu_suspicious(__FILE__, __LINE__, s);	\ | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ extern void proc_sched_set_task(struct task_struct *p); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /* Attach to any functions which should be ignored in wchan output. */ | /* Attach to any functions which should be ignored in wchan output. */ | ||||||
| #define __sched		__attribute__((__section__(".sched.text"))) | #define __sched		__section(".sched.text") | ||||||
| 
 | 
 | ||||||
| /* Linker adds these: start and end of __sched functions */ | /* Linker adds these: start and end of __sched functions */ | ||||||
| extern char __sched_text_start[], __sched_text_end[]; | extern char __sched_text_start[], __sched_text_end[]; | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue
	
	 Joe Perches
						Joe Perches