Lines Matching defs:p_a
44 static void lin_clear(struct long_int_num *p_a)
46 (void)hvb_memset_s(p_a->data_mem, p_a->mem_size, 0, p_a->mem_size);
64 static int lin_compare(struct long_int_num *p_a, struct long_int_num *p_b)
68 if (p_a->valid_word_len != p_b->valid_word_len) {
69 return p_a->valid_word_len - p_b->valid_word_len;
72 if (p_a->valid_word_len == 0) {
76 for (i = p_a->valid_word_len - 1; i >= 0; --i) {
77 if (p_a->p_uint[i] != p_b->p_uint[i]) {
78 if (p_a->p_uint[i] > p_b->p_uint[i]) {
159 void lin_update_valid_len(struct long_int_num *p_a)
164 if (!p_a) {
168 p_data = p_a->p_uint + p_a->valid_word_len - 1;
169 for (i = 0; i < p_a->valid_word_len; ++i) {
175 p_a->valid_word_len -= i;
230 static void lin_sub(struct long_int_num *p_a, struct long_int_num *p_b)
238 t = p_a->p_uint[i] < c;
239 p_a->p_uint[i] = p_a->p_uint[i] - c;
241 c = (p_a->p_uint[i] < p_b->p_uint[i]) + t;
242 p_a->p_uint[i] = p_a->p_uint[i] - p_b->p_uint[i];
244 for (; i < p_a->valid_word_len && c; ++i) {
245 t = p_a->p_uint[i] < c;
246 p_a->p_uint[i] = p_a->p_uint[i] - c;
249 lin_update_valid_len(p_a);
258 static void montgomery_mul_add(struct long_int_num *p_a, unsigned long b, struct long_int_num *p_n,
265 unsigned long *p_ad = p_a->p_uint;
270 while (p_a->valid_word_len > p_n->valid_word_len){
271 lin_sub(p_a, p_n);
274 lin_mul_word(p_a->p_uint[0], b, &x_h, &x_l);
283 for (i = 1; i < p_a->valid_word_len; ++i) {
303 static void montgomery_mod_mul(struct long_int_num *p_a, struct long_int_num *p_b, struct long_int_num *p_n,
311 montgomery_mul_add(p_a, p_b->p_uint[i], p_n, n_n0_i, p_res);
373 uint32_t lin_get_bitlen(struct long_int_num *p_a)
380 if (!p_a || p_a->valid_word_len == 0) {
383 p_data = p_a->p_uint;
384 for (i = p_a->valid_word_len - 1; i >= 0; --i) {