From f7264fb7f637d2b85753b6fd2553e68c87141d66 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 3 Dec 2003 15:21:08 +0000 Subject: [PATCH] More of Brian Gladman's contributed files. --- scripts/conf-w32brg/gpg/gpg.sln | 21 + scripts/conf-w32brg/gpg/gpg.suo | Bin 0 -> 10240 bytes scripts/conf-w32brg/gpg/gpg.vcproj | 1794 +++++++++++++++++ scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm | 116 ++ .../conf-w32brg/mpi/nasm586/mpih-lshift.asm | 185 ++ scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm | 70 + scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm | 73 + scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm | 72 + .../conf-w32brg/mpi/nasm586/mpih-rshift.asm | 187 ++ scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm | 114 ++ 10 files changed, 2632 insertions(+) create mode 100644 scripts/conf-w32brg/gpg/gpg.sln create mode 100644 scripts/conf-w32brg/gpg/gpg.suo create mode 100644 scripts/conf-w32brg/gpg/gpg.vcproj create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm create mode 100644 scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm diff --git a/scripts/conf-w32brg/gpg/gpg.sln b/scripts/conf-w32brg/gpg/gpg.sln new file mode 100644 index 000000000..7e34beecf --- /dev/null +++ b/scripts/conf-w32brg/gpg/gpg.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpg", "gpg.vcproj", "{94134F3A-6236-4B20-8E86-F9CF43ADE332}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {94134F3A-6236-4B20-8E86-F9CF43ADE332}.Debug.ActiveCfg = Debug|Win32 + {94134F3A-6236-4B20-8E86-F9CF43ADE332}.Debug.Build.0 = Debug|Win32 + {94134F3A-6236-4B20-8E86-F9CF43ADE332}.Release.ActiveCfg = Release|Win32 + {94134F3A-6236-4B20-8E86-F9CF43ADE332}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/scripts/conf-w32brg/gpg/gpg.suo b/scripts/conf-w32brg/gpg/gpg.suo new file mode 100644 index 0000000000000000000000000000000000000000..b20497e481c9b25b33f3016d39757954110dee0a GIT binary patch literal 10240 zcmeI2e{56N700iWu#ynb!dkYbrSl3D+CdtUG!$rQ6FUh|QW&9yX_2ebqRswGF=Wacv)xXU!qA3u&{A;3=*egI_-z z{HRQMHS#qT*-EYQg_*K3(GK&p88ss&%3lK6Ni*fG!l)g`5o%(TD$xVTSAYHI%v5+Vp3G&kYH-^~W+ItNg!d;V z!b6$twEetw-cws7Gd+_@C(=3lvTc7d9nTz{EjDl2zHdakYnDb*$(f1Fcs3s1n@mrs z>XzX|I*}buseCQ{RmuzHuj;DV2uI`S$0T+wJWYTw(|TE!WV_k};X$0Xhqwz*X28C2 zY(H&2Gp{~PzggR30(+RY@z*bDA3@8ZpT2kHX-OA2-Mr{Q7El#f?Ak8jK?KFyj!$MJQ_xba%c; ziAE%dU0)@|9oo48K(VAUdGEn6a9oeW)f~Sltw=SH5&z zEGm^hWak`54~u%?T9&^e-}WVcQ|tVNSYMUlL8bCXnEN!c6$kD2#*#5dE3U$NNNFMT};i?rT3WM*0EakO3YSJX4>ML`EC$7tc(gm2gGYx%aOP&*I)9{Bau?uy^# z>qXu&xQBOfl{%&2sKp@{!A&tMVP7~ft1&#NutgExEIi5F!o)y|z7E?J5K`qR$EnNk zt`mPd2uh97Du!PlvtQ@98}o%5BvF`HAWuwNBrS*_ih*m@`Fuw~-z1g8OW}>c-4otUy+wSUtgW zrhre2j17O|R{ovl!9{O25w7O*YnuwH{oK}}_H&O6wM*4oE$%d#GofRIhD?<2T@Sqc z7%UtSz4qPS<(FUj{vXu)S8y0Fz_K$@@SWn{5wtahh9s@#x|57%2%On0{v6XSyl%QR>Ance4T;*nvSkXJSxiyx zZo4``sq#?s+xTNEjTnNMx5wIO($1`sC+GrySn#^==fku=uib#E$@kAN7V2CR#w9J@{(Qc zJq`GO>G_wvPMvp=t}M3au7%Xit>!VLEM$+JB}j1G^U<<}PSAP4?w6vs0d`fOP_#Uq z{uXvD#n_>qamZTw!B6Sc5zs8cxOLFb4k$94k9AwYL*avPxgU;z1YID3{vu$2V#!bc zYUQ!6Kb`JBb@cMr-q_ssb!%D|e)jhR&)xge!S8MPP3-Jj&#u&A-eh0h*?<4pgHL?> z^>e58Uj4~;Y|Eujj{g3o%k3jyT66XnP2afV%E#66FSoC`_`<4H!!Q2%(uuVb)4fSm zE`7Bl^>*v3-DmQrubhARTZ4&^`DECbUo(=%P9I73D~&Afr*R*|Bj4(%SDK_ZL zQY}*OG0o|;S}T_l^efVm9_zik?b{iw$K@%?@1@IG6yKGeq1@R`OA})E{@JOLV%vWe zO8@psOUxBpYBq0iSG3e@{!?i6-$Lnsh0@!F(mP&hiOG8JwX-TFK)p9 ztfsHedGmK?e|5eNcDak7F1huXv3nxKa;IWt^5)}I5CIp)YNS=#|5>h`?2q(T8J72_ z9W}O&#vC{=f6zE7I(9nLi8qO%O*&aA<_y8tM`l0I?dQKo@tv|k%;61{lS{dV6|R2%MS1pG@lR2iVqlRwIJvT}!Mw}-bGwU?{n2!g zLDzZgz4zd<0OwI70`L?#1 zP7!BzF-OG|G3F(2=;qk(4M=xs`ulB;+v}d=49GTNpFyQ@K(&N)k(%8Itl9+qZ_qWhzgPp3qzz1Ht}=VCJqcyn=0T3y>9&=*R^PE zGYXW?-%XCB((eK{%C3L+^JesnaY240BpWp)-b^(eWzgxhH$w#p2&~FUa30?<7cd{Jy}%t%#vMhE^e%Pt7xn;5??!)&MK|@Ss(dOc@s$p`qGl< zx{)N*LL{+{mknW#vuQWuu`;+lV=Q-)a7;hJ$$g}3q9SIF^LGpj9RP10rp~cT19tJO zH0Va`cB4%L%9523lwDW0?VjF;`Zm*JpKYrIVITItncliN)OC|SQ0WB9B^>Zb@ki9y(ZcK literal 0 HcmV?d00001 diff --git a/scripts/conf-w32brg/gpg/gpg.vcproj b/scripts/conf-w32brg/gpg/gpg.vcproj new file mode 100644 index 000000000..ab04dbd16 --- /dev/null +++ b/scripts/conf-w32brg/gpg/gpg.vcproj @@ -0,0 +1,1794 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm new file mode 100644 index 000000000..e299e13e5 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-add1.asm @@ -0,0 +1,116 @@ + +; i80586 add_n -- Add two limb vectors of the same length > 0 and store +; sum in a third limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + + global _mpihelp_add_n + + section .text + align 8 + +_mpihelp_add_n: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + mov ebx,[ebp] + dec ecx + mov edx,ecx + shr ecx,3 + and edx,7 + test ecx,ecx + jz short .2 + push edx + + align 8 +.1: mov eax,[28+edi] + lea edi,[32+edi] + mov eax,[esi] + mov edx,[4+esi] + adc eax,ebx + mov ebx,[4+ebp] + adc edx,ebx + mov ebx,[8+ebp] + mov [-32+edi],eax + mov [-28+edi],edx + mov eax,[8+esi] + mov edx,[12+esi] + adc eax,ebx + mov ebx,[12+ebp] + adc edx,ebx + mov ebx,[16+ebp] + mov [-24+edi],eax + mov [-20+edi],edx + mov eax,[16+esi] + mov edx,[20+esi] + adc eax,ebx + mov ebx,[20+ebp] + adc edx,ebx + mov ebx,[24+ebp] + mov [-16+edi],eax + mov [-12+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + adc eax,ebx + mov ebx,[28+ebp] + adc edx,ebx + mov ebx,[32+ebp] + mov [-8+edi],eax + mov [-4+edi],edx + + lea esi,[32+esi] + lea ebp,[32+ebp] + dec ecx + jnz short .1 + pop edx +.2: + dec edx + js short .4 + inc edx +.3: lea edi,[4+edi] + mov eax,[esi] + adc eax,ebx + mov ebx,[4+ebp] + mov [-4+edi],eax + lea esi,[4+esi] + lea ebp,[4+ebp] + dec edx + jnz short .3 +.4: mov eax,[esi] + adc eax,ebx + mov [edi],eax + sbb eax,eax + neg eax + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm new file mode 100644 index 000000000..4915176c6 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-lshift.asm @@ -0,0 +1,185 @@ + +; 80586 lshift +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + + global _mpihelp_lshift + + section .text + align 8 + +_mpihelp_lshift: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + cmp ecx,1 + jne short .1 + lea eax,[4+esi] + cmp eax,edi + jnc .6 + lea eax,[esi+ebp*4] + cmp edi,eax + jnc .6 + +.1: lea edi,[-4+edi+ebp*4] + lea esi,[-4+esi+ebp*4] + + mov edx,[esi] + sub esi, 4 + xor eax,eax + shld eax,edx,cl + push eax + dec ebp + push ebp + shr ebp,3 + jz short .3 + mov eax, [edi] + + align 4 +.2: mov eax,[-28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[-4+esi] + shld ebx,eax,cl + shld eax,edx,cl + mov [edi],ebx + mov [-4+edi],eax + mov ebx,[-8+esi] + mov eax,[-12+esi] + shld edx,ebx,cl + shld ebx,eax,cl + mov [-8+edi],edx + mov [-12+edi],ebx + mov edx,[-16+esi] + mov ebx,[-20+esi] + shld eax,edx,cl + shld edx,ebx,cl + mov [-16+edi],eax + mov [-20+edi],edx + mov eax,[-24+esi] + mov edx,[-28+esi] + shld ebx,eax,cl + shld eax,edx,cl + mov [-24+edi],ebx + mov [-28+edi],eax + sub esi,32 + sub edi,32 + dec ebp + jnz short .2 + +.3: pop ebp + and ebp,7 + jz short .5 +.4: mov eax,[esi] + shld edx,eax,cl + mov [edi],edx + mov edx,eax + sub esi,4 + sub edi,4 + dec ebp + jnz short .4 + +.5: shl edx,cl + mov [edi],edx + pop eax + pop ebp + pop ebx + pop esi + pop edi + ret + +.6: mov edx,[esi] + add esi,4 + dec ebp + push ebp + shr ebp,3 + add edx,edx + inc ebp + dec ebp + jz short .8 + mov eax, [edi] + + align 4 +.7: mov eax,[28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[4+esi] + adc eax,eax + mov [edi],ebx + adc edx,edx + mov [4+edi],eax + mov ebx,[8+esi] + mov eax,[12+esi] + adc ebx,ebx + mov [8+edi],edx + adc eax,eax + mov [12+edi],ebx + mov edx,[16+esi] + mov ebx,[20+esi] + adc edx,edx + mov [16+edi],eax + adc ebx,ebx + mov [20+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + adc eax,eax + mov [24+edi],ebx + adc edx,edx + mov [28+edi],eax + lea esi,[32+esi] + lea edi,[32+edi] + dec ebp + jnz short .7 + +.8: pop ebp + sbb eax,eax + and ebp,7 + jz short .10 + add eax,eax +.9: mov ebx,edx + mov edx,[esi] + adc edx,edx + mov [edi],ebx + lea esi,[4+esi] + lea edi,[4+edi] + dec ebp + jnz short .9 + jmp short .11 +.10:add eax,eax +.11:mov [edi],edx + sbb eax,eax + neg eax + + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm new file mode 100644 index 000000000..b00fbe3a7 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-mul1.asm @@ -0,0 +1,70 @@ + +; i80586 mul_1 -- Multiply a limb vector with a limb and store the +; result in a second limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + +%define res_ptr edi +%define s1_ptr esi +%define size ecx +%define s2_limb ebp + + global _mpihelp_mul_1 + + section .text + align 8 + +_mpihelp_mul_1: + push edi + push esi + push ebx + push ebp + mov res_ptr,[esp+20] + mov s1_ptr,[esp+24] + mov size,[esp+28] + mov s2_limb,[esp+32] + lea res_ptr,[res_ptr+size*4] + lea s1_ptr,[s1_ptr+size*4] + neg size + xor ebx,ebx + + align 8 +.1: + adc ebx,0 + mov eax,[s1_ptr+size*4] + mul s2_limb + add ebx,eax + mov [res_ptr+size*4],ebx + inc size + mov ebx,edx + jnz short .1 + adc ebx,0 + mov eax,ebx + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm new file mode 100644 index 000000000..f1c989345 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-mul2.asm @@ -0,0 +1,73 @@ + +; i80586 addmul_1 -- Multiply a limb vector with a limb and add +; the result to a second limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + +%define res_ptr edi +%define s1_ptr esi +%define size ecx +%define s2_limb ebp + + global _mpihelp_addmul_1 + + section .text + align 8 + +_mpihelp_addmul_1: + push edi + push esi + push ebx + push ebp + mov res_ptr,[esp+20] + mov s1_ptr,[esp+24] + mov size,[esp+28] + mov s2_limb,[esp+32] + lea res_ptr,[res_ptr+4*size] + lea s1_ptr,[s1_ptr+4*size] + neg size + xor ebx,ebx + + align 8 +.1: + adc ebx,0 + mov eax,[s1_ptr+4*size] + mul s2_limb + add eax,ebx + mov ebx,[res_ptr+4*size] + adc edx,0 + add ebx,eax + mov [res_ptr+4*size],ebx + inc size + mov ebx,edx + jnz short .1 + adc ebx,0 + mov eax,ebx + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm new file mode 100644 index 000000000..3e9030606 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-mul3.asm @@ -0,0 +1,72 @@ + +; i80586 submul_1 -- Multiply a limb vector with a limb and add +; the result to a second limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + + global _mpihelp_submul_1 + +%define res_ptr edi +%define s1_ptr esi +%define size ecx +%define s2_limb ebp + + section .text + align 8 + +_mpihelp_submul_1: + push edi + push esi + push ebx + push ebp + mov res_ptr,[esp+20] + mov s1_ptr,[esp+24] + mov size,[esp+28] + mov s2_limb,[esp+32] + lea res_ptr,[res_ptr+size*4] + lea s1_ptr,[s1_ptr+size*4] + neg size + xor ebx,ebx + + align 8 +.1: adc ebx,0 + mov eax,[s1_ptr+size*4] + mul s2_limb + add eax,ebx + mov ebx,[res_ptr+size*4] + adc edx,0 + sub ebx,eax + mov [res_ptr+size*4],ebx + inc size + mov ebx,edx + jnz short .1 + adc ebx,0 + mov eax,ebx + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm new file mode 100644 index 000000000..c39e87013 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-rshift.asm @@ -0,0 +1,187 @@ + +; i80586 rshift +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + + global _mpihelp_rshift + + section .text + align 8 + +_mpihelp_rshift: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + cmp ecx,1 + jne short .1 + lea eax,[4+edi] + cmp eax,esi + jnc .6 + lea eax,[edi+ebp*4] + cmp esi,eax + jnc .6 +.1: + mov edx,[esi] + add esi,4 + xor eax,eax + shrd eax,edx,cl + push eax + dec ebp + push ebp + shr ebp,3 + jz short .3 + mov eax, [edi] + + align 4 +.2: mov eax,[28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[4+esi] + shrd ebx,eax,cl + shrd eax,edx,cl + mov [edi],ebx + mov [4+edi],eax + mov ebx,[8+esi] + mov eax,[12+esi] + shrd edx,ebx,cl + shrd ebx,eax,cl + mov [8+edi],edx + mov [12+edi],ebx + mov edx,[16+esi] + mov ebx,[20+esi] + shrd eax,edx,cl + shrd edx,ebx,cl + mov [16+edi],eax + mov [20+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + shrd ebx,eax,cl + shrd eax,edx,cl + mov [24+edi],ebx + mov [28+edi],eax + add esi,32 + add edi,32 + dec ebp + jnz short .2 +.3: pop ebp + and ebp,7 + jz .5 +.4: + mov eax,[esi] + shrd edx,eax,cl + mov [edi],edx + mov edx,eax + add esi,4 + add edi,4 + dec ebp + jnz short .4 + +.5: shr edx,cl + mov [edi],edx + pop eax + pop ebp + pop ebx + pop esi + pop edi + ret + +.6: + lea edi,[-4+edi+ebp*4] + lea esi,[-4+esi+ebp*4] + mov edx,[esi] + sub esi,4 + dec ebp + push ebp + shr ebp,3 + shr edx,1 + inc ebp + dec ebp + jz short .8 + mov eax, [edi] + + align 4 +.7: mov eax,[-28+edi] + mov ebx,edx + mov eax,[esi] + mov edx,[-4+esi] + rcr eax,1 + mov [edi],ebx + rcr edx,1 + mov [-4+edi],eax + mov ebx,[-8+esi] + mov eax,[-12+esi] + rcr ebx,1 + mov [-8+edi],edx + rcr eax,1 + mov [-12+edi],ebx + mov edx,[-16+esi] + mov ebx,[-20+esi] + rcr edx,1 + mov [-16+edi],eax + rcr ebx,1 + mov [-20+edi],edx + mov eax,[-24+esi] + mov edx,[-28+esi] + rcr eax,1 + mov [-24+edi],ebx + rcr edx,1 + mov [-28+edi],eax + lea esi,[-32+esi] + lea edi,[-32+edi] + dec ebp + jnz short .7 + +.8: + pop ebp + sbb eax,eax + and ebp,7 + jz .10 + add eax,eax +.9: + mov ebx,edx + mov edx,[esi] + rcr edx,1 + mov [edi],ebx + lea esi,[-4+esi] + lea edi,[-4+edi] + dec ebp + jnz short .9 + jmp short .11 + +.10:add eax,eax +.11:mov [edi],edx + mov eax,0 + rcr eax,1 + pop ebp + pop ebx + pop esi + pop edi + ret + + end diff --git a/scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm b/scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm new file mode 100644 index 000000000..f281a95a5 --- /dev/null +++ b/scripts/conf-w32brg/mpi/nasm586/mpih-sub1.asm @@ -0,0 +1,114 @@ + +; i80586 sub_n -- Sub two limb vectors of the same length > 0 and store +; sum in a third limb vector. +; +; Copyright (C) 1992, 1994, 1995, 1996, 1998, +; 2001 Free Software Foundation, Inc. +; +; This file is part of GnuPG. +; +; GnuPG is free software; you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 2 of the License, or +; (at your option) any later version. +; +; GnuPG is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +; +; Modified versions of the GPG i586 assembler for use with NASM. This +; file is part of a native port of Gnu PG for use with Microsoft Visual +; Studio .net. Ported by Brian Gladman March 2002. + + global _mpihelp_sub_n + + section .text + align 8 + +_mpihelp_sub_n: + push edi + push esi + push ebx + push ebp + mov edi,[20+esp] + mov esi,[24+esp] + mov ebp,[28+esp] + mov ecx,[32+esp] + mov ebx,[ebp] + dec ecx + mov edx,ecx + shr ecx,3 + and edx,7 + test ecx,ecx + jz short .2 + push edx + + align 8 +.1: mov eax,[28+edi] + lea edi,[32+edi] + mov eax,[esi] + mov edx,[4+esi] + sbb eax,ebx + mov ebx,[4+ebp] + sbb edx,ebx + mov ebx,[8+ebp] + mov [-32+edi],eax + mov [-28+edi],edx + mov eax,[8+esi] + mov edx,[12+esi] + sbb eax,ebx + mov ebx,[12+ebp] + sbb edx,ebx + mov ebx,[16+ebp] + mov [-24+edi],eax + mov [-20+edi],edx + mov eax,[16+esi] + mov edx,[20+esi] + sbb eax,ebx + mov ebx,[20+ebp] + sbb edx,ebx + mov ebx,[24+ebp] + mov [-16+edi],eax + mov [-12+edi],edx + mov eax,[24+esi] + mov edx,[28+esi] + sbb eax,ebx + mov ebx,[28+ebp] + sbb edx,ebx + mov ebx,[32+ebp] + mov [-8+edi],eax + mov [-4+edi],edx + lea esi,[32+esi] + lea ebp,[32+ebp] + dec ecx + jnz short .1 + pop edx +.2: dec edx + js short .4 + inc edx +.3: lea edi,[4+edi] + mov eax,[esi] + sbb eax,ebx + mov ebx,[4+ebp] + mov [-4+edi],eax + lea esi,[4+esi] + lea ebp,[4+ebp] + dec edx + jnz short .3 +.4: mov eax,[esi] + sbb eax,ebx + mov [edi],eax + sbb eax,eax + neg eax + pop ebp + pop ebx + pop esi + pop edi + ret + + end