Lines Matching refs:ctx
349 struct karatsuba_ctx *ctx) in mpihelp_mul_karatsuba_case() argument
353 if (!ctx->tspace || ctx->tspace_size < vsize) { in mpihelp_mul_karatsuba_case()
354 if (ctx->tspace) in mpihelp_mul_karatsuba_case()
355 mpi_free_limb_space(ctx->tspace); in mpihelp_mul_karatsuba_case()
356 ctx->tspace = mpi_alloc_limb_space(2 * vsize); in mpihelp_mul_karatsuba_case()
357 if (!ctx->tspace) in mpihelp_mul_karatsuba_case()
359 ctx->tspace_size = vsize; in mpihelp_mul_karatsuba_case()
362 MPN_MUL_N_RECURSE(prodp, up, vp, vsize, ctx->tspace); in mpihelp_mul_karatsuba_case()
368 if (!ctx->tp || ctx->tp_size < vsize) { in mpihelp_mul_karatsuba_case()
369 if (ctx->tp) in mpihelp_mul_karatsuba_case()
370 mpi_free_limb_space(ctx->tp); in mpihelp_mul_karatsuba_case()
371 ctx->tp = mpi_alloc_limb_space(2 * vsize); in mpihelp_mul_karatsuba_case()
372 if (!ctx->tp) { in mpihelp_mul_karatsuba_case()
373 if (ctx->tspace) in mpihelp_mul_karatsuba_case()
374 mpi_free_limb_space(ctx->tspace); in mpihelp_mul_karatsuba_case()
375 ctx->tspace = NULL; in mpihelp_mul_karatsuba_case()
378 ctx->tp_size = vsize; in mpihelp_mul_karatsuba_case()
382 MPN_MUL_N_RECURSE(ctx->tp, up, vp, vsize, ctx->tspace); in mpihelp_mul_karatsuba_case()
383 cy = mpihelp_add_n(prodp, prodp, ctx->tp, vsize); in mpihelp_mul_karatsuba_case()
384 mpihelp_add_1(prodp + vsize, ctx->tp + vsize, vsize, in mpihelp_mul_karatsuba_case()
395 if (mpihelp_mul(ctx->tspace, vp, vsize, up, usize, &tmp) in mpihelp_mul_karatsuba_case()
399 if (!ctx->next) { in mpihelp_mul_karatsuba_case()
400 ctx->next = kzalloc(sizeof *ctx, GFP_KERNEL); in mpihelp_mul_karatsuba_case()
401 if (!ctx->next) in mpihelp_mul_karatsuba_case()
404 if (mpihelp_mul_karatsuba_case(ctx->tspace, in mpihelp_mul_karatsuba_case()
407 ctx->next) < 0) in mpihelp_mul_karatsuba_case()
411 cy = mpihelp_add_n(prodp, prodp, ctx->tspace, vsize); in mpihelp_mul_karatsuba_case()
412 mpihelp_add_1(prodp + vsize, ctx->tspace + vsize, usize, cy); in mpihelp_mul_karatsuba_case()
418 void mpihelp_release_karatsuba_ctx(struct karatsuba_ctx *ctx) in mpihelp_release_karatsuba_ctx() argument
422 if (ctx->tp) in mpihelp_release_karatsuba_ctx()
423 mpi_free_limb_space(ctx->tp); in mpihelp_release_karatsuba_ctx()
424 if (ctx->tspace) in mpihelp_release_karatsuba_ctx()
425 mpi_free_limb_space(ctx->tspace); in mpihelp_release_karatsuba_ctx()
426 for (ctx = ctx->next; ctx; ctx = ctx2) { in mpihelp_release_karatsuba_ctx()
427 ctx2 = ctx->next; in mpihelp_release_karatsuba_ctx()
428 if (ctx->tp) in mpihelp_release_karatsuba_ctx()
429 mpi_free_limb_space(ctx->tp); in mpihelp_release_karatsuba_ctx()
430 if (ctx->tspace) in mpihelp_release_karatsuba_ctx()
431 mpi_free_limb_space(ctx->tspace); in mpihelp_release_karatsuba_ctx()
432 kfree(ctx); in mpihelp_release_karatsuba_ctx()
457 struct karatsuba_ctx ctx; in mpihelp_mul() local
503 memset(&ctx, 0, sizeof ctx); in mpihelp_mul()
504 if (mpihelp_mul_karatsuba_case(prodp, up, usize, vp, vsize, &ctx) < 0) in mpihelp_mul()
506 mpihelp_release_karatsuba_ctx(&ctx); in mpihelp_mul()