Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6.git] / arch / blackfin / lib / smulsi3_highpart.S
1 /*
2  * Copyright 2007 Analog Devices Inc.
3  *
4  * Licensed under the ADI BSD license or the GPL-2 (or later)
5  */
6
7 .align 2
8 .global ___smulsi3_highpart;
9 .type ___smulsi3_highpart, STT_FUNC;
10
11 #ifdef CONFIG_ARITHMETIC_OPS_L1
12 .section .l1.text
13 #else
14 .text
15 #endif
16
17 ___smulsi3_highpart:
18         R2 = R1.L * R0.L (FU);
19         R3 = R1.H * R0.L (IS,M);
20         R0 = R0.H * R1.H, R1 = R0.H * R1.L (IS,M);
21
22         R1.L = R2.H + R1.L;
23         cc = ac0;
24         R2 = cc;
25
26         R1.L = R1.L + R3.L;
27         cc = ac0;
28         R1 >>>= 16;
29         R3 >>>= 16;
30         R1 = R1 + R3;
31         R1 = R1 + R2;
32         R2 = cc;
33         R1 = R1 + R2;
34
35         R0 = R0 + R1;
36         RTS;
37
38 .size ___smulsi3_highpart, .-___smulsi3_highpart