Commit 3d60f849 authored by Hirokazu Takata's avatar Hirokazu Takata Committed by Linus Torvalds

[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: default avatarHirokazu Takata <takata@linux-m32r.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4aa3b3cc
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
LDFLAGS := LDFLAGS :=
OBJCOPYFLAGS := -O binary -R .note -R .comment -S OBJCOPYFLAGS := -O binary -R .note -R .comment -S
LDFLAGS_vmlinux := -e startup_32 LDFLAGS_vmlinux :=
CFLAGS += -pipe -fno-schedule-insns CFLAGS += -pipe -fno-schedule-insns
CFLAGS_KERNEL += -mmodel=medium CFLAGS_KERNEL += -mmodel=medium
......
...@@ -6,12 +6,15 @@ ...@@ -6,12 +6,15 @@
#include <asm/page.h> #include <asm/page.h>
OUTPUT_ARCH(m32r) OUTPUT_ARCH(m32r)
ENTRY(startup_32)
#if defined(__LITTLE_ENDIAN__) #if defined(__LITTLE_ENDIAN__)
jiffies = jiffies_64; jiffies = jiffies_64;
#else #else
jiffies = jiffies_64 + 4; jiffies = jiffies_64 + 4;
#endif #endif
kernel_entry = boot - 0x80000000;
ENTRY(kernel_entry)
SECTIONS SECTIONS
{ {
. = CONFIG_MEMORY_START + __PAGE_OFFSET; . = CONFIG_MEMORY_START + __PAGE_OFFSET;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment