ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libeio/ecb.h
(Generate patch)

Comparing libeio/ecb.h (file contents):
Revision 1.19 by root, Fri Jan 24 23:46:17 2014 UTC vs.
Revision 1.22 by root, Sun Jul 27 22:10:53 2014 UTC

1/* 1/*
2 * libecb - http://software.schmorp.de/pkg/libecb 2 * libecb - http://software.schmorp.de/pkg/libecb
3 * 3 *
4 * Copyright (©) 2009-2013 Marc Alexander Lehmann <libecb@schmorp.de> 4 * Copyright (©) 2009-2014 Marc Alexander Lehmann <libecb@schmorp.de>
5 * Copyright (©) 2011 Emanuele Giaquinta 5 * Copyright (©) 2011 Emanuele Giaquinta
6 * All rights reserved. 6 * All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without modifica- 8 * Redistribution and use in source and binary forms, with or without modifica-
9 * tion, are permitted provided that the following conditions are met: 9 * tion, are permitted provided that the following conditions are met:
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- 25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
26 * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 * OF THE POSSIBILITY OF SUCH DAMAGE. 27 * OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 * Alternatively, the contents of this file may be used under the terms of
30 * the GNU General Public License ("GPL") version 2 or any later version,
31 * in which case the provisions of the GPL are applicable instead of
32 * the above. If you wish to allow the use of your version of this file
33 * only under the terms of the GPL and not to allow others to use your
34 * version of this file under the BSD license, indicate your decision
35 * by deleting the provisions above and replace them with the notice
36 * and other provisions required by the GPL. If you do not delete the
37 * provisions above, a recipient may use your version of this file under
38 * either the BSD or the GPL.
28 */ 39 */
29 40
30#ifndef ECB_H 41#ifndef ECB_H
31#define ECB_H 42#define ECB_H
32 43
142 || defined __ARM_ARCH_6K__ || defined __ARM_ARCH_6ZK__ 153 || defined __ARM_ARCH_6K__ || defined __ARM_ARCH_6ZK__
143 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory") 154 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory")
144 #elif defined __ARM_ARCH_7__ || defined __ARM_ARCH_7A__ \ 155 #elif defined __ARM_ARCH_7__ || defined __ARM_ARCH_7A__ \
145 || defined __ARM_ARCH_7M__ || defined __ARM_ARCH_7R__ 156 || defined __ARM_ARCH_7M__ || defined __ARM_ARCH_7R__
146 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory") 157 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory")
158 #elif __aarch64__
159 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb ish" : : : "memory")
147 #elif (__sparc || __sparc__) && !__sparcv8 160 #elif (__sparc || __sparc__) && !__sparcv8
148 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory") 161 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory")
149 #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad" : : : "memory") 162 #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad" : : : "memory")
150 #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore") 163 #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("membar #LoadStore | #StoreStore")
151 #elif defined __s390__ || defined __s390x__ 164 #elif defined __s390__ || defined __s390x__
309 #define ecb_decltype(x) __decltype(x) 322 #define ecb_decltype(x) __decltype(x)
310#elif ECB_GCC_VERSION(3,0) 323#elif ECB_GCC_VERSION(3,0)
311 #define ecb_decltype(x) __typeof(x) 324 #define ecb_decltype(x) __typeof(x)
312#endif 325#endif
313 326
327#if _MSC_VER >= 1300
328 #define ecb_deprecated __declspec(deprecated)
329#else
330 #define ecb_deprecated ecb_attribute ((__deprecated__))
331#endif
332
314#define ecb_noinline ecb_attribute ((__noinline__)) 333#define ecb_noinline ecb_attribute ((__noinline__))
315#define ecb_unused ecb_attribute ((__unused__)) 334#define ecb_unused ecb_attribute ((__unused__))
316#define ecb_const ecb_attribute ((__const__)) 335#define ecb_const ecb_attribute ((__const__))
317#define ecb_pure ecb_attribute ((__pure__)) 336#define ecb_pure ecb_attribute ((__pure__))
318 337
338/* http://msdn.microsoft.com/en-us/library/k6ktzx3s.aspx __declspec(noreturn) */
319#if ECB_C11 339#if ECB_C11
320 #define ecb_noreturn _Noreturn 340 #define ecb_noreturn _Noreturn
321#else 341#else
322 #define ecb_noreturn ecb_attribute ((__noreturn__)) 342 #define ecb_noreturn ecb_attribute ((__noreturn__))
323#endif 343#endif
592/* the only noteworthy exception is ancient armle, which uses order 43218765 */ 612/* the only noteworthy exception is ancient armle, which uses order 43218765 */
593#if 0 \ 613#if 0 \
594 || __i386 || __i386__ \ 614 || __i386 || __i386__ \
595 || __amd64 || __amd64__ || __x86_64 || __x86_64__ \ 615 || __amd64 || __amd64__ || __x86_64 || __x86_64__ \
596 || __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ \ 616 || __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ \
597 || defined __arm__ && defined __ARM_EABI__ \
598 || defined __s390__ || defined __s390x__ \ 617 || defined __s390__ || defined __s390x__ \
599 || defined __mips__ \ 618 || defined __mips__ \
600 || defined __alpha__ \ 619 || defined __alpha__ \
601 || defined __hppa__ \ 620 || defined __hppa__ \
602 || defined __ia64__ \ 621 || defined __ia64__ \
603 || defined __m68k__ \ 622 || defined __m68k__ \
604 || defined __m88k__ \ 623 || defined __m88k__ \
605 || defined __sh__ \ 624 || defined __sh__ \
606 || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64 625 || defined _M_IX86 || defined _M_AMD64 || defined _M_IA64 \
626 || (defined __arm__ && (defined __ARM_EABI__ || defined __EABI__ || defined __VFP_FP__ || defined _WIN32_WCE || defined __ANDROID__)) \
627 || defined __aarch64__
607 #define ECB_STDFP 1 628 #define ECB_STDFP 1
608 #include <string.h> /* for memcpy */ 629 #include <string.h> /* for memcpy */
609#else 630#else
610 #define ECB_STDFP 0 631 #define ECB_STDFP 0
611#endif 632#endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines