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.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 92b73b6140ff..6ad76bf5fb40 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -30,9 +30,7 @@
30 * EXCEPTION_TABLE(...) 30 * EXCEPTION_TABLE(...)
31 * NOTES 31 * NOTES
32 * 32 *
33 * __bss_start = .; 33 * BSS_SECTION(0, 0, 0)
34 * BSS_SECTION(0, 0)
35 * __bss_stop = .;
36 * _end = .; 34 * _end = .;
37 * 35 *
38 * /DISCARD/ : { 36 * /DISCARD/ : {
@@ -191,7 +189,7 @@
191 . = ALIGN(align); \ 189 . = ALIGN(align); \
192 *(.data.cacheline_aligned) 190 *(.data.cacheline_aligned)
193 191
194#define INIT_TASK(align) \ 192#define INIT_TASK_DATA(align) \
195 . = ALIGN(align); \ 193 . = ALIGN(align); \
196 *(.data.init_task) 194 *(.data.init_task)
197 195
@@ -434,14 +432,15 @@
434/* 432/*
435 * Init task 433 * Init task
436 */ 434 */
437#define INIT_TASK_DATA(align) \ 435#define INIT_TASK_DATA_SECTION(align) \
438 . = ALIGN(align); \ 436 . = ALIGN(align); \
439 .data.init_task : { \ 437 .data.init_task : { \
440 INIT_TASK \ 438 INIT_TASK_DATA(align) \
441 } 439 }
442 440
443#ifdef CONFIG_CONSTRUCTORS 441#ifdef CONFIG_CONSTRUCTORS
444#define KERNEL_CTORS() VMLINUX_SYMBOL(__ctors_start) = .; \ 442#define KERNEL_CTORS() . = ALIGN(8); \
443 VMLINUX_SYMBOL(__ctors_start) = .; \
445 *(.ctors) \ 444 *(.ctors) \
446 VMLINUX_SYMBOL(__ctors_end) = .; 445 VMLINUX_SYMBOL(__ctors_end) = .;
447#else 446#else
@@ -488,7 +487,8 @@
488 * bss (Block Started by Symbol) - uninitialized data 487 * bss (Block Started by Symbol) - uninitialized data
489 * zeroed during startup 488 * zeroed during startup
490 */ 489 */
491#define SBSS \ 490#define SBSS(sbss_align) \
491 . = ALIGN(sbss_align); \
492 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \ 492 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \
493 *(.sbss) \ 493 *(.sbss) \
494 *(.scommon) \ 494 *(.scommon) \
@@ -497,12 +497,10 @@
497#define BSS(bss_align) \ 497#define BSS(bss_align) \
498 . = ALIGN(bss_align); \ 498 . = ALIGN(bss_align); \
499 .bss : AT(ADDR(.bss) - LOAD_OFFSET) { \ 499 .bss : AT(ADDR(.bss) - LOAD_OFFSET) { \
500 VMLINUX_SYMBOL(__bss_start) = .; \
501 *(.bss.page_aligned) \ 500 *(.bss.page_aligned) \
502 *(.dynbss) \ 501 *(.dynbss) \
503 *(.bss) \ 502 *(.bss) \
504 *(COMMON) \ 503 *(COMMON) \
505 VMLINUX_SYMBOL(__bss_stop) = .; \
506 } 504 }
507 505
508/* 506/*
@@ -704,15 +702,15 @@
704 * matches the requirment of PAGE_ALIGNED_DATA. 702 * matches the requirment of PAGE_ALIGNED_DATA.
705 * 703 *
706 * use 0 as page_align if page_aligned data is not used */ 704 * use 0 as page_align if page_aligned data is not used */
707#define RW_DATA_SECTION(cacheline, nosave, pagealigned, inittask) \ 705#define RW_DATA_SECTION(cacheline, pagealigned, inittask) \
708 . = ALIGN(PAGE_SIZE); \ 706 . = ALIGN(PAGE_SIZE); \
709 .data : AT(ADDR(.data) - LOAD_OFFSET) { \ 707 .data : AT(ADDR(.data) - LOAD_OFFSET) { \
710 INIT_TASK(inittask) \ 708 INIT_TASK_DATA(inittask) \
711 CACHELINE_ALIGNED_DATA(cacheline) \ 709 CACHELINE_ALIGNED_DATA(cacheline) \
712 READ_MOSTLY_DATA(cacheline) \ 710 READ_MOSTLY_DATA(cacheline) \
713 DATA_DATA \ 711 DATA_DATA \
714 CONSTRUCTORS \ 712 CONSTRUCTORS \
715 NOSAVE_DATA(nosave) \ 713 NOSAVE_DATA \
716 PAGE_ALIGNED_DATA(pagealigned) \ 714 PAGE_ALIGNED_DATA(pagealigned) \
717 } 715 }
718 716
@@ -734,8 +732,10 @@
734 INIT_RAM_FS \ 732 INIT_RAM_FS \
735 } 733 }
736 734
737#define BSS_SECTION(sbss_align, bss_align) \ 735#define BSS_SECTION(sbss_align, bss_align, stop_align) \
738 SBSS \ 736 . = ALIGN(sbss_align); \
737 VMLINUX_SYMBOL(__bss_start) = .; \
738 SBSS(sbss_align) \
739 BSS(bss_align) \ 739 BSS(bss_align) \
740 . = ALIGN(4); 740 . = ALIGN(stop_align); \
741 741 VMLINUX_SYMBOL(__bss_stop) = .;