From: Brian Date: Tue, 11 Dec 2007 16:13:12 +0000 (-0700) Subject: Fix align16() function to work with 32/64-bit pointers on big-endian. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4a4543f5360b5f0a3350d9db770f1325cc3a9e84;p=mesa.git Fix align16() function to work with 32/64-bit pointers on big-endian. --- diff --git a/src/mesa/pipe/p_util.h b/src/mesa/pipe/p_util.h index b4d1195c9b0..e6d284d9327 100644 --- a/src/mesa/pipe/p_util.h +++ b/src/mesa/pipe/p_util.h @@ -169,13 +169,25 @@ align_free(void *ptr) static INLINE void * align16( void *unaligned ) { - union { - void *p; - uint64 u; - } pu; - pu.p = unaligned; - pu.u = (pu.u + 15) & ~15; - return pu.p; + if (sizeof(void *) == 64) { + union { + void *p; + uint64 u; + } pu; + pu.p = unaligned; + pu.u = (pu.u + 15) & ~15; + return pu.p; + } + else { + /* 32-bit pointers */ + union { + void *p; + uint u; + } pu; + pu.p = unaligned; + pu.u = (pu.u + 15) & ~15; + return pu.p; + } }