summary refs log tree commit diff
path: root/arch/h8300/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/h8300/kernel/vmlinux.lds.S')
-rw-r--r--arch/h8300/kernel/vmlinux.lds.S172
1 files changed, 172 insertions, 0 deletions
diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S
new file mode 100644
index 000000000000..17fa11da1e4a
--- /dev/null
+++ b/arch/h8300/kernel/vmlinux.lds.S
@@ -0,0 +1,172 @@
+#define VMLINUX_SYMBOL(_sym_) _##_sym_
+#include <asm-generic/vmlinux.lds.h>
+#include <linux/config.h>
+
+/* target memory map */
+#ifdef CONFIG_H8300H_GENERIC
+#define ROMTOP  0x000000
+#define ROMSIZE 0x400000
+#define RAMTOP  0x400000
+#define RAMSIZE 0x400000
+#endif
+
+#ifdef CONFIG_H8300H_AKI3068NET
+#define ROMTOP  0x000000
+#define ROMSIZE 0x080000
+#define RAMTOP  0x400000
+#define RAMSIZE 0x200000
+#endif
+
+#ifdef CONFIG_H8300H_H8MAX
+#define ROMTOP  0x000000
+#define ROMSIZE 0x080000
+#define RAMTOP  0x400000
+#define RAMSIZE 0x200000
+#endif
+
+#ifdef CONFIG_H8300H_SIM
+#define ROMTOP  0x000000
+#define ROMSIZE 0x400000
+#define RAMTOP  0x400000
+#define RAMSIZE 0x400000
+#endif
+
+#ifdef CONFIG_H8S_SIM
+#define ROMTOP  0x000000
+#define ROMSIZE 0x400000
+#define RAMTOP  0x400000
+#define RAMSIZE 0x800000
+#endif
+
+#ifdef CONFIG_H8S_EDOSK2674
+#define ROMTOP  0x000000
+#define ROMSIZE 0x400000
+#define RAMTOP  0x400000
+#define RAMSIZE 0x800000
+#endif
+
+#if defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)
+INPUT(romfs.o)
+#endif
+
+_jiffies = _jiffies_64 + 4;
+
+ENTRY(__start)
+
+SECTIONS
+{
+#if defined(CONFIG_ROMKERNEL)
+	. = ROMTOP; 
+	.vectors :
+	{
+	__vector = . ;
+		*(.vectors*)
+	}
+#else
+	. = RAMTOP; 
+	.bootvec :	
+	{
+		*(.bootvec)
+	}
+#endif
+        .text :
+	{
+#if defined(CONFIG_ROMKERNEL)
+	*(.int_redirect)
+#endif
+	__stext = . ;
+        	*(.text)
+	SCHED_TEXT
+	LOCK_TEXT
+	__etext = . ;
+	. = ALIGN(16);          /* Exception table              */
+	___start___ex_table = .;
+		*(__ex_table)
+	___stop___ex_table = .;
+	}
+
+	RODATA
+#if defined(CONFIG_ROMKERNEL)
+	SECURITY_INIT
+#endif
+	ROEND = .; 
+#if defined(CONFIG_ROMKERNEL)
+	. = RAMTOP;
+	.data :	AT(ROEND)
+#else
+	.data :	
+#endif
+	{
+	__sdata = . ;
+	___data_start = . ;
+
+	. = ALIGN(0x2000) ;
+		*(.data.init_task)
+	. = ALIGN(0x4) ;
+		*(.data)
+	. = ALIGN(0x4) ;
+		*(.data.*)	
+
+	. = ALIGN(0x4) ;
+	___init_begin = .;
+	__sinittext = .; 
+		*(.init.text)
+	__einittext = .; 
+		*(.init.data)
+	. = ALIGN(0x4) ;
+	___setup_start = .;
+		*(.init.setup)
+	. = ALIGN(0x4) ;
+	___setup_end = .;
+	___initcall_start = .;
+		*(.initcall1.init)
+		*(.initcall2.init)
+		*(.initcall3.init)
+		*(.initcall4.init)
+		*(.initcall5.init)
+		*(.initcall6.init)
+		*(.initcall7.init)
+	___initcall_end = .;
+	___con_initcall_start = .;
+		*(.con_initcall.init)
+	___con_initcall_end = .;
+		*(.exit.text)
+		*(.exit.data)
+		. = ALIGN(4);
+	___initramfs_start = .;
+  		*(.init.ramfs)
+  	___initramfs_end = .;
+	. = ALIGN(0x4) ;
+	___init_end = .;
+	__edata = . ;
+	}
+#if defined(CONFIG_RAMKERNEL)
+	SECURITY_INIT
+#endif
+	__begin_data = LOADADDR(.data);
+        .bss : 
+        {
+	. = ALIGN(0x4) ;
+	__sbss = . ;
+		*(.bss*)
+	. = ALIGN(0x4) ;
+		*(COMMON)
+	. = ALIGN(0x4) ;
+	__ebss = . ;
+	__end = . ;
+	__ramstart = .;
+	}
+	/DISCARD/ : {
+		*(.exitcall.exit)
+	}
+        .romfs :	
+	{
+		*(.romfs*)
+	}
+	. = RAMTOP+RAMSIZE;
+        .dummy :
+        {
+	COMMAND_START = . - 0x200 ;
+	__ramend = . ;
+	}
+}