1/* 2 * Copyright (C) 2004, 2007 Maciej W. Rozycki 3 * 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) 12#define GCC_IMM_ASM() "n" 13#define GCC_REG_ACCUM "$0" 14#else 15#define GCC_IMM_ASM() "rn" 16#define GCC_REG_ACCUM "accum" 17#endif 18 19#ifdef CONFIG_CPU_MIPSR6 20/* All MIPS R6 toolchains support the ZC constrain */ 21#define GCC_OFF_SMALL_ASM() "ZC" 22#else 23#ifndef CONFIG_CPU_MICROMIPS 24#define GCC_OFF_SMALL_ASM() "R" 25#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) 26#define GCC_OFF_SMALL_ASM() "ZC" 27#else 28#error "microMIPS compilation unsupported with GCC older than 4.9" 29#endif /* CONFIG_CPU_MICROMIPS */ 30#endif /* CONFIG_CPU_MIPSR6 */ 31 32#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 45#endif /* _ASM_COMPILER_H */ 46