• Zou Nan hai's avatar
    [IA64] Do not assume output registers be reservered. · acb15c85
    Zou Nan hai authored
    We found an issue in pal.S.
    
    According to the software runtime SPEC,
    The caller's output registers do not need to be preserved for
    caller. The callee may reuse input registers for any other
    purpose within the procedure.
    
    in ia64_pal_call_phys_stacked,
    
    input registers are copied to output registers before call
    into ia64_switch_mode_phys, then used to call into PAL. This
    assumes output registers are preserved in ia64_switch_mode_phys,
    which may not be true.
    
    In this particular case, ia64_switch_mode_phys alloc a null frame
    , and mask off psr.i.
    If an interrupt comes at this small window,
    or an MCA comes inside the procedure, output registers
    maybe changed,
    then the pal call may got some staled input registers.
    
    This patch moves the copies from input to output
    after ia64_switch_mode_phys to follow the software
    runtime convention.
    
    It  also removed some unused labels in
    ia64_pal_call_phys_stacked.
    Signed-off-by: default avatarZou Nan hai <nanhai.zou@intel.com>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    acb15c85
pal.S 7.52 KB