1 /*- 2 * Copyright (c) 2024 Robert Clausecker <fuz@freebsd.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7 #include <machine/ifunc.h> 8 #include <sha.h> 9 #include <sys/auxv.h> 10 11 extern void _libmd_sha1block_scalar(SHA1_CTX *, const void *, size_t); 12 extern void _libmd_sha1block_sha1(SHA1_CTX *, const void *, size_t); 13 14 DEFINE_IFUNC(, void, sha1_block, (SHA1_CTX *, const void *, size_t)) 15 { 16 unsigned long hwcap = 0; 17 18 elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap)); 19 20 if (hwcap & HWCAP_SHA1) 21 return (_libmd_sha1block_sha1); 22 else 23 return (_libmd_sha1block_scalar); 24 } 25