• Anton Blanchard's avatar
    powerpc: Handle unaligned ldbrx/stdbrx · 230aef7a
    Anton Blanchard authored
    Normally when we haven't implemented an alignment handler for
    a load or store instruction the process will be terminated.
    
    The alignment handler uses the DSISR (or a pseudo one) to locate
    the right handler. Unfortunately ldbrx and stdbrx overlap lfs and
    stfs so we incorrectly think ldbrx is an lfs and stdbrx is an
    stfs.
    
    This bug is particularly nasty - instead of terminating the
    process we apply an incorrect fixup and continue on.
    
    With more and more overlapping instructions we should stop
    creating a pseudo DSISR and index using the instruction directly,
    but for now add a special case to catch ldbrx/stdbrx.
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    230aef7a
align.c 24.7 KB