br x0
primary_switched:
bl setup_fixmap
+#ifdef CONFIG_EARLY_PRINTK
+ /* Use a virtual address to access the UART. */
+ ldr x23, =EARLY_UART_VIRTUAL_ADDRESS
+#endif
b launch
ENDPROC(real_start)
ldr x0, =secondary_switched
br x0
secondary_switched:
- bl setup_fixmap
-
/*
* Non-boot CPUs need to move on to the proper pagetables, which were
* setup in init_secondary_pagetables.
dsb sy /* Ensure completion of TLB flush */
isb
+#ifdef CONFIG_EARLY_PRINTK
+ /* Use a virtual address to access the UART. */
+ ldr x23, =EARLY_UART_VIRTUAL_ADDRESS
+#endif
b launch
ENDPROC(init_secondary)
* don't need the 1:1 map any more */
dsb sy
#if defined(CONFIG_EARLY_PRINTK) /* Fixmap is only used by early printk */
- /* Non-boot CPUs don't need to rebuild the fixmap itself, just
- * the mapping from boot_second to xen_fixmap */
- cbnz x22, 1f
-
/* Add UART to the fixmap table */
ldr x1, =xen_fixmap /* x1 := vaddr (xen_fixmap) */
lsr x2, x23, #THIRD_SHIFT
mov x3, #PT_DEV_L3
orr x2, x2, x3 /* x2 := 4K dev map including UART */
str x2, [x1, #(FIXMAP_CONSOLE*8)] /* Map it in the first fixmap's slot */
-1:
/* Map fixmap into boot_second */
ldr x4, =boot_second /* x4 := vaddr (boot_second) */
ldr x1, =FIXMAP_ADDR(0)
lsr x1, x1, #(SECOND_SHIFT - 3) /* x1 := Slot for FIXMAP(0) */
str x2, [x4, x1] /* Map it in the fixmap's slot */
-
- /* Use a virtual address to access the UART. */
- ldr x23, =EARLY_UART_VIRTUAL_ADDRESS
#endif
/*