aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/boot/compressed/head_64.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/boot/compressed/head_64.S')
-rw-r--r--arch/x86/boot/compressed/head_64.S26
1 files changed, 13 insertions, 13 deletions
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index a0b18426069a..723c72dfd7bc 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -260,15 +260,15 @@ ENTRY(startup_64)
260 * Copy the compressed kernel to the end of our buffer 260 * Copy the compressed kernel to the end of our buffer
261 * where decompression in place becomes safe. 261 * where decompression in place becomes safe.
262 */ 262 */
263 leaq _bss(%rip), %r8 263 pushq %rsi
264 leaq _bss(%rbx), %r9 264 leaq (_bss-8)(%rip), %rsi
265 leaq (_bss-8)(%rbx), %rdi
265 movq $_bss /* - $startup_32 */, %rcx 266 movq $_bss /* - $startup_32 */, %rcx
2661: subq $8, %r8 267 shrq $3, %rcx
267 subq $8, %r9 268 std
268 movq 0(%r8), %rax 269 rep movsq
269 movq %rax, 0(%r9) 270 cld
270 subq $8, %rcx 271 popq %rsi
271 jnz 1b
272 272
273/* 273/*
274 * Jump to the relocated address. 274 * Jump to the relocated address.
@@ -282,12 +282,12 @@ relocated:
282/* 282/*
283 * Clear BSS (stack is currently empty) 283 * Clear BSS (stack is currently empty)
284 */ 284 */
285 xorq %rax, %rax 285 xorl %eax, %eax
286 leaq _bss(%rbx), %rdi 286 leaq _bss(%rip), %rdi
287 leaq _ebss(%rbx), %rcx 287 leaq _ebss(%rip), %rcx
288 subq %rdi, %rcx 288 subq %rdi, %rcx
289 cld 289 shrq $3, %rcx
290 rep stosb 290 rep stosq
291 291
292/* 292/*
293 * Do the decompression, and jump to the new kernel.. 293 * Do the decompression, and jump to the new kernel..