2009-09-18 20:34:16

by Tim Abbott

[permalink] [raw]
Subject: [PATCH v2] Linker script cleanup for xtensa

This is an updated version of the patch I sent on September 6 cleaning
up the xtensa architecture's linker scripts. It differs from the
previous version only in having been rebased on top of Linus' current
master.

This cross-architecture linker script cleanup project is in
preparation for adding support for building the kernel with
-ffunction-sections -fdata-sections, which is a prerequisite for
Ksplice.

-Tim Abbott

Tim Abbott (1):
xtensa: Cleanup linker script using new linker script macros.

arch/xtensa/kernel/vmlinux.lds.S | 75 +++++++-------------------------------
1 files changed, 14 insertions(+), 61 deletions(-)


2009-09-18 20:37:34

by Tim Abbott

[permalink] [raw]
Subject: [PATCH v2] xtensa: Cleanup linker script using new linker script macros.

Signed-off-by: Tim Abbott <[email protected]>
Cc: Chris Zankel <[email protected]>
---
arch/xtensa/kernel/vmlinux.lds.S | 75 +++++++-------------------------------
1 files changed, 14 insertions(+), 61 deletions(-)

diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S
index 921b6ff..9b52615 100644
--- a/arch/xtensa/kernel/vmlinux.lds.S
+++ b/arch/xtensa/kernel/vmlinux.lds.S
@@ -15,6 +15,8 @@
*/

#include <asm-generic/vmlinux.lds.h>
+#include <asm/page.h>
+#include <asm/thread_info.h>

#include <variant/core.h>
#include <platform/hardware.h>
@@ -107,41 +109,18 @@ SECTIONS

.fixup : { *(.fixup) }

- . = ALIGN(16);
-
- __ex_table : {
- __start___ex_table = .;
- *(__ex_table)
- __stop___ex_table = .;
- }
-
+ EXCEPTION_TABLE(16)
/* Data section */

- . = ALIGN(XCHAL_ICACHE_LINESIZE);
_fdata = .;
- .data :
- {
- DATA_DATA
- CONSTRUCTORS
- . = ALIGN(XCHAL_ICACHE_LINESIZE);
- *(.data.cacheline_aligned)
- }
-
+ RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE)
_edata = .;

- /* The initial task */
- . = ALIGN(8192);
- .data.init_task : { *(.data.init_task) }
-
/* Initialization code and data: */

- . = ALIGN(1 << 12);
+ . = ALIGN(PAGE_SIZE);
__init_begin = .;
- .init.text : {
- _sinittext = .;
- INIT_TEXT
- _einittext = .;
- }
+ INIT_TEXT_SECTION(PAGE_SIZE)

.init.data :
{
@@ -168,36 +147,15 @@ SECTIONS
.DebugInterruptVector.text);

__boot_reloc_table_end = ABSOLUTE(.) ;
- }

- . = ALIGN(XCHAL_ICACHE_LINESIZE);
-
- __setup_start = .;
- .init.setup : { *(.init.setup) }
- __setup_end = .;
-
- __initcall_start = .;
- .initcall.init : {
- INITCALLS
+ INIT_SETUP(XCHAL_ICACHE_LINESIZE)
+ INIT_CALLS
+ CON_INITCALL
+ SECURITY_INITCALL
+ INIT_RAM_FS
}
- __initcall_end = .;
-
- __con_initcall_start = .;
- .con_initcall.init : { *(.con_initcall.init) }
- __con_initcall_end = .;
-
- SECURITY_INIT
-
-
-#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(4096);
- __initramfs_start =.;
- .init.ramfs : { *(.init.ramfs) }
- __initramfs_end = .;
-#endif
-
- PERCPU(4096)

+ PERCPU(PAGE_SIZE)

/* We need this dummy segment here */

@@ -252,16 +210,11 @@ SECTIONS
.DoubleExceptionVector.literal)

. = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3;
- . = ALIGN(1 << 12);
+ . = ALIGN(PAGE_SIZE);

__init_end = .;

- . = ALIGN(8192);
-
- /* BSS section */
- _bss_start = .;
- .bss : { *(.bss.page_aligned) *(.bss) }
- _bss_end = .;
+ BSS_SECTION(0, 8192, 0)

_end = .;

--
1.6.3.3

2009-09-19 08:37:18

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH v2] xtensa: Cleanup linker script using new linker script macros.

On Fri, Sep 18, 2009 at 04:33:47PM -0400, Tim Abbott wrote:
> Signed-off-by: Tim Abbott <[email protected]>
> Cc: Chris Zankel <[email protected]>

Look good.

Acked-by: Sam Ravnborg <[email protected]>

Sam