From b8006a66f243b5d48fc968e3fb0606b6b0fe3f48 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Nov 2021 22:20:03 +0100 Subject: [PATCH] PSA global data: move fields around to save code size Move fields around to have fewer accesses outside the 128-element Thumb direct access window. In psa_crypto.c's global_data, put the state fields first (-20). In psa_crypto_slot_management.c's global_data, keep the key slots first (otherwise it's +24). In mbedtls_psa_random_context_t, swapping entropy and drbg makes no difference (at least when the DRBG is mbedtls_ctr_drbg_context). Results (arm-none-eabi-gcc 7.3.1, build_arm_none_eabi_gcc_m0plus build): library/psa_crypto.o: 16166 -> 16146 (diff: 20) Signed-off-by: Gilles Peskine --- library/psa_crypto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/psa_crypto.c b/library/psa_crypto.c index 406e6c4cfb..e85bbb8d57 100644 --- a/library/psa_crypto.c +++ b/library/psa_crypto.c @@ -108,9 +108,9 @@ static int key_type_is_raw_bytes( psa_key_type_t type ) typedef struct { - mbedtls_psa_random_context_t rng; unsigned initialized : 1; unsigned rng_state : 2; + mbedtls_psa_random_context_t rng; } psa_global_data_t; static psa_global_data_t global_data;