Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/lib/muldi3.S
10817 views
1
/*
2
* linux/arch/arm/lib/muldi3.S
3
*
4
* Author: Nicolas Pitre
5
* Created: Oct 19, 2005
6
* Copyright: Monta Vista Software, Inc.
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License version 2 as
10
* published by the Free Software Foundation.
11
*/
12
13
#include <linux/linkage.h>
14
15
#ifdef __ARMEB__
16
#define xh r0
17
#define xl r1
18
#define yh r2
19
#define yl r3
20
#else
21
#define xl r0
22
#define xh r1
23
#define yl r2
24
#define yh r3
25
#endif
26
27
ENTRY(__muldi3)
28
ENTRY(__aeabi_lmul)
29
30
mul xh, yl, xh
31
mla xh, xl, yh, xh
32
mov ip, xl, lsr #16
33
mov yh, yl, lsr #16
34
bic xl, xl, ip, lsl #16
35
bic yl, yl, yh, lsl #16
36
mla xh, yh, ip, xh
37
mul yh, xl, yh
38
mul xl, yl, xl
39
mul ip, yl, ip
40
adds xl, xl, yh, lsl #16
41
adc xh, xh, yh, lsr #16
42
adds xl, xl, ip, lsl #16
43
adc xh, xh, ip, lsr #16
44
mov pc, lr
45
46
ENDPROC(__muldi3)
47
ENDPROC(__aeabi_lmul)
48
49