GCC defines for m68k platform
By Patrice Mandin on Sunday, August 28 2011, 22:01 - General - Permalink
Here is a little summary about defines you can check in your C code when running on some m68k platform, and more precisely on Atari.
I choose the 4 standard targets: 68000, 68020 (no fpu), 68020-60 and coldfire. I simply compiled a helloworld.c program with the needed command line to dump the list of preprocessor options:
$ m68k-atari-mint-gcc -dM -E hello.c
68000 (default):
#define __m68k__ 1 /* gcc>=4 */ #define __mc68000__ 1 #define __mc68000 1 #define mc68000 1 #define __M68000__ 1 /* added by mint target, should be removed */
-m68020:
#define __m68k__ 1 /* gcc>=4 */ #define __mc68000__ 1 /* gcc>=4 */ #define __mc68000 1 /* gcc>=4 */ #define mc68000 1 /* gcc>=4 */ #define __mc68020__ 1 #define __mc68020 1 #define mc68020 1 #define __M68020__ 1 /* added by mint target, should be removed */
-m68020-60:
#define __m68k__ 1 /* gcc>=4 */ #define __mc68000 1 /* gcc>=4 */ #define __mc68000__ 1 /* gcc>=4 */ #define mc68000 1 /* gcc>=4 */ #define __mc68020 1 #define __mc68020__ 1 #define mc68020 1 #define __M68020__ 1 /* added by mint target, should be removed */ #define __mc68030 1 /* gcc>=4 */ #define __mc68030__ 1 /* gcc>=4 */ #define mc68030 1 /* gcc>=4 */ #define __mc68040 1 /* gcc>=4 */ #define __mc68040__ 1 /* gcc>=4 */ #define mc68040 1 /* gcc>=4 */ #define __mc68060 1 /* gcc>=4 */ #define __mc68060__ 1 /* gcc>=4 */ #define mc68060 1 /* gcc>=4 */ #define __HAVE_68881__ 1 #define __M68881__ 1
-mcpu=5475:
#define __m68k__ 1 #define __mc68000__ 1 #define __mc68000 1 #define mc68000 1 #define __M68000__ 1 /* added by mint target, should be removed */ #define __mcoldfire__ 1 #define __mcf5407__ 1 #define __mcf5400__ 1 #define __mcffpu__ 1 #define __mcfv4e__ 1 #define __mcf_cpu_5475 1 #define __mcf_family_5475 1 #define __mcfisab__ 1
The ones with the comments are added using the CPP_SPEC value in file gcc-<version>/gcc/config/m68k/mint.h when building GCC. As you can see, they are duplicate of default ones, so code that use it should be fixed, and usage of CPP_SPEC could simply be removed.
As you can see, the generic __m68k__ define was added since gcc 4.x, so you may need to add -D__m68k__=1 to your CFLAGS at configure stage (or in Makefile) if you use gcc 3.x or older to compile software that checks for it.