diff options
Diffstat (limited to 'linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/i386/mpih-mul2.S')
-rw-r--r--[-rwxr-xr-x] | linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/i386/mpih-mul2.S | 172 |
1 files changed, 86 insertions, 86 deletions
diff --git a/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/i386/mpih-mul2.S b/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/i386/mpih-mul2.S index 7547f0f..9794e11 100755..100644 --- a/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/i386/mpih-mul2.S +++ b/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/i386/mpih-mul2.S | |||
@@ -1,86 +1,86 @@ | |||
1 | /* i80386 addmul_1 -- Multiply a limb vector with a limb and add | 1 | /* i80386 addmul_1 -- Multiply a limb vector with a limb and add |
2 | * the result to a second limb vector. | 2 | * the result to a second limb vector. |
3 | * | 3 | * |
4 | * Copyright (C) 1992, 1994, 1998, | 4 | * Copyright (C) 1992, 1994, 1998, |
5 | * 2001, 2002 Free Software Foundation, Inc. | 5 | * 2001, 2002 Free Software Foundation, Inc. |
6 | * | 6 | * |
7 | * This file is part of Libgcrypt. | 7 | * This file is part of Libgcrypt. |
8 | * | 8 | * |
9 | * Libgcrypt is free software; you can redistribute it and/or modify | 9 | * Libgcrypt is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU Lesser General Public License as | 10 | * it under the terms of the GNU Lesser General Public License as |
11 | * published by the Free Software Foundation; either version 2.1 of | 11 | * published by the Free Software Foundation; either version 2.1 of |
12 | * the License, or (at your option) any later version. | 12 | * the License, or (at your option) any later version. |
13 | * | 13 | * |
14 | * Libgcrypt is distributed in the hope that it will be useful, | 14 | * Libgcrypt is distributed in the hope that it will be useful, |
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 | * GNU Lesser General Public License for more details. | 17 | * GNU Lesser General Public License for more details. |
18 | * | 18 | * |
19 | * You should have received a copy of the GNU Lesser General Public | 19 | * You should have received a copy of the GNU Lesser General Public |
20 | * License along with this program; if not, write to the Free Software | 20 | * License along with this program; if not, write to the Free Software |
21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA | 21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
22 | * | 22 | * |
23 | * Note: This code is heavily based on the GNU MP Library. | 23 | * Note: This code is heavily based on the GNU MP Library. |
24 | * Actually it's the same code with only minor changes in the | 24 | * Actually it's the same code with only minor changes in the |
25 | * way the data is stored; this is to support the abstraction | 25 | * way the data is stored; this is to support the abstraction |
26 | * of an optional secure memory allocation which may be used | 26 | * of an optional secure memory allocation which may be used |
27 | * to avoid revealing of sensitive data due to paging etc. | 27 | * to avoid revealing of sensitive data due to paging etc. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | 30 | ||
31 | #include "sysdep.h" | 31 | #include "sysdep.h" |
32 | #include "asm-syntax.h" | 32 | #include "asm-syntax.h" |
33 | 33 | ||
34 | 34 | ||
35 | /******************* | 35 | /******************* |
36 | * mpi_limb_t | 36 | * mpi_limb_t |
37 | * _gcry_mpih_addmul_1( mpi_ptr_t res_ptr, (sp + 4) | 37 | * _gcry_mpih_addmul_1( mpi_ptr_t res_ptr, (sp + 4) |
38 | * mpi_ptr_t s1_ptr, (sp + 8) | 38 | * mpi_ptr_t s1_ptr, (sp + 8) |
39 | * mpi_size_t s1_size, (sp + 12) | 39 | * mpi_size_t s1_size, (sp + 12) |
40 | * mpi_limb_t s2_limb) (sp + 16) | 40 | * mpi_limb_t s2_limb) (sp + 16) |
41 | */ | 41 | */ |
42 | 42 | ||
43 | #define res_ptr edi | 43 | #define res_ptr edi |
44 | #define s1_ptr esi | 44 | #define s1_ptr esi |
45 | #define size ecx | 45 | #define size ecx |
46 | #define s2_limb ebp | 46 | #define s2_limb ebp |
47 | 47 | ||
48 | TEXT | 48 | TEXT |
49 | ALIGN (3) | 49 | ALIGN (3) |
50 | GLOBL C_SYMBOL_NAME(_gcry_mpih_addmul_1) | 50 | GLOBL C_SYMBOL_NAME(_gcry_mpih_addmul_1) |
51 | C_SYMBOL_NAME(_gcry_mpih_addmul_1:) | 51 | C_SYMBOL_NAME(_gcry_mpih_addmul_1:) |
52 | 52 | ||
53 | INSN1(push,l ,R(edi)) | 53 | INSN1(push,l ,R(edi)) |
54 | INSN1(push,l ,R(esi)) | 54 | INSN1(push,l ,R(esi)) |
55 | INSN1(push,l ,R(ebx)) | 55 | INSN1(push,l ,R(ebx)) |
56 | INSN1(push,l ,R(ebp)) | 56 | INSN1(push,l ,R(ebp)) |
57 | 57 | ||
58 | INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20)) | 58 | INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20)) |
59 | INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24)) | 59 | INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24)) |
60 | INSN2(mov,l ,R(size),MEM_DISP(esp,28)) | 60 | INSN2(mov,l ,R(size),MEM_DISP(esp,28)) |
61 | INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32)) | 61 | INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32)) |
62 | 62 | ||
63 | INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4)) | 63 | INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4)) |
64 | INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4)) | 64 | INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4)) |
65 | INSN1(neg,l ,R(size)) | 65 | INSN1(neg,l ,R(size)) |
66 | INSN2(xor,l ,R(ebx),R(ebx)) | 66 | INSN2(xor,l ,R(ebx),R(ebx)) |
67 | ALIGN (3) | 67 | ALIGN (3) |
68 | Loop: | 68 | Loop: |
69 | INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4)) | 69 | INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4)) |
70 | INSN1(mul,l ,R(s2_limb)) | 70 | INSN1(mul,l ,R(s2_limb)) |
71 | INSN2(add,l ,R(eax),R(ebx)) | 71 | INSN2(add,l ,R(eax),R(ebx)) |
72 | INSN2(adc,l ,R(edx),$0) | 72 | INSN2(adc,l ,R(edx),$0) |
73 | INSN2(add,l ,MEM_INDEX(res_ptr,size,4),R(eax)) | 73 | INSN2(add,l ,MEM_INDEX(res_ptr,size,4),R(eax)) |
74 | INSN2(adc,l ,R(edx),$0) | 74 | INSN2(adc,l ,R(edx),$0) |
75 | INSN2(mov,l ,R(ebx),R(edx)) | 75 | INSN2(mov,l ,R(ebx),R(edx)) |
76 | 76 | ||
77 | INSN1(inc,l ,R(size)) | 77 | INSN1(inc,l ,R(size)) |
78 | INSN1(jnz, ,Loop) | 78 | INSN1(jnz, ,Loop) |
79 | INSN2(mov,l ,R(eax),R(ebx)) | 79 | INSN2(mov,l ,R(eax),R(ebx)) |
80 | 80 | ||
81 | INSN1(pop,l ,R(ebp)) | 81 | INSN1(pop,l ,R(ebp)) |
82 | INSN1(pop,l ,R(ebx)) | 82 | INSN1(pop,l ,R(ebx)) |
83 | INSN1(pop,l ,R(esi)) | 83 | INSN1(pop,l ,R(esi)) |
84 | INSN1(pop,l ,R(edi)) | 84 | INSN1(pop,l ,R(edi)) |
85 | ret | 85 | ret |
86 | 86 | ||