@@ -231,100 +231,159 @@ WC_MISC_STATIC WC_INLINE void ByteReverseWords(word32* out, const word32* in,
231231#endif
232232}
233233
234+ #if ((defined(WOLFSSL_AARCH64_BUILD ) || defined(__aarch64__ )) && \
235+ defined(__APPLE__ )) || \
236+ defined(WOLFSSL_X86_64_BUILD ) || defined(WOLFSSL_X86_BUILD )
237+ #ifndef WOLFSSL_RW_UNALIGNED_32
238+ #define WOLFSSL_RW_UNALIGNED_32
239+ #endif
240+ #endif
234241WC_MISC_STATIC WC_INLINE word32 readUnalignedWord32 (const byte * in )
235242{
243+ #ifndef WOLFSSL_RW_UNALIGNED_32
236244 if (((wc_ptr_t )in & (wc_ptr_t )(sizeof (word32 ) - 1U )) == (wc_ptr_t )0 )
245+ #endif
246+ {
237247 return * (const word32 * )in ;
248+ }
249+ #ifndef WOLFSSL_RW_UNALIGNED_32
238250 else {
239251 word32 out = 0 ; /* else CONFIG_FORTIFY_SOURCE -Wmaybe-uninitialized */
240252 XMEMCPY (& out , in , sizeof (out ));
241253 return out ;
242254 }
255+ #endif
243256}
244257
245258WC_MISC_STATIC WC_INLINE word32 writeUnalignedWord32 (void * out , word32 in )
246259{
260+ #ifndef WOLFSSL_RW_UNALIGNED_32
247261 if (((wc_ptr_t )out & (wc_ptr_t )(sizeof (word32 ) - 1U )) == (wc_ptr_t )0 )
262+ #endif
263+ {
248264 * (word32 * )out = in ;
265+ }
266+ #ifndef WOLFSSL_RW_UNALIGNED_32
249267 else {
250268 XMEMCPY (out , & in , sizeof (in ));
251269 }
270+ #endif
252271 return in ;
253272}
254273
255274WC_MISC_STATIC WC_INLINE void readUnalignedWords32 (word32 * out , const byte * in ,
256275 size_t count )
257276{
258- if (((wc_ptr_t )in & (wc_ptr_t )(sizeof (word32 ) - 1U )) == (wc_ptr_t )0 ) {
277+ #ifndef WOLFSSL_RW_UNALIGNED_32
278+ if (((wc_ptr_t )in & (wc_ptr_t )(sizeof (word32 ) - 1U )) == (wc_ptr_t )0 )
279+ #endif
280+ {
259281 const word32 * in_word32 = (const word32 * )in ;
260282 while (count -- > 0 )
261283 * out ++ = * in_word32 ++ ;
262284 }
285+ #ifndef WOLFSSL_RW_UNALIGNED_32
263286 else {
264287 XMEMCPY (out , in , count * sizeof (* out ));
265288 }
289+ #endif
266290}
267291
268292WC_MISC_STATIC WC_INLINE void writeUnalignedWords32 (byte * out , const word32 * in ,
269293 size_t count )
270294{
271- if (((wc_ptr_t )out & (wc_ptr_t )(sizeof (word32 ) - 1U )) == (wc_ptr_t )0 ) {
295+ #ifndef WOLFSSL_RW_UNALIGNED_32
296+ if (((wc_ptr_t )out & (wc_ptr_t )(sizeof (word32 ) - 1U )) == (wc_ptr_t )0 )
297+ #endif
298+ {
272299 word32 * out_word32 = (word32 * )out ;
273300 while (count -- > 0 )
274301 * out_word32 ++ = * in ++ ;
275302 }
303+ #ifndef WOLFSSL_RW_UNALIGNED_32
276304 else {
277305 XMEMCPY (out , in , count * sizeof (* in ));
278306 }
307+ #endif
279308}
280309
281310#if defined(WORD64_AVAILABLE ) && !defined(WOLFSSL_NO_WORD64_OPS )
282311
312+ #if ((defined(WOLFSSL_AARCH64_BUILD ) || defined(__aarch64__ )) && \
313+ defined(__APPLE__ )) || \
314+ defined(WOLFSSL_X86_64_BUILD ) || defined(WOLFSSL_X86_BUILD )
315+ #ifndef WOLFSSL_RW_UNALIGNED_64
316+ #define WOLFSSL_RW_UNALIGNED_64
317+ #endif
318+ #endif
319+
283320WC_MISC_STATIC WC_INLINE word64 readUnalignedWord64 (const byte * in )
284321{
322+ #ifndef WOLFSSL_RW_UNALIGNED_64
285323 if (((wc_ptr_t )in & (wc_ptr_t )(sizeof (word64 ) - 1U )) == (wc_ptr_t )0 )
324+ #endif
325+ {
286326 return * (const word64 * )in ;
327+ }
328+ #ifndef WOLFSSL_RW_UNALIGNED_64
287329 else {
288330 word64 out = 0 ; /* else CONFIG_FORTIFY_SOURCE -Wmaybe-uninitialized */
289331 XMEMCPY (& out , in , sizeof (out ));
290332 return out ;
291333 }
334+ #endif
292335}
293336
294337WC_MISC_STATIC WC_INLINE word64 writeUnalignedWord64 (void * out , word64 in )
295338{
339+ #ifndef WOLFSSL_RW_UNALIGNED_64
296340 if (((wc_ptr_t )out & (wc_ptr_t )(sizeof (word64 ) - 1U )) == (wc_ptr_t )0 )
341+ #endif
342+ {
297343 * (word64 * )out = in ;
344+ }
345+ #ifndef WOLFSSL_RW_UNALIGNED_64
298346 else {
299347 XMEMCPY (out , & in , sizeof (in ));
300348 }
349+ #endif
301350 return in ;
302351}
303352
304353WC_MISC_STATIC WC_INLINE void readUnalignedWords64 (word64 * out , const byte * in ,
305354 size_t count )
306355{
307- if (((wc_ptr_t )in & (wc_ptr_t )(sizeof (word64 ) - 1U )) == (wc_ptr_t )0 ) {
356+ #ifndef WOLFSSL_RW_UNALIGNED_64
357+ if (((wc_ptr_t )in & (wc_ptr_t )(sizeof (word64 ) - 1U )) == (wc_ptr_t )0 )
358+ #endif
359+ {
308360 const word64 * in_word64 = (const word64 * )in ;
309361 while (count -- > 0 )
310362 * out ++ = * in_word64 ++ ;
311363 }
364+ #ifndef WOLFSSL_RW_UNALIGNED_64
312365 else {
313366 XMEMCPY (out , in , count * sizeof (* out ));
314367 }
368+ #endif
315369}
316370
317371WC_MISC_STATIC WC_INLINE void writeUnalignedWords64 (byte * out , const word64 * in ,
318372 size_t count )
319373{
320- if (((wc_ptr_t )out & (wc_ptr_t )(sizeof (word64 ) - 1U )) == (wc_ptr_t )0 ) {
374+ #ifndef WOLFSSL_RW_UNALIGNED_64
375+ if (((wc_ptr_t )out & (wc_ptr_t )(sizeof (word64 ) - 1U )) == (wc_ptr_t )0 )
376+ #endif
377+ {
321378 word64 * out_word64 = (word64 * )out ;
322379 while (count -- > 0 )
323380 * out_word64 ++ = * in ++ ;
324381 }
382+ #ifndef WOLFSSL_RW_UNALIGNED_64
325383 else {
326384 XMEMCPY (out , in , count * sizeof (* in ));
327385 }
386+ #endif
328387}
329388
330389WC_MISC_STATIC WC_INLINE word64 rotlFixed64 (word64 x , word64 y )
0 commit comments