|
687 | 687 | *(.discard.*) \ |
688 | 688 | } |
689 | 689 |
|
| 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 | + |
690 | 712 | /** |
691 | 713 | * PERCPU_VADDR - define output section for percpu area |
692 | 714 | * @cacheline: cacheline size |
|
715 | 737 | VMLINUX_SYMBOL(__per_cpu_load) = .; \ |
716 | 738 | .data..percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load) \ |
717 | 739 | - LOAD_OFFSET) { \ |
718 | | - VMLINUX_SYMBOL(__per_cpu_start) = .; \ |
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) = .; \ |
| 740 | + PERCPU_INPUT(cacheline) \ |
728 | 741 | } phdr \ |
729 | 742 | . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data..percpu); |
730 | 743 |
|
|
745 | 758 | . = ALIGN(align); \ |
746 | 759 | .data..percpu : AT(ADDR(.data..percpu) - LOAD_OFFSET) { \ |
747 | 760 | VMLINUX_SYMBOL(__per_cpu_load) = .; \ |
748 | | - VMLINUX_SYMBOL(__per_cpu_start) = .; \ |
749 | | - *(.data..percpu..first) \ |
750 | | - . = ALIGN(PAGE_SIZE); \ |
751 | | - *(.data..percpu..page_aligned) \ |
752 | | - . = ALIGN(cacheline); \ |
753 | | - *(.data..percpu..readmostly) \ |
754 | | - . = ALIGN(cacheline); \ |
755 | | - *(.data..percpu) \ |
756 | | - *(.data..percpu..shared_aligned) \ |
757 | | - VMLINUX_SYMBOL(__per_cpu_end) = .; \ |
| 761 | + PERCPU_INPUT(cacheline) \ |
758 | 762 | } |
759 | 763 |
|
760 | 764 |
|
|
0 commit comments