• Nicholas Piggin's avatar
    powerpc/64s: Run at the kernel virtual address earlier in boot · b270bebd
    Nicholas Piggin authored
    This mostly consolidates the Book3E and Book3S behaviour in boot WRT
    executing from the physical or virtual address.
    
    Book3E sets up kernel virtual linear map in start_initialization_book3e
    and runs from the virtual linear alias after that. This change makes
    Book3S begin to execute from the virtual alias at the same point. Book3S
    can not use its MMU for that at this point, but when the MMU is disabled,
    the virtual linear address correctly aliases to physical memory because
    the top bits of the address are ignored with MMU disabled.
    
    Secondaries execute from the virtual address similarly early.
    
    This reduces the differences between subarchs, but the main motivation
    was to enable the PC-relative addressing ABI for Book3S, where pointer
    calculations must execute from the virtual address or the top bits of
    the pointer will be lost. This is similar to the requirement the TOC
    relative addressing already has that the TOC pointer use its virtual
    address.
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20230408021752.862660-3-npiggin@gmail.com
    b270bebd
head_64.S 25.7 KB