Skip to content
  • Nicolas Pitre's avatar
    ARM: 8477/1: runtime patch udiv/sdiv instructions into __aeabi_{u}idiv() · 42f25bdd
    Nicolas Pitre authored
    
    
    The ARM compiler inserts calls to __aeabi_idiv() and
    __aeabi_uidiv() when it needs to perform division on signed and
    unsigned integers. If a processor has support for the sdiv and
    udiv instructions, the kernel may overwrite the beginning of those
    functions with those instructions and a "bx lr" to get better
    performance.
    
    To ensure that those functions are aligned to a 32-bit word for easier
    patching (which might not always be the case in Thumb mode) and that
    the two patched instructions end up in the same cache line, a 8-byte
    alignment is enforced when ARM_PATCH_IDIV is selected.
    
    This was heavily inspired by a previous patch from Stephen Boyd.
    
    Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
    Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    42f25bdd