/* @(#)archdefs.h 1.15 17/11/25 Copyright 2006-2017 J. Schilling */ /* * Processor, instruction set and OS architecture specific defines. * The information is fetched from compiler predefinitions only. * * Copyright (c) 2006-2017 J. Schilling */ /* * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * See the file CDDL.Schily.txt in this distribution for details. * A copy of the CDDL is also available via the Internet at * http://www.opensource.org/licenses/cddl1.txt * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file CDDL.Schily.txt from this distribution. */ #ifndef _SCHILY_ARCHDEFS_H #define _SCHILY_ARCHDEFS_H /* * The code in this file only depends on compiler predefined macros. * For this reason, it does not need to include schily/mconfig.h */ #if defined(sun) || defined(__sun) || defined(__sun__) #ifndef __sun #define __sun #endif #endif #if defined(sun2) #ifndef __mc68010 #define __mc68010 #endif #endif #if defined(mc68020) || defined(__mc68020) || defined(sun3) #ifndef __mc68020 #define __mc68020 #endif #endif #if defined(__mc68010) || defined(__mc68020) #ifndef __mc68000 #define __mc68000 #endif #endif #if defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) #ifndef __i386 #define __i386 #endif #endif #if defined(__amd64) || defined(__amd64__) || \ defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) #ifndef __amd64 #define __amd64 #endif #endif #if defined(__i386) || defined(__amd64) #ifndef __x86 #define __x86 #endif #endif #if defined(sparc) || defined(__sparc) || defined(__sparc__) #ifndef __sparc #define __sparc #endif #endif #if defined(__sparcv9) || defined(__sparcv9__) #ifndef __sparc #define __sparc #endif #ifndef __sparcv9 #define __sparcv9 #endif #endif #if defined(__sparc) && defined(__arch64__) #ifndef __sparcv9 #define __sparcv9 #endif #endif #if defined(SOL2) || defined(SOL2) || \ defined(S5R4) || defined(__S5R4) || defined(SVR4) # ifndef __SVR4 # define __SVR4 # endif #endif #if defined(sun2) || defined(sun3) || defined(__sun) #ifndef __sun #define __sun #endif #ifndef __GNUC__ #ifndef __IS_SUNPRO_C #ifdef __SVR4 #define __IS_SUNPRO_C #else #define __IS_SUN_C #endif /* __SVR4 */ #endif /* !__IS_SUNPRO_C */ #endif /* !__GNUC__ */ #endif /* __sun */ /* * SunOS 4 specific defines */ #if defined(__sun) && !defined(__SVR4) #define __SUNOS4 #if defined(__mc68000) #define __SUNOS4_MC68000 #ifdef __GNUC__ #define __SUNOS4_MC68000_GCC32 #define __JS_ARCH_DEFINED #endif #ifdef __IS_SUN_C #define __SUNOS4_MC68000_CC32 #define __JS_ARCH_DEFINED #endif #endif /* __mc68000 */ #if defined(__sparc) #define __SUNOS4_SPARC #ifdef __GNUC__ #define __SUNOS4_SPARC_GCC32 #define __JS_ARCH_DEFINED #endif #if defined(__IS_SUN_C) || defined(__SUNPRO_C) || defined(__IS_SUNPRO_C) #define __SUNOS4_SPARC_CC32 #define __JS_ARCH_DEFINED #endif #endif /* __sparc */ #endif /* SunOS 4 */ /* * SunOS 5 specific defines */ #if defined(__sun) && defined(__SVR4) #define __SUNOS5 #if defined(__sparc) #ifdef __GNUC__ #ifdef __sparcv9 #define __SUNOS5_SPARC_GCC64 #else #define __SUNOS5_SPARC_GCC32 #endif #define __JS_ARCH_DEFINED #endif #if defined(__SUNPRO_C) || defined(__IS_SUNPRO_C) #ifdef __sparcv9 #define __SUNOS5_SPARC_CC64 #else #define __SUNOS5_SPARC_CC32 #endif #define __JS_ARCH_DEFINED #endif #endif /* __sparc */ #if defined(__x86) #ifdef __GNUC__ #ifdef __amd64 #define __SUNOS5_X86_GCC64 #else #define __SUNOS5_X86_GCC32 #endif #define __JS_ARCH_DEFINED #endif #if defined(__SUNPRO_C) || defined(__IS_SUNPRO_C) #ifdef __amd64 #define __SUNOS5_X86_CC64 #else #define __SUNOS5_X86_CC32 #endif #define __JS_ARCH_DEFINED #endif #endif /* __x86 */ #endif /* SunOS 5 */ /* * HP-UX specific defines */ #if defined(__hpux) #if defined(__hppa) #ifdef __GNUC__ #ifdef __LP64__ /* This may be wrong! */ #define __HPUX_HPPA_GCC64 #else #define __HPUX_HPPA_GCC32 #endif #define __JS_ARCH_DEFINED #endif #if !defined(__GNUC__) #ifdef __LP64__ #define __HPUX_HPPA_CC64 #else #define __HPUX_HPPA_CC32 #endif #define __JS_ARCH_DEFINED #endif #endif /* __hppa */ #endif /* HP-UX */ /* * Linux specific defines */ #if defined(__linux) #if defined(__arm__) #ifdef __GNUC__ #ifdef __ARM_ARCH_5TE__ #define __LINUX_ARMV5TEJL_GCC32 #define __JS_ARCH_DEFINED #endif #ifndef __JS_ARCH_DEFINED #ifdef __ARM_ARCH_6__ #define __LINUX_ARMV6L_GCC32 #define __JS_ARCH_DEFINED #endif #endif #ifndef __JS_ARCH_DEFINED #ifdef __ARM_ARCH_5__ #define __LINUX_ARMV5L_GCC32 #define __JS_ARCH_DEFINED #endif #endif #endif /* __GNUC__ */ #endif /* __arm__ */ #if defined(__i386__) || defined(i386) #ifdef __GNUC__ #define __LINUX_I386_GCC32 #define __JS_ARCH_DEFINED #endif #endif /* __i386__ */ #if defined(__amd64__) || defined(__amd64) #ifdef __GNUC__ #define __LINUX_amd64_GCC64 #define __JS_ARCH_DEFINED #endif #endif /* __amd64__ */ #endif /* Linux */ /* * MS-WIN specific defines * * cl defines one of: * _M_ALPHA * _M_IX86 * _M_AMD64 * _M_M68K * _M_PPC PPC in general * _M_MPPC Power Macintosh * _M_MRX000 Mips * _M_IA64 Itanium */ #if defined(_MSC_VER) && (defined(_X86_) || defined(_M_IX86)) #define __MSWIN_X86_CL32 #define __JS_ARCH_DEFINED #endif #if defined(__CYGWIN32__) || defined(__CYGWIN__) #define __CYGWIN_X86_GCC #define __JS_ARCH_DEFINED #endif #endif /* _SCHILY_ARCHDEFS_H */