To content | To menu | To search

GCC defines for m68k platform

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.