Fix crashing on some 32 bit x86 systems

This commit is contained in:
UnknownShadow200 2025-09-07 19:40:47 +10:00
parent f4cf292899
commit 0d4b271fed
8 changed files with 23 additions and 11 deletions

View File

@ -205,7 +205,7 @@ x86ni_keysched(__m128i *sk, const void *key, size_t len)
}
/* see inner.h */
BR_TARGET("sse2,aes")
BR_TARGET("sse2,aes") BR_SSE_FUNCTION
unsigned
br_aes_x86ni_keysched_enc(unsigned char *skni, const void *key, size_t len)
{
@ -218,7 +218,7 @@ br_aes_x86ni_keysched_enc(unsigned char *skni, const void *key, size_t len)
}
/* see inner.h */
BR_TARGET("sse2,aes")
BR_TARGET("sse2,aes") BR_SSE_FUNCTION
unsigned
br_aes_x86ni_keysched_dec(unsigned char *skni, const void *key, size_t len)
{

View File

@ -46,7 +46,7 @@ br_aes_x86ni_cbcdec_init(br_aes_x86ni_cbcdec_keys *ctx,
BR_TARGETS_X86_UP
/* see bearssl_block.h */
BR_TARGET("sse2,aes")
BR_TARGET("sse2,aes") BR_SSE_FUNCTION
void
br_aes_x86ni_cbcdec_run(const br_aes_x86ni_cbcdec_keys *ctx,
void *iv, void *data, size_t len)

View File

@ -46,7 +46,7 @@ br_aes_x86ni_cbcenc_init(br_aes_x86ni_cbcenc_keys *ctx,
BR_TARGETS_X86_UP
/* see bearssl_block.h */
BR_TARGET("sse2,aes")
BR_TARGET("sse2,aes") BR_SSE_FUNCTION
void
br_aes_x86ni_cbcenc_run(const br_aes_x86ni_cbcenc_keys *ctx,
void *iv, void *data, size_t len)

View File

@ -46,7 +46,7 @@ br_aes_x86ni_ctr_init(br_aes_x86ni_ctr_keys *ctx,
BR_TARGETS_X86_UP
/* see bearssl_block.h */
BR_TARGET("sse2,sse4.1,aes")
BR_TARGET("sse2,sse4.1,aes") BR_SSE_FUNCTION
uint32_t
br_aes_x86ni_ctr_run(const br_aes_x86ni_ctr_keys *ctx,
const void *iv, uint32_t cc, void *data, size_t len)

View File

@ -46,7 +46,7 @@ br_aes_x86ni_ctrcbc_init(br_aes_x86ni_ctrcbc_keys *ctx,
BR_TARGETS_X86_UP
/* see bearssl_block.h */
BR_TARGET("sse2,sse4.1,aes")
BR_TARGET("sse2,sse4.1,aes") BR_SSE_FUNCTION
void
br_aes_x86ni_ctrcbc_ctr(const br_aes_x86ni_ctrcbc_keys *ctx,
void *ctr, void *data, size_t len)
@ -252,7 +252,7 @@ br_aes_x86ni_ctrcbc_ctr(const br_aes_x86ni_ctrcbc_keys *ctx,
}
/* see bearssl_block.h */
BR_TARGET("sse2,sse4.1,aes")
BR_TARGET("sse2,sse4.1,aes") BR_SSE_FUNCTION
void
br_aes_x86ni_ctrcbc_mac(const br_aes_x86ni_ctrcbc_keys *ctx,
void *cbcmac, const void *data, size_t len)
@ -303,7 +303,7 @@ br_aes_x86ni_ctrcbc_mac(const br_aes_x86ni_ctrcbc_keys *ctx,
}
/* see bearssl_block.h */
BR_TARGET("sse2,sse4.1,aes")
BR_TARGET("sse2,sse4.1,aes") BR_SSE_FUNCTION
void
br_aes_x86ni_ctrcbc_encrypt(const br_aes_x86ni_ctrcbc_keys *ctx,
void *ctr, void *cbcmac, void *data, size_t len)
@ -452,7 +452,7 @@ br_aes_x86ni_ctrcbc_encrypt(const br_aes_x86ni_ctrcbc_keys *ctx,
}
/* see bearssl_block.h */
BR_TARGET("sse2,sse4.1,aes")
BR_TARGET("sse2,sse4.1,aes") BR_SSE_FUNCTION
void
br_aes_x86ni_ctrcbc_decrypt(const br_aes_x86ni_ctrcbc_keys *ctx,
void *ctr, void *cbcmac, void *data, size_t len)

View File

@ -60,7 +60,7 @@ br_chacha20_sse2_get(void)
BR_TARGETS_X86_UP
/* see bearssl_block.h */
BR_TARGET("sse2")
BR_TARGET("sse2") BR_SSE_FUNCTION
uint32_t
br_chacha20_sse2_run(const void *key,
const void *iv, uint32_t cc, void *data, size_t len)

View File

@ -228,7 +228,7 @@ pclmulqdq11(__m128i x, __m128i y)
} while (0)
/* see bearssl_hash.h */
BR_TARGET("ssse3,pclmul")
BR_TARGET("ssse3,pclmul") BR_SSE_FUNCTION
void
br_ghash_pclmul(void *y, const void *h, const void *data, size_t len)
{

View File

@ -2400,6 +2400,18 @@ br_cpuid(uint32_t mask_eax, uint32_t mask_ebx,
#endif
/* BEG classicube specific */
/* Fix issue where 32 bit GCC aligns stack to 4 bytes, but will still
/* generate instructions expecting the stack to be _16_ byte aligned */
/* https://gcc.gnu.org/onlinedocs/gcc/x86-Function-Attributes.html */
/* TODO is this needed for MSVC ? */
#if (BR_GCC || BR_CLANG) && BR_i386 && !BR_amd64
#define BR_SSE_FUNCTION __attribute__((force_align_arg_pointer))
#else
#define BR_SSE_FUNCTION
#endif
/* END classicube specific
/* ==================================================================== */
#endif