summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/crypto_assembly.h
diff options
context:
space:
mode:
authorjsing <>2026-05-07 15:50:47 +0000
committerjsing <>2026-05-07 15:50:47 +0000
commit1b757b3ca51ec9acc27a25eaa755ecb44f25dc40 (patch)
tree656427b5c1059febcb616a24336646b0fc500310 /src/lib/libcrypto/crypto_assembly.h
parentd5995c0b31900e33301c3f83f267bbb2fe2ee113 (diff)
downloadopenbsd-1b757b3ca51ec9acc27a25eaa755ecb44f25dc40.tar.gz
openbsd-1b757b3ca51ec9acc27a25eaa755ecb44f25dc40.tar.bz2
openbsd-1b757b3ca51ec9acc27a25eaa755ecb44f25dc40.zip
Use macros for global functions and objects within SHA assembly.
This lets us remove some of the repetitive statements and allows for them to be adjusted for various platforms. ok kenjiro@ tb@
Diffstat (limited to 'src/lib/libcrypto/crypto_assembly.h')
-rw-r--r--src/lib/libcrypto/crypto_assembly.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib/libcrypto/crypto_assembly.h b/src/lib/libcrypto/crypto_assembly.h
index 22102d3fac..e42ed947dd 100644
--- a/src/lib/libcrypto/crypto_assembly.h
+++ b/src/lib/libcrypto/crypto_assembly.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: crypto_assembly.h,v 1.4 2026/05/07 15:41:37 jsing Exp $ */ 1/* $OpenBSD: crypto_assembly.h,v 1.5 2026/05/07 15:50:47 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2026 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2026 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -37,6 +37,11 @@
37#define CRYPTO_ASSEMBLY_SECTION_TEXT __TEXT,__text 37#define CRYPTO_ASSEMBLY_SECTION_TEXT __TEXT,__text
38#define CRYPTO_ASSEMBLY_SECTION_RODATA __DATA,__const 38#define CRYPTO_ASSEMBLY_SECTION_RODATA __DATA,__const
39 39
40#define CRYPTO_ASSEMBLY_SYMBOL_NAME(name) _name
41#define CRYPTO_ASSEMBLY_TYPE_FUNCTION(name)
42#define CRYPTO_ASSEMBLY_TYPE_OBJECT(name)
43#define CRYPTO_ASSEMBLY_OBJECT_SIZE(name)
44
40#define CRYPTO_ASSEMBLY_AARCH64_SYM_HI(name) name@PAGE 45#define CRYPTO_ASSEMBLY_AARCH64_SYM_HI(name) name@PAGE
41#define CRYPTO_ASSEMBLY_AARCH64_SYM_LO(name) name@PAGEOFF 46#define CRYPTO_ASSEMBLY_AARCH64_SYM_LO(name) name@PAGEOFF
42 47
@@ -44,8 +49,25 @@
44#define CRYPTO_ASSEMBLY_SECTION_TEXT .text 49#define CRYPTO_ASSEMBLY_SECTION_TEXT .text
45#define CRYPTO_ASSEMBLY_SECTION_RODATA .rodata 50#define CRYPTO_ASSEMBLY_SECTION_RODATA .rodata
46 51
52#define CRYPTO_ASSEMBLY_SYMBOL_NAME(name) name
53#define CRYPTO_ASSEMBLY_TYPE_FUNCTION(name) .type name,@function
54#define CRYPTO_ASSEMBLY_TYPE_OBJECT(name) .type name,@object
55#define CRYPTO_ASSEMBLY_OBJECT_SIZE(name) .size name,.-name
56
47#define CRYPTO_ASSEMBLY_AARCH64_SYM_HI(name) name 57#define CRYPTO_ASSEMBLY_AARCH64_SYM_HI(name) name
48#define CRYPTO_ASSEMBLY_AARCH64_SYM_LO(name) :lo12:name 58#define CRYPTO_ASSEMBLY_AARCH64_SYM_LO(name) :lo12:name
49#endif 59#endif
50 60
61#define CRYPTO_ASSEMBLY_GLOBAL_FUNCTION(name) \
62 .global CRYPTO_ASSEMBLY_SYMBOL_NAME(name) CRYPTO_ASSEMBLY_SEPARATOR \
63 CRYPTO_ASSEMBLY_TYPE_FUNCTION(name) CRYPTO_ASSEMBLY_SEPARATOR \
64 CRYPTO_ASSEMBLY_SYMBOL_NAME(name)
65
66#define CRYPTO_ASSEMBLY_OBJECT_START(name) \
67 CRYPTO_ASSEMBLY_TYPE_OBJECT(name) CRYPTO_ASSEMBLY_SEPARATOR \
68 name
69
70#define CRYPTO_ASSEMBLY_OBJECT_END(name) \
71 CRYPTO_ASSEMBLY_OBJECT_SIZE(name)
72
51#endif 73#endif