1
2 #include <linux/linkage.h>
3
4
5
6
7
8
9
10 .text
11 .globl __mulsi3
12 .type __mulsi3, @function
13 .ent __mulsi3
14
15 __mulsi3:
16 .frame r1, 0, r15
17 add r3, r0, r0
18 beqi r5, result_is_zero
19 beqi r6, result_is_zero
20 bgeid r5, r5_pos
21 xor r4, r5, r6
22 rsubi r5, r5, 0
23 r5_pos:
24 bgei r6, r6_pos
25 rsubi r6, r6, 0
26 r6_pos:
27 bri l1
28 l2:
29 add r5, r5, r5
30 l1:
31 srl r6, r6
32 addc r7, r0, r0
33 beqi r7, l2
34 bneid r6, l2
35 add r3, r3, r5
36 blti r4, negateresult
37 rtsd r15, 8
38 nop
39 negateresult:
40 rtsd r15, 8
41 rsub r3, r3, r0
42 result_is_zero:
43 rtsd r15, 8
44 addi r3, r0, 0
45
46 .size __mulsi3, . - __mulsi3
47 .end __mulsi3