diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-08-13 15:39:10 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-08-13 15:39:10 -0400 |
commit | 0980bd9cd32de2fef7eaa2858345c49d14498625 (patch) | |
tree | 41f5f823d0569a81b22037e79c22d823933a63f1 /lib/mpi/mpi-bit.c | |
parent | 78821b2c0299ab807d483802f09897728b93bce0 (diff) | |
parent | 0d7614f09c1ebdbaa1599a5aba7593f147bf96ee (diff) |
Merge commit 'v3.6-rc1' into linux-next
* commit 'v3.6-rc1': (9532 commits)
Linux 3.6-rc1
mm: remove node_start_pfn checking in new WARN_ON for now
ARM: mmp: add missing irqs.h
arm: mvebu: fix typo in .dtsi comment for Armada XP SoCs
ARM: PRIMA2: delete redundant codes to restore LATCHED when timer resumes
libceph: fix crypto key null deref, memory leak
ceph: simplify+fix atomic_open
sh: explicitly include sh_dma.h in setup-sh7722.c
um: Add arch/x86/um to MAINTAINERS
um: pass siginfo to guest process
um: fix ubd_file_size for read-only files
md/dm-raid: DM_RAID should select MD_RAID10
md/raid1: submit IO from originating thread instead of md thread.
raid5: raid5d handle stripe in batch way
raid5: make_request use batch stripe release
um: pull interrupt_end() into userspace()
um: split syscall_trace(), pass pt_regs to it
um: switch UPT_SET_RETURN_VALUE and regs_return_value to pt_regs
MIPS: Loongson 2: Sort out clock managment.
locks: remove unused lm_release_private
...
Diffstat (limited to 'lib/mpi/mpi-bit.c')
-rw-r--r-- | lib/mpi/mpi-bit.c | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/lib/mpi/mpi-bit.c b/lib/mpi/mpi-bit.c index 0c505361da19..568724804f29 100644 --- a/lib/mpi/mpi-bit.c +++ b/lib/mpi/mpi-bit.c | |||
@@ -54,165 +54,3 @@ unsigned mpi_get_nbits(MPI a) | |||
54 | return n; | 54 | return n; |
55 | } | 55 | } |
56 | EXPORT_SYMBOL_GPL(mpi_get_nbits); | 56 | EXPORT_SYMBOL_GPL(mpi_get_nbits); |
57 | |||
58 | /**************** | ||
59 | * Test whether bit N is set. | ||
60 | */ | ||
61 | int mpi_test_bit(MPI a, unsigned n) | ||
62 | { | ||
63 | unsigned limbno, bitno; | ||
64 | mpi_limb_t limb; | ||
65 | |||
66 | limbno = n / BITS_PER_MPI_LIMB; | ||
67 | bitno = n % BITS_PER_MPI_LIMB; | ||
68 | |||
69 | if (limbno >= a->nlimbs) | ||
70 | return 0; /* too far left: this is a 0 */ | ||
71 | limb = a->d[limbno]; | ||
72 | return (limb & (A_LIMB_1 << bitno)) ? 1 : 0; | ||
73 | } | ||
74 | |||
75 | /**************** | ||
76 | * Set bit N of A. | ||
77 | */ | ||
78 | int mpi_set_bit(MPI a, unsigned n) | ||
79 | { | ||
80 | unsigned limbno, bitno; | ||
81 | |||
82 | limbno = n / BITS_PER_MPI_LIMB; | ||
83 | bitno = n % BITS_PER_MPI_LIMB; | ||
84 | |||
85 | if (limbno >= a->nlimbs) { /* resize */ | ||
86 | if (a->alloced >= limbno) | ||
87 | if (mpi_resize(a, limbno + 1) < 0) | ||
88 | return -ENOMEM; | ||
89 | a->nlimbs = limbno + 1; | ||
90 | } | ||
91 | a->d[limbno] |= (A_LIMB_1 << bitno); | ||
92 | return 0; | ||
93 | } | ||
94 | |||
95 | /**************** | ||
96 | * Set bit N of A. and clear all bits above | ||
97 | */ | ||
98 | int mpi_set_highbit(MPI a, unsigned n) | ||
99 | { | ||
100 | unsigned limbno, bitno; | ||
101 | |||
102 | limbno = n / BITS_PER_MPI_LIMB; | ||
103 | bitno = n % BITS_PER_MPI_LIMB; | ||
104 | |||
105 | if (limbno >= a->nlimbs) { /* resize */ | ||
106 | if (a->alloced >= limbno) | ||
107 | if (mpi_resize(a, limbno + 1) < 0) | ||
108 | return -ENOMEM; | ||
109 | a->nlimbs = limbno + 1; | ||
110 | } | ||
111 | a->d[limbno] |= (A_LIMB_1 << bitno); | ||
112 | for (bitno++; bitno < BITS_PER_MPI_LIMB; bitno++) | ||
113 | a->d[limbno] &= ~(A_LIMB_1 << bitno); | ||
114 | a->nlimbs = limbno + 1; | ||
115 | return 0; | ||
116 | } | ||
117 | |||
118 | /**************** | ||
119 | * clear bit N of A and all bits above | ||
120 | */ | ||
121 | void mpi_clear_highbit(MPI a, unsigned n) | ||
122 | { | ||
123 | unsigned limbno, bitno; | ||
124 | |||
125 | limbno = n / BITS_PER_MPI_LIMB; | ||
126 | bitno = n % BITS_PER_MPI_LIMB; | ||
127 | |||
128 | if (limbno >= a->nlimbs) | ||
129 | return; /* not allocated, so need to clear bits :-) */ | ||
130 | |||
131 | for (; bitno < BITS_PER_MPI_LIMB; bitno++) | ||
132 | a->d[limbno] &= ~(A_LIMB_1 << bitno); | ||
133 | a->nlimbs = limbno + 1; | ||
134 | } | ||
135 | |||
136 | /**************** | ||
137 | * Clear bit N of A. | ||
138 | */ | ||
139 | void mpi_clear_bit(MPI a, unsigned n) | ||
140 | { | ||
141 | unsigned limbno, bitno; | ||
142 | |||
143 | limbno = n / BITS_PER_MPI_LIMB; | ||
144 | bitno = n % BITS_PER_MPI_LIMB; | ||
145 | |||
146 | if (limbno >= a->nlimbs) | ||
147 | return; /* don't need to clear this bit, it's to far to left */ | ||
148 | a->d[limbno] &= ~(A_LIMB_1 << bitno); | ||
149 | } | ||
150 | |||
151 | /**************** | ||
152 | * Shift A by N bits to the right | ||
153 | * FIXME: should use alloc_limb if X and A are same. | ||
154 | */ | ||
155 | int mpi_rshift(MPI x, MPI a, unsigned n) | ||
156 | { | ||
157 | mpi_ptr_t xp; | ||
158 | mpi_size_t xsize; | ||
159 | |||
160 | xsize = a->nlimbs; | ||
161 | x->sign = a->sign; | ||
162 | if (RESIZE_IF_NEEDED(x, (size_t) xsize) < 0) | ||
163 | return -ENOMEM; | ||
164 | xp = x->d; | ||
165 | |||
166 | if (xsize) { | ||
167 | mpihelp_rshift(xp, a->d, xsize, n); | ||
168 | MPN_NORMALIZE(xp, xsize); | ||
169 | } | ||
170 | x->nlimbs = xsize; | ||
171 | return 0; | ||
172 | } | ||
173 | |||
174 | /**************** | ||
175 | * Shift A by COUNT limbs to the left | ||
176 | * This is used only within the MPI library | ||
177 | */ | ||
178 | int mpi_lshift_limbs(MPI a, unsigned int count) | ||
179 | { | ||
180 | const int n = a->nlimbs; | ||
181 | mpi_ptr_t ap; | ||
182 | int i; | ||
183 | |||
184 | if (!count || !n) | ||
185 | return 0; | ||
186 | |||
187 | if (RESIZE_IF_NEEDED(a, n + count) < 0) | ||
188 | return -ENOMEM; | ||
189 | |||
190 | ap = a->d; | ||
191 | for (i = n - 1; i >= 0; i--) | ||
192 | ap[i + count] = ap[i]; | ||
193 | for (i = 0; i < count; i++) | ||
194 | ap[i] = 0; | ||
195 | a->nlimbs += count; | ||
196 | return 0; | ||
197 | } | ||
198 | |||
199 | /**************** | ||
200 | * Shift A by COUNT limbs to the right | ||
201 | * This is used only within the MPI library | ||
202 | */ | ||
203 | void mpi_rshift_limbs(MPI a, unsigned int count) | ||
204 | { | ||
205 | mpi_ptr_t ap = a->d; | ||
206 | mpi_size_t n = a->nlimbs; | ||
207 | unsigned int i; | ||
208 | |||
209 | if (count >= n) { | ||
210 | a->nlimbs = 0; | ||
211 | return; | ||
212 | } | ||
213 | |||
214 | for (i = 0; i < n - count; i++) | ||
215 | ap[i] = ap[i + count]; | ||
216 | ap[i] = 0; | ||
217 | a->nlimbs -= count; | ||
218 | } | ||