.arm .arch_extension idiv .globl main main: stmfd sp!, {r4, r5, lr} mov r4, #17 1: mov r5, #1 2: #if defined(INLINE_DIV) udiv r0, r4, r5 #elif defined(OUTOFLINE_DIV) mov r0, r4 mov r1, r5 bl my_div #elif defined(PATCHED_DIV) mov r0, r4 mov r1, r5 udiv r0, r0, r1 #elif defined(LIBGCC_DIV) mov r0, r4 mov r1, r5 bl __aeabi_uidiv #else #error "define INLINE_DIV, OUTOFLINE_DIV or LIBGCC_DIV" #endif add r5, r5, #1 cmp r4, r5 bhs 2b adds r4, r4, r4, lsl #1 bpl 1b mov r0, #0 ldmfd sp!, {r4, r5, pc} .space 1024 my_div: udiv r0, r0, r1 bx lr