vmlinux.lds.h (b2576e1d4408e134e2188c967b1f28af39cd79d4) vmlinux.lds.h (3e5d8f978435bb9ba4dfe3f4514e65e7885db1a9)
1#ifndef LOAD_OFFSET
2#define LOAD_OFFSET 0
3#endif
4
5#ifndef VMLINUX_SYMBOL
6#define VMLINUX_SYMBOL(_sym_) _sym_
7#endif
8

--- 416 unchanged lines hidden (view full) ---

425 *(.initcall5.init) \
426 *(.initcall5s.init) \
427 *(.initcallrootfs.init) \
428 *(.initcall6.init) \
429 *(.initcall6s.init) \
430 *(.initcall7.init) \
431 *(.initcall7s.init)
432
1#ifndef LOAD_OFFSET
2#define LOAD_OFFSET 0
3#endif
4
5#ifndef VMLINUX_SYMBOL
6#define VMLINUX_SYMBOL(_sym_) _sym_
7#endif
8

--- 416 unchanged lines hidden (view full) ---

425 *(.initcall5.init) \
426 *(.initcall5s.init) \
427 *(.initcallrootfs.init) \
428 *(.initcall6.init) \
429 *(.initcall6s.init) \
430 *(.initcall7.init) \
431 *(.initcall7s.init)
432
433#define PERCPU(align) \
434 . = ALIGN(align); \
435 VMLINUX_SYMBOL(__per_cpu_start) = .; \
436 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \
433#define PERCPU_PROLOG(vaddr) \
434 VMLINUX_SYMBOL(__per_cpu_load) = .; \
435 .data.percpu vaddr : AT(__per_cpu_load - LOAD_OFFSET) { \
436 VMLINUX_SYMBOL(__per_cpu_start) = .;
437
438#define PERCPU_EPILOG(phdr) \
439 VMLINUX_SYMBOL(__per_cpu_end) = .; \
440 } phdr \
441 . = __per_cpu_load + SIZEOF(.data.percpu);
442
443/**
444 * PERCPU_VADDR - define output section for percpu area
445 * @vaddr: explicit base address (optional)
446 * @phdr: destination PHDR (optional)
447 *
448 * Macro which expands to output section for percpu area. If @vaddr
449 * is not blank, it specifies explicit base address and all percpu
450 * symbols will be offset from the given address. If blank, @vaddr
451 * always equals @laddr + LOAD_OFFSET.
452 *
453 * @phdr defines the output PHDR to use if not blank. Be warned that
454 * output PHDR is sticky. If @phdr is specified, the next output
455 * section in the linker script will go there too. @phdr should have
456 * a leading colon.
457 *
458 * This macro defines three symbols, __per_cpu_load, __per_cpu_start
459 * and __per_cpu_end. The first one is the vaddr of loaded percpu
460 * init data. __per_cpu_start equals @vaddr and __per_cpu_end is the
461 * end offset.
462 */
463#define PERCPU_VADDR(vaddr, phdr) \
464 PERCPU_PROLOG(vaddr) \
437 *(.data.percpu.page_aligned) \
438 *(.data.percpu) \
439 *(.data.percpu.shared_aligned) \
465 *(.data.percpu.page_aligned) \
466 *(.data.percpu) \
467 *(.data.percpu.shared_aligned) \
440 } \
441 VMLINUX_SYMBOL(__per_cpu_end) = .;
468 PERCPU_EPILOG(phdr)
469
470/**
471 * PERCPU - define output section for percpu area, simple version
472 * @align: required alignment
473 *
474 * Align to @align and outputs output section for percpu area. This
475 * macro doesn't maniuplate @vaddr or @phdr and __per_cpu_load and
476 * __per_cpu_start will be identical.
477 */
478#define PERCPU(align) \
479 . = ALIGN(align); \
480 PERCPU_VADDR( , )