; > f2Mul.arm.s ; Copyright: Robert J. Harley, 24-Jan-1998 ; Contact: Robert.Harley@inria.fr ; Legalese: You can do what you want with this code as long as this ; comment stays attached in a prominent position in ; human-readable form, any distribution of this or ; derived products is made without profit and includes ; full source and is subject to the same conditions. ; ; To use this with ecdl32bit.c, declare ; ; extern u32 f2Mul(u32 *ph, u32 a, u32 b); ; ; and delete the original f2Mul(). ; ; You might have to munge the syntax a little depending on your assembler. fp = r11 ip = r12 sp = r13 lr = r14 pc = r15 .text .align 4 .global f2Mul f2Mul: mov ip, sp stmfd sp!, {fp, ip, lr, pc} sub fp, ip, #4 ands ip, r1, #1 movne ip, r2 ands lr, r1, #2 eorne ip, ip, r2, lsl #1 movne lr, r2, lsr #31 tst r1, #4 eorne ip, ip, r2, lsl #2 eorne lr, lr, r2, lsr #30 tst r1, #8 eorne ip, ip, r2, lsl #3 eorne lr, lr, r2, lsr #29 tst r1, #16 eorne ip, ip, r2, lsl #4 eorne lr, lr, r2, lsr #28 tst r1, #32 eorne ip, ip, r2, lsl #5 eorne lr, lr, r2, lsr #27 tst r1, #64 eorne ip, ip, r2, lsl #6 eorne lr, lr, r2, lsr #26 tst r1, #128 eorne ip, ip, r2, lsl #7 eorne lr, lr, r2, lsr #25 tst r1, #256 eorne ip, ip, r2, lsl #8 eorne lr, lr, r2, lsr #24 tst r1, #512 eorne ip, ip, r2, lsl #9 eorne lr, lr, r2, lsr #23 tst r1, #1024 eorne ip, ip, r2, lsl #10 eorne lr, lr, r2, lsr #22 tst r1, #2048 eorne ip, ip, r2, lsl #11 eorne lr, lr, r2, lsr #21 tst r1, #4096 eorne ip, ip, r2, lsl #12 eorne lr, lr, r2, lsr #20 tst r1, #8192 eorne ip, ip, r2, lsl #13 eorne lr, lr, r2, lsr #19 tst r1, #16384 eorne ip, ip, r2, lsl #14 eorne lr, lr, r2, lsr #18 tst r1, #32768 eorne ip, ip, r2, lsl #15 eorne lr, lr, r2, lsr #17 tst r1, #65536 eorne ip, ip, r2, lsl #16 eorne lr, lr, r2, lsr #16 tst r1, #131072 eorne ip, ip, r2, lsl #17 eorne lr, lr, r2, lsr #15 tst r1, #262144 eorne ip, ip, r2, lsl #18 eorne lr, lr, r2, lsr #14 tst r1, #524288 eorne ip, ip, r2, lsl #19 eorne lr, lr, r2, lsr #13 tst r1, #1048576 eorne ip, ip, r2, lsl #20 eorne lr, lr, r2, lsr #12 tst r1, #2097152 eorne ip, ip, r2, lsl #21 eorne lr, lr, r2, lsr #11 tst r1, #4194304 eorne ip, ip, r2, lsl #22 eorne lr, lr, r2, lsr #10 tst r1, #8388608 eorne ip, ip, r2, lsl #23 eorne lr, lr, r2, lsr #9 tst r1, #16777216 eorne ip, ip, r2, lsl #24 eorne lr, lr, r2, lsr #8 tst r1, #33554432 eorne ip, ip, r2, lsl #25 eorne lr, lr, r2, lsr #7 tst r1, #67108864 eorne ip, ip, r2, lsl #26 eorne lr, lr, r2, lsr #6 tst r1, #134217728 eorne ip, ip, r2, lsl #27 eorne lr, lr, r2, lsr #5 tst r1, #268435456 eorne ip, ip, r2, lsl #28 eorne lr, lr, r2, lsr #4 tst r1, #536870912 eorne ip, ip, r2, lsl #29 eorne lr, lr, r2, lsr #3 tst r1, #1073741824 eorne ip, ip, r2, lsl #30 eorne lr, lr, r2, lsr #2 tst r1, #2147483648 eorne ip, ip, r2, lsl #31 eorne lr, lr, r2, lsr #1 str lr, [r0, #0] mov r0, ip ldmea fp, {fp, sp, pc}^ ; end f2Mul.arm.s