diff options
Diffstat (limited to '1.4.23-rc4/include/asterisk/unaligned.h')
-rw-r--r-- | 1.4.23-rc4/include/asterisk/unaligned.h | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/1.4.23-rc4/include/asterisk/unaligned.h b/1.4.23-rc4/include/asterisk/unaligned.h deleted file mode 100644 index 16791d6f0..000000000 --- a/1.4.23-rc4/include/asterisk/unaligned.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Asterisk -- An open source telephony toolkit. - * - * Copyright (C) 1999 - 2005, Digium, Inc. - * - * Mark Spencer <markster@digium.com> - * - * See http://www.asterisk.org for more information about - * the Asterisk project. Please do not directly contact - * any of the maintainers of this project for assistance; - * the project provides a web site, mailing lists and IRC - * channels for your use. - * - * This program is free software, distributed under the terms of - * the GNU General Public License Version 2. See the LICENSE file - * at the top of the source tree. - */ - -/*! \file - * \brief Handle unaligned data access - */ - -#ifndef _ASTERISK_UNALIGNED_H -#define _ASTERISK_UNALIGNED_H - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#ifdef __GNUC__ -/* If we just tell GCC what's going on, we can trust it to behave optimally */ -static inline unsigned int get_unaligned_uint32(void *p) -{ - struct { unsigned int d; } __attribute__((packed)) *pp = (void *)p; - - return pp->d; -} -static inline unsigned short get_unaligned_uint16(void *p) -{ - struct { unsigned short d; } __attribute__((packed)) *pp = (void *)p; - - return pp->d; -} - -static inline void put_unaligned_uint32(void *p, unsigned int datum) -{ - struct { unsigned int d; } __attribute__((packed)) *pp = (void *)p; - - pp->d = datum; -} - -static inline void put_unaligned_uint16(void *p, unsigned short datum) -{ - struct { unsigned short d; } __attribute__((packed)) *pp = (void *)p; - - pp->d = datum; -} -#elif defined(SOLARIS) && defined(__sparc__) -static inline unsigned int get_unaligned_uint32(void *p) -{ - unsigned char *cp = p; - - return (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | cp[3]; -} - -static inline unsigned short get_unaligned_uint16(void *p) -{ - unsigned char *cp = p; - - return (cp[0] << 8) | cp[1] ; -} - -static inline void put_unaligned_uint32(void *p, unsigned int datum) -{ - unsigned char *cp = p; - - cp[0] = datum >> 24; - cp[1] = datum >> 16; - cp[2] = datum >> 8; - cp[3] = datum; -} - -static inline void put_unaligned_uint16(void *p, unsigned int datum) -{ - unsigned char *cp = p; - - cp[0] = datum >> 8; - cp[1] = datum; -} -#else /* Not GCC, not Solaris/SPARC. Assume we can handle direct load/store. */ -#define get_unaligned_uint32(p) (*((unsigned int *)(p))) -#define get_unaligned_uint16(p) (*((unsigned short *)(p))) -#define put_unaligned_uint32(p,d) do { unsigned int *__P = (p); *__P = d; } while(0) -#define put_unaligned_uint16(p,d) do { unsigned short *__P = (p); *__P = d; } while(0) -#endif - -#if defined(__cplusplus) || defined(c_plusplus) -} -#endif - - -#endif /* _ASTERISK_UNALIGNED_H */ |