• Nicholas Piggin's avatar
    powerpc: Use gas sections for arranging exception vectors · 57f26649
    Nicholas Piggin authored
    Use assembler sections of fixed size and location to arrange the 64-bit
    Book3S exception vector code (64-bit Book3E also uses it in head_64.S
    for 0x0..0x100).
    
    This allows better flexibility in arranging exception code and hiding
    unimportant details behind macros.
    
    Gas sections can be a bit painful to use this way, mainly because the
    assembler does not know where they will be finally linked. Taking
    absolute addresses requires a bit of trickery for example, but it can
    be hidden behind macros for the most part.
    
    Generated code is mostly the same except locations, offsets, alignments.
    
    The "+ 0x2" is only required for the trap number / kvm exit number,
    which gets loaded as a constant into a register.
    
    Previously, code also used + 0x2 for label names, but we changed to
    using "H" to distinguish HV case for that. Remove the last vestiges
    of that.
    
    __after_prom_start is taking absolute address of a label in another
    fixed section. Newer toolchains seemed to compile this okay, but older
    ones do not. FIXED_SYMBOL_ABS_ADDR is more foolproof, it just takes an
    additional line to define.
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    57f26649
exceptions-64s.S 44.8 KB