• Bryan O'Donoghue's avatar
    bl1-smc-handler: Ensure the lower-order 16 bits of SPSR are programmed · 520f864e
    Bryan O'Donoghue authored
    A bug recently fixed in bl2/aarch32/bl2_el3_entrypoint.S relates to
    programming the lower-order 16 bits of the SPSR to populate into the CPSR
    on eret.
    
    The BL1 smc-handler code is identical and has the same shortfall in
    programming the SPSR from the platform defined struct
    entry_point_info->spsr.
    
    msr spsr, r1 will only update bits f->[31:24] and c->[7:0] respectively. In
    order to ensure the 16 lower-order processor mode bits x->[15:8] and
    c->[7:0] this patch changes msr spsr, r1 to msr spsr_xc, r1.
    
    This change ensures we capture the x field, which we are interested in and
    not the f field which we are not.
    
    Fixes: f3b4914b
    
     ('AArch32: Add generic changes in BL1')
    Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
    520f864e
bl1_exceptions.S 3.71 KB