File Index
Files and directories
Sign in
FILE

sha512.h

File preview with syntax highlighting.

linux-6.19.14/lib/crypto/riscv/sha512.h C
 1/* SPDX-License-Identifier: GPL-2.0-or-later */
 2/*
 3 * SHA-512 and SHA-384 using the RISC-V vector crypto extensions
 4 *
 5 * Copyright (C) 2023 VRULL GmbH
 6 * Author: Heiko Stuebner <heiko.stuebner@vrull.eu>
 7 *
 8 * Copyright (C) 2023 SiFive, Inc.
 9 * Author: Jerry Shih <jerry.shih@sifive.com>
10 */
11
12#include <asm/simd.h>
13#include <asm/vector.h>
14
15static __ro_after_init DEFINE_STATIC_KEY_FALSE(have_extensions);
16
17asmlinkage void sha512_transform_zvknhb_zvkb(struct sha512_block_state *state,
18					     const u8 *data, size_t nblocks);
19
20static void sha512_blocks(struct sha512_block_state *state,
21			  const u8 *data, size_t nblocks)
22{
23	if (static_branch_likely(&have_extensions) && likely(may_use_simd())) {
24		kernel_vector_begin();
25		sha512_transform_zvknhb_zvkb(state, data, nblocks);
26		kernel_vector_end();
27	} else {
28		sha512_blocks_generic(state, data, nblocks);
29	}
30}
31
32#define sha512_mod_init_arch sha512_mod_init_arch
33static void sha512_mod_init_arch(void)
34{
35	if (riscv_isa_extension_available(NULL, ZVKNHB) &&
36	    riscv_isa_extension_available(NULL, ZVKB) &&
37	    riscv_vector_vlen() >= 128)
38		static_branch_enable(&have_extensions);
39}
~/ Read-only file preview.