mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Tejun Heo <tj@kernel.org>, hacklu <embedway.linux@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 1/4] x86 boot: Jump to the entry point address in the elf header.
Date: Sun, 08 Jul 2012 23:52:15 -0700	[thread overview]
Message-ID: <87fw915sv4.fsf_-_@xmission.com> (raw)
In-Reply-To: <87k3yd5sxt.fsf@xmission.com> (Eric W. Biederman's message of "Sun, 08 Jul 2012 23:50:38 -0700")


Since we have the kernel's entry point stored in the ELF header use it,
and stop hardcoding the value.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
---
 arch/x86/boot/compressed/head_32.S |    2 +-
 arch/x86/boot/compressed/head_64.S |    2 +-
 arch/x86/boot/compressed/misc.c    |   16 +++++++++-------
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index c85e3ac..1b15e2c 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -211,7 +211,7 @@ relocated:
  * Jump to the decompressed kernel.
  */
 	xorl	%ebx, %ebx
-	jmp	*%ebp
+	jmp	*%eax
 
 /*
  * Stack and heap for uncompression
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 87e03a1..9b8d782 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -337,7 +337,7 @@ relocated:
 /*
  * Jump to the decompressed kernel.
  */
-	jmp	*%rbp
+	jmp	*%rax
 
 	.data
 gdt:
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index 7116dcb..fc96c3e 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -273,7 +273,7 @@ static void error(char *x)
 		asm("hlt");
 }
 
-static void parse_elf(void *output)
+static void *parse_elf(void *output)
 {
 #ifdef CONFIG_X86_64
 	Elf64_Ehdr ehdr;
@@ -323,13 +323,15 @@ static void parse_elf(void *output)
 	}
 
 	free(phdrs);
+	return output + (ehdr.e_entry - LOAD_PHYSICAL_ADDR);
 }
 
-asmlinkage void decompress_kernel(void *rmode, memptr heap,
-				  unsigned char *input_data,
-				  unsigned long input_len,
-				  unsigned char *output)
+asmlinkage void *decompress_kernel(void *rmode, memptr heap,
+				   unsigned char *input_data,
+				   unsigned long input_len,
+				   unsigned char *output)
 {
+	void *entry;
 	real_mode = rmode;
 
 	if (cmdline_find_option_bool("quiet"))
@@ -372,8 +374,8 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,
 	if (!quiet)
 		putstr("\nDecompressing Linux... ");
 	decompress(input_data, input_len, NULL, NULL, output, NULL, error);
-	parse_elf(output);
+	entry = parse_elf(output);
 	if (!quiet)
 		putstr("done.\nBooting the kernel.\n");
-	return;
+	return entry;
 }
-- 
1.7.5.4


  reply	other threads:[~2012-07-09  6:52 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-17  5:56 why the decompressed procedure move kernel from address 0x100000(1M) to 0x1000000(16M) +x hacklu
2012-06-02 23:48 ` Eric W. Biederman
2012-06-03  3:10   ` H. Peter Anvin
2012-06-03  8:41     ` Eric W. Biederman
2012-06-03 13:01       ` H. Peter Anvin
2012-06-03 20:30         ` [PATCH 1/2] x86, boot: Don't overlap the compressed and non-compressed image Eric W. Biederman
2012-06-03 20:32           ` [PATCH 2/2] x86, boot: Optimize the elf header handling Eric W. Biederman
2012-07-01 14:56             ` [tip:x86/boot] " tip-bot for Eric W. Biederman
2012-07-01 15:04             ` [PATCH 2/2] " H. Peter Anvin
2012-07-01 15:34               ` H. Peter Anvin
2012-07-01 16:08                 ` Eric W. Biederman
2012-07-01 16:11                   ` H. Peter Anvin
2012-07-01 16:26                     ` Eric W. Biederman
2012-07-01 16:44                       ` H. Peter Anvin
2012-07-01 17:09                         ` Eric W. Biederman
2012-07-01 17:15                           ` H. Peter Anvin
2012-07-01 18:25                             ` Eric W. Biederman
2012-07-01 18:37                               ` H. Peter Anvin
2012-07-01 19:20                                 ` Eric W. Biederman
2012-07-01 19:23                                   ` H. Peter Anvin
2012-07-01 20:40                                     ` Eric W. Biederman
2012-07-01 20:52                                       ` H. Peter Anvin
2012-07-09  6:50                                         ` Eric W. Biederman
2012-07-09  6:52                                           ` Eric W. Biederman [this message]
2012-07-09  6:53                                             ` [PATCH 2/4] x86 " Eric W. Biederman
2012-07-09  6:55                                             ` [PATCH 3/4] x86 boot: When building vmlinux.bin properly precompute the memory image Eric W. Biederman
2012-07-09  6:56                                             ` [PATCH 4/4] x86 boot: Tell ld the kernel doesn't want 2MB file offset alignment Eric W. Biederman
2012-07-09  6:59                                             ` [PATCH 1/4] x86 boot: Jump to the entry point address in the elf header Eric W. Biederman
2012-07-02 16:56                                 ` [PATCH 2/2] x86, boot: Optimize the elf header handling Tejun Heo
2012-07-09  7:03                                   ` Eric W. Biederman
2012-07-01  2:23           ` [PATCH 1/2] x86, boot: Don't overlap the compressed and non-compressed image Eric W. Biederman
2012-07-01  2:32             ` H. Peter Anvin
2012-07-01  5:22               ` Eric W. Biederman
2012-07-01 14:55           ` [tip:x86/boot] x86, boot: Don' t " tip-bot for Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87fw915sv4.fsf_-_@xmission.com \
    --to=ebiederm@xmission.com \
    --cc=embedway.linux@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome