]> rtime.felk.cvut.cz Git - mcf548x/linux.git/blob - arch/m68k/coldfire/muldi3.S
Headers cleanup
[mcf548x/linux.git] / arch / m68k / coldfire / muldi3.S
1 /*
2  * Coldfire muldi3 assembly verion
3  */
4  
5 #include <linux/linkage.h>
6 .globl __muldi3
7
8 ENTRY(__muldi3)
9         linkw   %fp,#0
10         lea     %sp@(-32),%sp
11         moveml  %d2-%d7/%a2-%a3,%sp@
12         moveal  %fp@(8), %a2
13         moveal  %fp@(12), %a3
14         moveal  %fp@(16), %a0
15         moveal  %fp@(20),%a1
16         movel   %a3,%d2
17         andil   #65535,%d2
18         movel   %a3,%d3
19         clrw    %d3
20         swap    %d3
21         movel   %a1,%d0
22         andil   #65535,%d0
23         movel   %a1,%d1
24         clrw    %d1
25         swap    %d1
26         movel   %d2,%d7
27         mulsl   %d0,%d7
28         movel   %d2,%d4
29         mulsl   %d1,%d4
30         movel   %d3,%d2
31         mulsl   %d0,%d2
32         mulsl   %d1,%d3
33         movel   %d7,%d0
34         clrw    %d0
35         swap    %d0
36         addl    %d0,%d4
37         addl    %d2,%d4
38         cmpl    %d4,%d2
39         blss    1f
40         addil   #65536,%d3
41 1:
42         movel   %d4,%d0
43         clrw    %d0
44         swap    %d0
45         movel   %d3,%d5
46         addl    %d0,%d5
47         movew   %d4,%d6
48         swap    %d6
49         movew   %d7,%d6
50         movel   %d5,%d0
51         movel   %d6,%d1
52         movel   %a3,%d2
53         movel   %a0,%d3
54         mulsl   %d3,%d2
55         movel   %a2,%d3
56         movel   %a1,%d4
57         mulsl   %d4,%d3
58         addl    %d3,%d2
59         movel   %d2,%d0
60         addl    %d5,%d0
61         moveml  %sp@, %d2-%d7/%a2-%a3
62         lea     %sp@(32),%sp
63         unlk    %fp
64         rts