| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /* ld script to make M32R Linux kernel | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm-generic/vmlinux.lds.h> | 
					
						
							|  |  |  | #include <asm/addrspace.h> | 
					
						
							|  |  |  | #include <asm/page.h> | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  | #include <asm/thread_info.h> | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | OUTPUT_ARCH(m32r) | 
					
						
							|  |  |  | #if defined(__LITTLE_ENDIAN__) | 
					
						
							|  |  |  |        jiffies = jiffies_64;
 | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  |        jiffies = jiffies_64 + 4;
 | 
					
						
							|  |  |  | #endif | 
					
						
							| 
									
										
											  
											
												[PATCH] m32r: fix kernel entry address of vmlinux
This patch fixes the kernel entry point address of vmlinux.
The m32r kernel entry address is 0x08002000 (physical).
But, so far, the ENTRY point written in vmlinux.lds.S was not point
the correct kernel entry address.
(before fix)
    $ objdump -x vmlinux
    vmlinux:     file format elf32-m32r-linux
    vmlinux
    architecture: m32r2, flags 0x00000112:
    EXEC_P, HAS_SYMS, D_PAGED
    start address 0x88002090	/* NG */
        :
    Sections:
    Idx Name          Size      VMA       LMA       File off  Algn
      0 .empty_zero_page 00001000  88001000  88001000  00001000  2**12
                      CONTENTS, ALLOC, LOAD, DATA
      1 .boot         0000008c  88002000  88002000  00002000  2**2
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
      2 .text         001ab694  88002090  88002090  00002090  2**4
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
        :
(after fix)
    $ objdump -x vmlinux
    vmlinux:     file format elf32-m32r-linux
    vmlinux
    architecture: m32r2, flags 0x00000112:
    EXEC_P, HAS_SYMS, D_PAGED
    start address 0x08002000	/* OK */
        :
This fix also remedies the following GDB error message (of gdb-6.4 or after)
at the first operation of kernel debugging:
"Previous frame identical to this frame (corrupt stack?)".
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
											
										 
											2007-02-10 01:43:39 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | kernel_entry = boot - 0x80000000;
 | 
					
						
							|  |  |  | ENTRY(kernel_entry) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | SECTIONS | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   . = CONFIG_MEMORY_START + __PAGE_OFFSET;
 | 
					
						
							|  |  |  |   eit_vector = .;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = . + 0x1000;
 | 
					
						
							|  |  |  |   .empty_zero_page : { *(.empty_zero_page) } = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* read-only */ | 
					
						
							|  |  |  |   _text = .;			/* Text and read-only data */
 | 
					
						
							|  |  |  |   .boot : { *(.boot) } = 0 | 
					
						
							|  |  |  |   .text : { | 
					
						
							| 
									
										
										
										
											2009-04-25 22:11:02 -04:00
										 |  |  | 	HEAD_TEXT | 
					
						
							| 
									
										
										
										
											2007-05-13 00:31:33 +02:00
										 |  |  | 	TEXT_TEXT | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	SCHED_TEXT | 
					
						
							|  |  |  | 	LOCK_TEXT | 
					
						
							|  |  |  | 	*(.fixup) | 
					
						
							|  |  |  | 	*(.gnu.warning) | 
					
						
							|  |  |  | 	} = 0x9090 | 
					
						
							|  |  |  | #ifdef CONFIG_SMP | 
					
						
							|  |  |  |   . = ALIGN(65536);
 | 
					
						
							|  |  |  |   .eit_vector4 : { *(.eit_vector4) } | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  |   _etext = .;			/* End of text section */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  |   EXCEPTION_TABLE(16) | 
					
						
							| 
									
										
										
										
											2009-10-05 00:10:55 +09:00
										 |  |  |   NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-19 21:34:58 -04:00
										 |  |  |   _sdata = .;			/* Start of data section */
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |   RODATA | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  |   RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE) | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |   _edata = .;			/* End of data section */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* will be freed after init */ | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  |   . = ALIGN(PAGE_SIZE);		/* Init code and data */
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |   __init_begin = .;
 | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  |   INIT_TEXT_SECTION(PAGE_SIZE) | 
					
						
							|  |  |  |   INIT_DATA_SECTION(16) | 
					
						
							| 
									
										
										
										
											2011-03-24 18:50:09 +01:00
										 |  |  |   PERCPU_SECTION(32) | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  |   . = ALIGN(PAGE_SIZE);
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |   __init_end = .;
 | 
					
						
							|  |  |  |   /* freed after init ends here */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-18 16:32:49 -04:00
										 |  |  |   BSS_SECTION(0, 0, 4) | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   _end = . ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Stabs debugging sections.  */ | 
					
						
							|  |  |  |   .stab 0 : { *(.stab) } | 
					
						
							|  |  |  |   .stabstr 0 : { *(.stabstr) } | 
					
						
							|  |  |  |   .stab.excl 0 : { *(.stab.excl) } | 
					
						
							|  |  |  |   .stab.exclstr 0 : { *(.stab.exclstr) } | 
					
						
							|  |  |  |   .stab.index 0 : { *(.stab.index) } | 
					
						
							|  |  |  |   .stab.indexstr 0 : { *(.stab.indexstr) } | 
					
						
							|  |  |  |   .comment 0 : { *(.comment) } | 
					
						
							| 
									
										
											  
											
												linker script: unify usage of discard definition
Discarded sections in different archs share some commonality but have
considerable differences.  This led to linker script for each arch
implementing its own /DISCARD/ definition, which makes maintaining
tedious and adding new entries error-prone.
This patch makes all linker scripts to move discard definitions to the
end of the linker script and use the common DISCARDS macro.  As ld
uses the first matching section definition, archs can include default
discarded sections by including them earlier in the linker script.
ia64 is notable because it first throws away some ia64 specific
subsections and then include the rest of the sections into the final
image, so those sections must be discarded before the inclusion.
defconfig compile tested for x86, x86-64, powerpc, powerpc64, ia64,
alpha, sparc, sparc64 and s390.  Michal Simek tested microblaze.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Paul Mundt <lethal@linux-sh.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Tested-by: Michal Simek <monstr@monstr.eu>
Cc: linux-arch@vger.kernel.org
Cc: Michal Simek <monstr@monstr.eu>
Cc: microblaze-uclinux@itee.uq.edu.au
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Tony Luck <tony.luck@intel.com>
											
										 
											2009-07-09 11:27:40 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |   /* Sections to be discarded */ | 
					
						
							|  |  |  |   DISCARDS | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | } |