Commit a871d354 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Will Deacon
Browse files

arm64: remove __switch_data object from head.S

This removes the confusing __switch_data object from head.S,
and replaces it with standard PC-relative references to the
various symbols it encapsulates.
Reviewed-by: default avatarCatalin Marinas <>
Tested-by: default avatarMark Rutland <>
Reviewed-by: default avatarMark Rutland <>
Signed-off-by: default avatarArd Biesheuvel <>
Signed-off-by: default avatarWill Deacon <>
parent a44ef517
......@@ -253,7 +253,7 @@ ENTRY(stext)
* On return, the CPU will be ready for the MMU to be turned on and
* the TCR will have been set.
ldr x27, __switch_data // address to jump to after
ldr x27, =__mmap_switched // address to jump to after
// MMU has been enabled
adrp lr, __enable_mmu // return (PIC) address
add lr, lr, #:lo12:__enable_mmu
......@@ -420,35 +420,22 @@ __create_page_tables:
.align 3
.type __switch_data, %object
.quad __mmap_switched
.quad __bss_start // x6
.quad __bss_stop // x7
.quad __fdt_pointer // x5
.quad memstart_addr // x6
.quad init_thread_union + THREAD_START_SP // sp
* The following fragment of code is executed with the MMU on in MMU mode, and
* uses absolute addresses; this is not position independent.
* The following fragment of code is executed with the MMU enabled.
.set initial_sp, init_thread_union + THREAD_START_SP
adr x3, __switch_data + 8
adr_l x6, __bss_start
adr_l x7, __bss_stop
ldp x6, x7, [x3], #16
1: cmp x6, x7
b.hs 2f
str xzr, [x6], #8 // Clear BSS
b 1b
ldr x5, [x3], #8
ldr x6, [x3], #8
ldr x16, [x3]
mov sp, x16
str x21, [x5] // Save FDT pointer
str x24, [x6] // Save PHYS_OFFSET
adr_l sp, initial_sp, x4
str_l x21, __fdt_pointer, x5 // Save FDT pointer
str_l x24, memstart_addr, x6 // Save PHYS_OFFSET
mov x29, #0
b start_kernel
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