blob: e081a265f4227475d17fef0d53cf07f7e9ffb6a3 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Maciej W. Rozycki09abbcf2007-09-17 17:11:07 +01002 * Copyright (C) 2004, 2007 Maciej W. Rozycki
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 */
8#ifndef _ASM_COMPILER_H
9#define _ASM_COMPILER_H
10
11#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
Ralf Baechlead1d77a2008-05-01 15:28:53 +010012#define GCC_IMM_ASM() "n"
Linus Torvalds1da177e2005-04-16 15:20:36 -070013#define GCC_REG_ACCUM "$0"
14#else
Ralf Baechlead1d77a2008-05-01 15:28:53 +010015#define GCC_IMM_ASM() "rn"
Linus Torvalds1da177e2005-04-16 15:20:36 -070016#define GCC_REG_ACCUM "accum"
17#endif
18
Markos Chandras123e4b32014-12-19 12:04:46 +000019#ifdef CONFIG_CPU_MIPSR6
20/* All MIPS R6 toolchains support the ZC constrain */
21#define GCC_OFF_SMALL_ASM() "ZC"
22#else
Maciej W. Rozyckib0984c42014-11-15 22:08:48 +000023#ifndef CONFIG_CPU_MICROMIPS
Markos Chandras94bfb752015-01-26 12:44:11 +000024#define GCC_OFF_SMALL_ASM() "R"
Maciej W. Rozyckib0984c42014-11-15 22:08:48 +000025#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)
Markos Chandras94bfb752015-01-26 12:44:11 +000026#define GCC_OFF_SMALL_ASM() "ZC"
Maciej W. Rozyckib0984c42014-11-15 22:08:48 +000027#else
28#error "microMIPS compilation unsupported with GCC older than 4.9"
Markos Chandras123e4b32014-12-19 12:04:46 +000029#endif /* CONFIG_CPU_MICROMIPS */
30#endif /* CONFIG_CPU_MIPSR6 */
Maciej W. Rozyckib0984c42014-11-15 22:08:48 +000031
Markos Chandrasbe513692014-11-18 15:02:32 +000032#ifdef CONFIG_CPU_MIPSR6
33#define MIPS_ISA_LEVEL "mips64r6"
34#define MIPS_ISA_ARCH_LEVEL MIPS_ISA_LEVEL
35#define MIPS_ISA_LEVEL_RAW mips64r6
36#define MIPS_ISA_ARCH_LEVEL_RAW MIPS_ISA_LEVEL_RAW
37#else
38/* MIPS64 is a superset of MIPS32 */
39#define MIPS_ISA_LEVEL "mips64r2"
40#define MIPS_ISA_ARCH_LEVEL "arch=r4000"
41#define MIPS_ISA_LEVEL_RAW mips64r2
42#define MIPS_ISA_ARCH_LEVEL_RAW MIPS_ISA_LEVEL_RAW
43#endif /* CONFIG_CPU_MIPSR6 */
44
Linus Torvalds1da177e2005-04-16 15:20:36 -070045#endif /* _ASM_COMPILER_H */