~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/x86/math-emu/mul_Xsig.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*---------------------------------------------------------------------------+
  3  |  mul_Xsig.S                                                               |
  4  |                                                                           |
  5  | Multiply a 12 byte fixed point number by another fixed point number.      |
  6  |                                                                           |
  7  | Copyright (C) 1992,1994,1995                                              |
  8  |                       W. Metzenthen, 22 Parker St, Ormond, Vic 3163,      |
  9  |                       Australia.  E-mail billm@jacobi.maths.monash.edu.au |
 10  |                                                                           |
 11  | Call from C as:                                                           |
 12  |   void mul32_Xsig(Xsig *x, unsigned b)                                    |
 13  |                                                                           |
 14  |   void mul64_Xsig(Xsig *x, unsigned long long *b)                         |
 15  |                                                                           |
 16  |   void mul_Xsig_Xsig(Xsig *x, unsigned *b)                                |
 17  |                                                                           |
 18  | The result is neither rounded nor normalized, and the ls bit or so may    |
 19  | be wrong.                                                                 |
 20  |                                                                           |
 21  +---------------------------------------------------------------------------*/
 22         .file   "mul_Xsig.S"
 23 
 24 
 25 #include "fpu_emu.h"
 26 
 27 .text
 28 SYM_FUNC_START(mul32_Xsig)
 29         pushl %ebp
 30         movl %esp,%ebp
 31         subl $16,%esp
 32         pushl %esi
 33 
 34         movl PARAM1,%esi
 35         movl PARAM2,%ecx
 36 
 37         xor %eax,%eax
 38         movl %eax,-4(%ebp)
 39         movl %eax,-8(%ebp)
 40 
 41         movl (%esi),%eax        /* lsl of Xsig */
 42         mull %ecx               /* msl of b */
 43         movl %edx,-12(%ebp)
 44 
 45         movl 4(%esi),%eax       /* midl of Xsig */
 46         mull %ecx               /* msl of b */
 47         addl %eax,-12(%ebp)
 48         adcl %edx,-8(%ebp)
 49         adcl $0,-4(%ebp)
 50 
 51         movl 8(%esi),%eax       /* msl of Xsig */
 52         mull %ecx               /* msl of b */
 53         addl %eax,-8(%ebp)
 54         adcl %edx,-4(%ebp)
 55 
 56         movl -12(%ebp),%eax
 57         movl %eax,(%esi)
 58         movl -8(%ebp),%eax
 59         movl %eax,4(%esi)
 60         movl -4(%ebp),%eax
 61         movl %eax,8(%esi)
 62 
 63         popl %esi
 64         leave
 65         RET
 66 SYM_FUNC_END(mul32_Xsig)
 67 
 68 
 69 SYM_FUNC_START(mul64_Xsig)
 70         pushl %ebp
 71         movl %esp,%ebp
 72         subl $16,%esp
 73         pushl %esi
 74 
 75         movl PARAM1,%esi
 76         movl PARAM2,%ecx
 77 
 78         xor %eax,%eax
 79         movl %eax,-4(%ebp)
 80         movl %eax,-8(%ebp)
 81 
 82         movl (%esi),%eax        /* lsl of Xsig */
 83         mull 4(%ecx)            /* msl of b */
 84         movl %edx,-12(%ebp)
 85 
 86         movl 4(%esi),%eax       /* midl of Xsig */
 87         mull (%ecx)             /* lsl of b */
 88         addl %edx,-12(%ebp)
 89         adcl $0,-8(%ebp)
 90         adcl $0,-4(%ebp)
 91 
 92         movl 4(%esi),%eax       /* midl of Xsig */
 93         mull 4(%ecx)            /* msl of b */
 94         addl %eax,-12(%ebp)
 95         adcl %edx,-8(%ebp)
 96         adcl $0,-4(%ebp)
 97 
 98         movl 8(%esi),%eax       /* msl of Xsig */
 99         mull (%ecx)             /* lsl of b */
100         addl %eax,-12(%ebp)
101         adcl %edx,-8(%ebp)
102         adcl $0,-4(%ebp)
103 
104         movl 8(%esi),%eax       /* msl of Xsig */
105         mull 4(%ecx)            /* msl of b */
106         addl %eax,-8(%ebp)
107         adcl %edx,-4(%ebp)
108 
109         movl -12(%ebp),%eax
110         movl %eax,(%esi)
111         movl -8(%ebp),%eax
112         movl %eax,4(%esi)
113         movl -4(%ebp),%eax
114         movl %eax,8(%esi)
115 
116         popl %esi
117         leave
118         RET
119 SYM_FUNC_END(mul64_Xsig)
120 
121 
122 
123 SYM_FUNC_START(mul_Xsig_Xsig)
124         pushl %ebp
125         movl %esp,%ebp
126         subl $16,%esp
127         pushl %esi
128 
129         movl PARAM1,%esi
130         movl PARAM2,%ecx
131 
132         xor %eax,%eax
133         movl %eax,-4(%ebp)
134         movl %eax,-8(%ebp)
135 
136         movl (%esi),%eax        /* lsl of Xsig */
137         mull 8(%ecx)            /* msl of b */
138         movl %edx,-12(%ebp)
139 
140         movl 4(%esi),%eax       /* midl of Xsig */
141         mull 4(%ecx)            /* midl of b */
142         addl %edx,-12(%ebp)
143         adcl $0,-8(%ebp)
144         adcl $0,-4(%ebp)
145 
146         movl 8(%esi),%eax       /* msl of Xsig */
147         mull (%ecx)             /* lsl of b */
148         addl %edx,-12(%ebp)
149         adcl $0,-8(%ebp)
150         adcl $0,-4(%ebp)
151 
152         movl 4(%esi),%eax       /* midl of Xsig */
153         mull 8(%ecx)            /* msl of b */
154         addl %eax,-12(%ebp)
155         adcl %edx,-8(%ebp)
156         adcl $0,-4(%ebp)
157 
158         movl 8(%esi),%eax       /* msl of Xsig */
159         mull 4(%ecx)            /* midl of b */
160         addl %eax,-12(%ebp)
161         adcl %edx,-8(%ebp)
162         adcl $0,-4(%ebp)
163 
164         movl 8(%esi),%eax       /* msl of Xsig */
165         mull 8(%ecx)            /* msl of b */
166         addl %eax,-8(%ebp)
167         adcl %edx,-4(%ebp)
168 
169         movl -12(%ebp),%edx
170         movl %edx,(%esi)
171         movl -8(%ebp),%edx
172         movl %edx,4(%esi)
173         movl -4(%ebp),%edx
174         movl %edx,8(%esi)
175 
176         popl %esi
177         leave
178         RET
179 SYM_FUNC_END(mul_Xsig_Xsig)

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php