Skip to content
Snippets Groups Projects
  • Julian Brown's avatar
    f7478a92
    Fix Thumb-1 BE32 execution and disassembly. · f7478a92
    Julian Brown authored
    
    Thumb-1 code has some issues in BE32 mode (as currently implemented). In
    short, since bytes are swapped within words at load time for BE32
    executables, this also swaps pairs of adjacent Thumb-1 instructions.
    
    This patch un-swaps those pairs of instructions again, both for execution,
    and for disassembly. (The previous version of the patch always read four
    bytes in arm_read_memory_func and then extracted the proper two bytes,
    in a probably misguided attempt to match the behaviour of actual hardware
    as described by e.g. the ARM9TDMI TRM, section 3.3 "Endian effects for
    instruction fetches". It's less complicated to just read the correct
    two bytes though.)
    
    Signed-off-by: default avatarJulian Brown <julian@codesourcery.com>
    Message-id: ca20462a044848000370318a8bd41dd0a4ed273f.1484929304.git.julian@codesourcery.com
    Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    f7478a92
    History
    Fix Thumb-1 BE32 execution and disassembly.
    Julian Brown authored
    
    Thumb-1 code has some issues in BE32 mode (as currently implemented). In
    short, since bytes are swapped within words at load time for BE32
    executables, this also swaps pairs of adjacent Thumb-1 instructions.
    
    This patch un-swaps those pairs of instructions again, both for execution,
    and for disassembly. (The previous version of the patch always read four
    bytes in arm_read_memory_func and then extracted the proper two bytes,
    in a probably misguided attempt to match the behaviour of actual hardware
    as described by e.g. the ARM9TDMI TRM, section 3.3 "Endian effects for
    instruction fetches". It's less complicated to just read the correct
    two bytes though.)
    
    Signed-off-by: default avatarJulian Brown <julian@codesourcery.com>
    Message-id: ca20462a044848000370318a8bd41dd0a4ed273f.1484929304.git.julian@codesourcery.com
    Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>