Lines Matching refs:ctx
337 struct karatsuba_ctx *ctx) in mpihelp_mul_karatsuba_case() argument
341 if (!ctx->tspace || ctx->tspace_size < vsize) { in mpihelp_mul_karatsuba_case()
342 if (ctx->tspace) in mpihelp_mul_karatsuba_case()
343 mpi_free_limb_space(ctx->tspace); in mpihelp_mul_karatsuba_case()
344 ctx->tspace = mpi_alloc_limb_space(2 * vsize); in mpihelp_mul_karatsuba_case()
345 if (!ctx->tspace) in mpihelp_mul_karatsuba_case()
347 ctx->tspace_size = vsize; in mpihelp_mul_karatsuba_case()
350 MPN_MUL_N_RECURSE(prodp, up, vp, vsize, ctx->tspace); in mpihelp_mul_karatsuba_case()
356 if (!ctx->tp || ctx->tp_size < vsize) { in mpihelp_mul_karatsuba_case()
357 if (ctx->tp) in mpihelp_mul_karatsuba_case()
358 mpi_free_limb_space(ctx->tp); in mpihelp_mul_karatsuba_case()
359 ctx->tp = mpi_alloc_limb_space(2 * vsize); in mpihelp_mul_karatsuba_case()
360 if (!ctx->tp) { in mpihelp_mul_karatsuba_case()
361 if (ctx->tspace) in mpihelp_mul_karatsuba_case()
362 mpi_free_limb_space(ctx->tspace); in mpihelp_mul_karatsuba_case()
363 ctx->tspace = NULL; in mpihelp_mul_karatsuba_case()
366 ctx->tp_size = vsize; in mpihelp_mul_karatsuba_case()
370 MPN_MUL_N_RECURSE(ctx->tp, up, vp, vsize, ctx->tspace); in mpihelp_mul_karatsuba_case()
371 cy = mpihelp_add_n(prodp, prodp, ctx->tp, vsize); in mpihelp_mul_karatsuba_case()
372 mpihelp_add_1(prodp + vsize, ctx->tp + vsize, vsize, in mpihelp_mul_karatsuba_case()
383 if (mpihelp_mul(ctx->tspace, vp, vsize, up, usize, &tmp) in mpihelp_mul_karatsuba_case()
387 if (!ctx->next) { in mpihelp_mul_karatsuba_case()
388 ctx->next = kzalloc(sizeof *ctx, GFP_KERNEL); in mpihelp_mul_karatsuba_case()
389 if (!ctx->next) in mpihelp_mul_karatsuba_case()
392 if (mpihelp_mul_karatsuba_case(ctx->tspace, in mpihelp_mul_karatsuba_case()
395 ctx->next) < 0) in mpihelp_mul_karatsuba_case()
399 cy = mpihelp_add_n(prodp, prodp, ctx->tspace, vsize); in mpihelp_mul_karatsuba_case()
400 mpihelp_add_1(prodp + vsize, ctx->tspace + vsize, usize, cy); in mpihelp_mul_karatsuba_case()
406 void mpihelp_release_karatsuba_ctx(struct karatsuba_ctx *ctx) in mpihelp_release_karatsuba_ctx() argument
410 if (ctx->tp) in mpihelp_release_karatsuba_ctx()
411 mpi_free_limb_space(ctx->tp); in mpihelp_release_karatsuba_ctx()
412 if (ctx->tspace) in mpihelp_release_karatsuba_ctx()
413 mpi_free_limb_space(ctx->tspace); in mpihelp_release_karatsuba_ctx()
414 for (ctx = ctx->next; ctx; ctx = ctx2) { in mpihelp_release_karatsuba_ctx()
415 ctx2 = ctx->next; in mpihelp_release_karatsuba_ctx()
416 if (ctx->tp) in mpihelp_release_karatsuba_ctx()
417 mpi_free_limb_space(ctx->tp); in mpihelp_release_karatsuba_ctx()
418 if (ctx->tspace) in mpihelp_release_karatsuba_ctx()
419 mpi_free_limb_space(ctx->tspace); in mpihelp_release_karatsuba_ctx()
420 kfree(ctx); in mpihelp_release_karatsuba_ctx()
445 struct karatsuba_ctx ctx; in mpihelp_mul() local
491 memset(&ctx, 0, sizeof ctx); in mpihelp_mul()
492 if (mpihelp_mul_karatsuba_case(prodp, up, usize, vp, vsize, &ctx) < 0) in mpihelp_mul()
494 mpihelp_release_karatsuba_ctx(&ctx); in mpihelp_mul()