aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic/vmlinux.lds.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-generic/vmlinux.lds.h')
-rw-r--r--include/asm-generic/vmlinux.lds.h44
1 files changed, 24 insertions, 20 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index f301cea5ca2d..ebdaafa866a7 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -688,6 +688,28 @@
688 } 688 }
689 689
690/** 690/**
691 * PERCPU_INPUT - the percpu input sections
692 * @cacheline: cacheline size
693 *
694 * The core percpu section names and core symbols which do not rely
695 * directly upon load addresses.
696 *
697 * @cacheline is used to align subsections to avoid false cacheline
698 * sharing between subsections for different purposes.
699 */
700#define PERCPU_INPUT(cacheline) \
701 VMLINUX_SYMBOL(__per_cpu_start) = .; \
702 *(.data..percpu..first) \
703 . = ALIGN(PAGE_SIZE); \
704 *(.data..percpu..page_aligned) \
705 . = ALIGN(cacheline); \
706 *(.data..percpu..readmostly) \
707 . = ALIGN(cacheline); \
708 *(.data..percpu) \
709 *(.data..percpu..shared_aligned) \
710 VMLINUX_SYMBOL(__per_cpu_end) = .;
711
712/**
691 * PERCPU_VADDR - define output section for percpu area 713 * PERCPU_VADDR - define output section for percpu area
692 * @cacheline: cacheline size 714 * @cacheline: cacheline size
693 * @vaddr: explicit base address (optional) 715 * @vaddr: explicit base address (optional)
@@ -715,16 +737,7 @@
715 VMLINUX_SYMBOL(__per_cpu_load) = .; \ 737 VMLINUX_SYMBOL(__per_cpu_load) = .; \
716 .data..percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \ 738 .data..percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \
717 - LOAD_OFFSET) { \ 739 - LOAD_OFFSET) { \
718 VMLINUX_SYMBOL(__per_cpu_start) = .; \ 740 PERCPU_INPUT(cacheline) \
719 *(.data..percpu..first) \
720 . = ALIGN(PAGE_SIZE); \
721 *(.data..percpu..page_aligned) \
722 . = ALIGN(cacheline); \
723 *(.data..percpu..readmostly) \
724 . = ALIGN(cacheline); \
725 *(.data..percpu) \
726 *(.data..percpu..shared_aligned) \
727 VMLINUX_SYMBOL(__per_cpu_end) = .; \
728 } phdr \ 741 } phdr \
729 . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data..percpu); 742 . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data..percpu);
730 743
@@ -744,16 +757,7 @@
744 . = ALIGN(PAGE_SIZE); \ 757 . = ALIGN(PAGE_SIZE); \
745 .data..percpu : AT(ADDR(.data..percpu) - LOAD_OFFSET) { \ 758 .data..percpu : AT(ADDR(.data..percpu) - LOAD_OFFSET) { \
746 VMLINUX_SYMBOL(__per_cpu_load) = .; \ 759 VMLINUX_SYMBOL(__per_cpu_load) = .; \
747 VMLINUX_SYMBOL(__per_cpu_start) = .; \ 760 PERCPU_INPUT(cacheline) \
748 *(.data..percpu..first) \
749 . = ALIGN(PAGE_SIZE); \
750 *(.data..percpu..page_aligned) \
751 . = ALIGN(cacheline); \
752 *(.data..percpu..readmostly) \
753 . = ALIGN(cacheline); \
754 *(.data..percpu) \
755 *(.data..percpu..shared_aligned) \
756 VMLINUX_SYMBOL(__per_cpu_end) = .; \
757 } 761 }
758 762
759 763