• Sandipan Das's avatar
    powerpc/lib/sstep: Fix fixed-point arithmetic instructions that set CA32 · dc39c1d6
    Sandipan Das authored
    There are existing fixed-point arithmetic instructions that always set the
    CA bit of XER to reflect the carry out of bit 0 in 64-bit mode and out of
    bit 32 in 32-bit mode. In ISA v3.0, these instructions also always set the
    CA32 bit of XER to reflect the carry out of bit 32.
    
    This fixes the emulated behaviour of such instructions when running on a
    system that is compliant with POWER ISA v3.0. The following instructions
    are affected:
      * Add Immediate Carrying (addic)
      * Add Immediate Carrying and Record (addic.)
      * Subtract From Immediate Carrying (subfic)
      * Add Carrying (addc[.])
      * Subtract From Carrying (subfc[.])
      * Add Extended (adde[.])
      * Subtract From Extended (subfe[.])
      * Add to Minus One Extended (addme[.])
      * Subtract From Minus One Extended (subfme[.])
      * Add to Zero Extended (addze[.])
      * Subtract From Zero Extended (subfze[.])
    
    Fixes: 0016a4cf ("powerpc: Emulate most Book I instructions in emulate_step()")
    Signed-off-by: default avatarSandipan Das <sandipan@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    dc39c1d6
sstep.c 67.1 KB