~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/arm/lib/muldi3.S

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)