diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-07-08 09:12:51 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-07-08 09:12:51 -0700 |
| commit | a297e4a5bf5f6a8e9ba2a811f36a1a885131f66d (patch) | |
| tree | b4703853957c62bb35b60728ebef3cd4b338e1cd /node/Salsa20.cpp | |
| parent | 412389ec755528108e0254e75a9cf43fc53e331a (diff) | |
| download | infinitytier-a297e4a5bf5f6a8e9ba2a811f36a1a885131f66d.tar.gz infinitytier-a297e4a5bf5f6a8e9ba2a811f36a1a885131f66d.zip | |
Add build def ZT_NO_TYPE_PUNNING, which when defined disables type punning code that might cause unaligned access errors on architectures that care (e.g. Android/ARM)
Diffstat (limited to 'node/Salsa20.cpp')
| -rw-r--r-- | node/Salsa20.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/node/Salsa20.cpp b/node/Salsa20.cpp index ae8e1802..de8f1569 100644 --- a/node/Salsa20.cpp +++ b/node/Salsa20.cpp @@ -19,13 +19,15 @@ #if __BYTE_ORDER == __LITTLE_ENDIAN -// Slow version that does not use type punning -//#define U8TO32_LITTLE(p) ( ((uint32_t)(p)[0]) | ((uint32_t)(p)[1] << 8) | ((uint32_t)(p)[2] << 16) | ((uint32_t)(p)[3] << 24) ) -//static inline void U32TO8_LITTLE(uint8_t *const c,const uint32_t v) { c[0] = (uint8_t)v; c[1] = (uint8_t)(v >> 8); c[2] = (uint8_t)(v >> 16); c[3] = (uint8_t)(v >> 24); } - +#ifdef ZT_NO_TYPE_PUNNING +// Slower version that does not use type punning +#define U8TO32_LITTLE(p) ( ((uint32_t)(p)[0]) | ((uint32_t)(p)[1] << 8) | ((uint32_t)(p)[2] << 16) | ((uint32_t)(p)[3] << 24) ) +static inline void U32TO8_LITTLE(uint8_t *const c,const uint32_t v) { c[0] = (uint8_t)v; c[1] = (uint8_t)(v >> 8); c[2] = (uint8_t)(v >> 16); c[3] = (uint8_t)(v >> 24); } +#else // Fast version that just does 32-bit load/store #define U8TO32_LITTLE(p) (*((const uint32_t *)((const void *)(p)))) #define U32TO8_LITTLE(c,v) *((uint32_t *)((void *)(c))) = (v) +#endif // ZT_NO_TYPE_PUNNING #else // __BYTE_ORDER == __BIG_ENDIAN (we don't support anything else... does MIDDLE_ENDIAN even still exist?) |
