Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/blackfin/lib/umulsi3_highpart.S
10817 views
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 ___umulsi3_highpart;
9
.type ___umulsi3_highpart, STT_FUNC;
10
11
#ifdef CONFIG_ARITHMETIC_OPS_L1
12
.section .l1.text
13
#else
14
.text
15
#endif
16
17
___umulsi3_highpart:
18
R2 = R1.H * R0.H, R3 = R1.L * R0.H (FU);
19
R0 = R1.L * R0.L, R1 = R1.H * R0.L (FU);
20
R0 >>= 16;
21
/* Unsigned multiplication has the nice property that we can
22
ignore carry on this first addition. */
23
R0 = R0 + R3;
24
R0 = R0 + R1;
25
cc = ac0;
26
R1 = cc;
27
R1 = PACK(R1.l,R0.h);
28
R0 = R1 + R2;
29
RTS;
30
31
.size ___umulsi3_highpart, .-___umulsi3_highpart
32
33