aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/boot/compressed/head_32.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/boot/compressed/head_32.S')
-rw-r--r--arch/x86/boot/compressed/head_32.S11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index d02a4f02be1..6710dc78ac5 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -100,11 +100,12 @@ ENTRY(startup_32)
* where decompression in place becomes safe.
*/
pushl %esi
- leal _bss(%ebp), %esi
- leal _bss(%ebx), %edi
+ leal (_bss-4)(%ebp), %esi
+ leal (_bss-4)(%ebx), %edi
movl $(_bss - startup_32), %ecx
+ shrl $2, %ecx
std
- rep movsb
+ rep movsl
cld
popl %esi
@@ -135,8 +136,8 @@ relocated:
leal _bss(%ebx), %edi
leal _ebss(%ebx), %ecx
subl %edi, %ecx
- cld
- rep stosb
+ shrl $2, %ecx
+ rep stosl
/*
* Do the decompression, and jump to the new kernel..