Skip to content

Commit

Permalink
t1ha: fix unaligned access on ARM.
Browse files Browse the repository at this point in the history
  • Loading branch information
erthink committed Jan 25, 2022
1 parent 1c9b3dd commit 4ba81b7
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/t1ha_bits.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@
#define T1HA_SYS_UNALIGNED_ACCESS T1HA_UNALIGNED_ACCESS__EFFICIENT
#elif defined(__e2k__)
#define T1HA_SYS_UNALIGNED_ACCESS T1HA_UNALIGNED_ACCESS__SLOW
#elif defined(__ARM_FEATURE_UNALIGNED)
#define T1HA_SYS_UNALIGNED_ACCESS T1HA_UNALIGNED_ACCESS__EFFICIENT
#else
#define T1HA_SYS_UNALIGNED_ACCESS T1HA_UNALIGNED_ACCESS__UNABLE
#endif
Expand Down Expand Up @@ -538,7 +536,8 @@ fetch16_le_aligned(const void *v) {
#ifndef fetch16_le_unaligned
static __maybe_unused __always_inline uint16_t
fetch16_le_unaligned(const void *v) {
#if T1HA_SYS_UNALIGNED_ACCESS == T1HA_UNALIGNED_ACCESS__UNABLE
#if T1HA_SYS_UNALIGNED_ACCESS == T1HA_UNALIGNED_ACCESS__UNABLE && \
!defined(__ARM_FEATURE_UNALIGNED)
const uint8_t *p = (const uint8_t *)v;
return p[0] | (uint16_t)p[1] << 8;
#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
Expand All @@ -564,7 +563,8 @@ fetch32_le_aligned(const void *v) {
#ifndef fetch32_le_unaligned
static __maybe_unused __always_inline uint32_t
fetch32_le_unaligned(const void *v) {
#if T1HA_SYS_UNALIGNED_ACCESS == T1HA_UNALIGNED_ACCESS__UNABLE
#if T1HA_SYS_UNALIGNED_ACCESS == T1HA_UNALIGNED_ACCESS__UNABLE && \
!defined(__ARM_FEATURE_UNALIGNED)
return fetch16_le_unaligned(v) |
(uint32_t)fetch16_le_unaligned((const uint8_t *)v + 2) << 16;
#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
Expand Down

0 comments on commit 4ba81b7

Please sign in to comment.