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