• Paul Mundt's avatar
    sh: Fix PC adjustments for varying opcode length. · 53f983a9
    Paul Mundt authored
    There are a few different cases for figuring out how to
    size the instruction. We read in the instruction located
    at regs->pc - 4 when rewinding the opcode to figure out if
    there's a 32-bit opcode before the faulting instruction, with
    a default of a - 2 adjustment on a mismatch. In practice this
    works for the cases where pc - 4 is just another 16-bit opcode,
    or we happen to have a 32-bit and a 16-bit immediately
    preceeding the pc value.
    
    In the cases where we aren't rewinding, this is much less ugly..
    
    We also don't bother fixing up the places where we're explicitly
    dealing with 16-bit instructions, since this might lead to
    confusion regarding the encoding size possibilities on other
    CPU variants.
    Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
    53f983a9
traps.c 21.2 KB