OSAtomic_resolvers.c [plain text]
#include <arm/arch.h>
#if defined(_ARM_ARCH_7) && !defined(VARIANT_DYLD)
#include <stdlib.h>
#include <machine/cpu_capabilities.h>
#include <mach/machine.h>
#define makeResolver_up_mp(name) \
void name ## $VARIANT$up(void); \
void name ## $VARIANT$mp(void); \
void* name ## Resolver(void) __asm__( "_" #name ) ; \
void* name ## Resolver(void) { \
__asm__(".symbol_resolver _" #name); \
\
if ((_get_cpu_capabilities() & kUP) == 0) { \
return name ## $VARIANT$mp; \
} \
return name ## $VARIANT$up; \
}
#define makeResolver_up_mp_wfe(name) \
void name ## $VARIANT$up(void); \
void name ## $VARIANT$mp(void); \
void name ## $VARIANT$wfe(void); \
void* name ## Resolver(void) __asm__( "_" #name ) ; \
void* name ## Resolver(void) { \
__asm__(".symbol_resolver _" #name); \
int caps = _get_cpu_capabilities(); \
\
if ((caps & (kHasEvent | kUP)) == kHasEvent) { \
return name ## $VARIANT$wfe; \
} \
\
else if ((caps & kUP) == 0) { \
return name ## $VARIANT$mp; \
} \
return name ## $VARIANT$up; \
}
#include "OSAtomic_resolvers.h"
#else // defined _ARM_ARCH_7 && !defined VARIANT_DYLD
typedef int emptyFilesArentCFiles;
#endif // defined _ARM_ARCH_7 && !defined VARIANT_DYLD