1/* 2 * cc_config.h 3 * corecrypto 4 * 5 * Created by Michael Brouwer on 10/18/10. 6 * Copyright 2010,2011 Apple Inc. All rights reserved. 7 * 8 */ 9#ifndef _CORECRYPTO_CC_CONFIG_H_ 10#define _CORECRYPTO_CC_CONFIG_H_ 11 12#if !defined(CCN_UNIT_SIZE) 13#if defined(__x86_64__) 14#define CCN_UNIT_SIZE 8 15#elif defined(__arm__) || defined(__i386__) 16#define CCN_UNIT_SIZE 4 17#else 18#define CCN_UNIT_SIZE 2 19#endif 20#endif /* !defined(CCN_UNIT_SIZE) */ 21 22/* No dynamic linking allowed in L4, e.g. avoid nonlazy symbols */ 23/* For corecrypto kext, CC_STATIC should be 0 */ 24 25#if defined(__x86_64__) || defined(__i386__) 26 27/* These assembly routines only work for a single CCN_UNIT_SIZE. */ 28#if (defined(__x86_64__) && CCN_UNIT_SIZE == 8) || (defined(__i386__) && CCN_UNIT_SIZE == 4) 29#define CCN_ADD_ASM 1 30#define CCN_SUB_ASM 1 31#define CCN_MUL_ASM 1 32#else 33#define CCN_ADD_ASM 0 34#define CCN_SUB_ASM 0 35#define CCN_MUL_ASM 0 36#endif 37 38#define CCN_ADDMUL1_ASM 0 39#define CCN_MUL1_ASM 0 40#define CCN_CMP_ASM 0 41#define CCN_ADD1_ASM 0 42#define CCN_SUB1_ASM 0 43#define CCN_N_ASM 0 44#define CCN_SET_ASM 0 45#define CCAES_ARM 0 46#define CCAES_INTEL 1 47#define CCN_USE_BUILTIN_CLZ 0 48#define CCSHA1_VNG_INTEL 1 49#define CCSHA2_VNG_INTEL 1 50#define CCSHA1_VNG_ARMV7NEON 0 51#define CCSHA2_VNG_ARMV7NEON 0 52 53#else 54 55#define CCN_ADD_ASM 0 56#define CCN_SUB_ASM 0 57#define CCN_MUL_ASM 0 58#define CCN_ADDMUL1_ASM 0 59#define CCN_MUL1_ASM 0 60#define CCN_CMP_ASM 0 61#define CCN_ADD1_ASM 0 62#define CCN_SUB1_ASM 0 63#define CCN_N_ASM 0 64#define CCN_SET_ASM 0 65#define CCAES_ARM 0 66#define CCAES_INTEL 0 67#define CCN_USE_BUILTIN_CLZ 0 68#define CCSHA1_VNG_INTEL 0 69#define CCSHA2_VNG_INTEL 0 70#define CCSHA1_VNG_ARMV7NEON 0 71#define CCSHA2_VNG_ARMV7NEON 0 72 73#endif /* !defined(__i386__) */ 74 75#define CCN_N_INLINE 0 76#define CCN_CMP_INLINE 0 77 78#define CC_INLINE static inline 79 80#ifdef __GNUC__ 81#define CC_NORETURN __attribute__((__noreturn__)) 82#define CC_NOTHROW __attribute__((__nothrow__)) 83#define CC_NONNULL(N) __attribute__((__nonnull__ N)) 84#define CC_NONNULL1 __attribute__((__nonnull__(1))) 85#define CC_NONNULL2 __attribute__((__nonnull__(2))) 86#define CC_NONNULL3 __attribute__((__nonnull__(3))) 87#define CC_NONNULL4 __attribute__((__nonnull__(4))) 88#define CC_NONNULL5 __attribute__((__nonnull__(5))) 89#define CC_NONNULL6 __attribute__((__nonnull__(6))) 90#define CC_NONNULL7 __attribute__((__nonnull__(7))) 91#define CC_NONNULL_ALL __attribute__((__nonnull__)) 92#define CC_SENTINEL __attribute__((__sentinel__)) 93#define CC_CONST __attribute__((__const__)) 94#define CC_PURE __attribute__((__pure__)) 95#define CC_WARN_RESULT __attribute__((__warn_unused_result__)) 96#define CC_MALLOC __attribute__((__malloc__)) 97#define CC_UNUSED __attribute__((unused)) 98#else /* !__GNUC__ */ 99/*! @parseOnly */ 100#define CC_NORETURN 101/*! @parseOnly */ 102#define CC_NOTHROW 103/*! @parseOnly */ 104#define CC_NONNULL1 105/*! @parseOnly */ 106#define CC_NONNULL2 107/*! @parseOnly */ 108#define CC_NONNULL3 109/*! @parseOnly */ 110#define CC_NONNULL4 111/*! @parseOnly */ 112#define CC_NONNULL5 113/*! @parseOnly */ 114#define CC_NONNULL6 115/*! @parseOnly */ 116#define CC_NONNULL7 117/*! @parseOnly */ 118#define CC_NONNULL_ALL 119/*! @parseOnly */ 120#define CC_SENTINEL 121/*! @parseOnly */ 122#define CC_CONST 123/*! @parseOnly */ 124#define CC_PURE 125/*! @parseOnly */ 126#define CC_WARN_RESULT 127/*! @parseOnly */ 128#define CC_MALLOC 129#endif /* !__GNUC__ */ 130 131#endif /* _CORECRYPTO_CC_CONFIG_H_ */ 132