projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'backport/v3.14.24-ltsi-rc1/phy-rcar-gen2-usb-to-v3.15' into backport/v3...
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
arch
/
x86
/
boot
/
compressed
/
head_32.S
diff --git
a/arch/x86/boot/compressed/head_32.S
b/arch/x86/boot/compressed/head_32.S
index
9116aac
..
c5b56ed
100644
(file)
--- a/
arch/x86/boot/compressed/head_32.S
+++ b/
arch/x86/boot/compressed/head_32.S
@@
-50,6
+50,13
@@
ENTRY(efi_pe_entry)
pushl %eax
pushl %esi
pushl %ecx
pushl %eax
pushl %esi
pushl %ecx
+
+ call reloc
+reloc:
+ popl %ecx
+ subl reloc, %ecx
+ movl %ecx, BP_code32_start(%eax)
+
sub $0x4, %esp
ENTRY(efi_stub_entry)
sub $0x4, %esp
ENTRY(efi_stub_entry)
@@
-63,12
+70,7
@@
ENTRY(efi_stub_entry)
hlt
jmp 1b
2:
hlt
jmp 1b
2:
- call 3f
-3:
- popl %eax
- subl $3b, %eax
- subl BP_pref_address(%esi), %eax
- add BP_code32_start(%esi), %eax
+ movl BP_code32_start(%esi), %eax
leal preferred_addr(%eax), %eax
jmp *%eax
leal preferred_addr(%eax), %eax
jmp *%eax
@@
-184,7
+186,8
@@
relocated:
* Do the decompression, and jump to the new kernel..
*/
/* push arguments for decompress_kernel: */
* Do the decompression, and jump to the new kernel..
*/
/* push arguments for decompress_kernel: */
- pushl $z_output_len /* decompressed length */
+ pushl $z_run_size /* size of kernel with .bss and .brk */
+ pushl $z_output_len /* decompressed length, end of relocs */
leal z_extract_offset_negative(%ebx), %ebp
pushl %ebp /* output address */
pushl $z_input_len /* input_len */
leal z_extract_offset_negative(%ebx), %ebp
pushl %ebp /* output address */
pushl $z_input_len /* input_len */
@@
-194,7
+197,7
@@
relocated:
pushl %eax /* heap area */
pushl %esi /* real mode pointer */
call decompress_kernel /* returns kernel location in %eax */
pushl %eax /* heap area */
pushl %esi /* real mode pointer */
call decompress_kernel /* returns kernel location in %eax */
- addl $2
4
, %esp
+ addl $2
8
, %esp
/*
* Jump to the decompressed kernel.
/*
* Jump to the decompressed kernel.