Re: [PATCH] mips/loongson: unify compiler flags and load location for Loongson 2E and 2F
From: Andreas Barth <hidden>
Date: 2011-08-22 08:07:10
* Matt Turner (mattst88@gmail.com) [110822 02:20]:
On Sat, Aug 20, 2011 at 9:05 PM, Andreas Barth [off-list ref] wrote:quoted
diff --git a/arch/mips/loongson/Platform b/arch/mips/loongson/Platform index 29692e5..d6471a5 100644 --- a/arch/mips/loongson/Platform +++ b/arch/mips/loongson/Platform@@ -4,10 +4,8 @@# Only gcc >= 4.4 have Loongson specific support cflags-$(CONFIG_CPU_LOONGSON2) += -Wa,--trap -cflags-$(CONFIG_CPU_LOONGSON2E) += \ - $(call cc-option,-march=loongson2e,-march=r4600) -cflags-$(CONFIG_CPU_LOONGSON2F) += \ - $(call cc-option,-march=loongson2f,-march=r4600) +cflags-$(CONFIG_CPU_LOONGSON2) += \ + $(call cc-option,-march=r4600) # Enable the workarounds for Loongson2f ifdef CONFIG_CPU_LOONGSON2F_WORKAROUNDS ifeq ($(call as-option,-Wa$(comma)-mfix-loongson2f-nop,),)... but I don't understand this one. So, in the name of simplification, let's just remove the ability to compile with -march=loongson2{e,f}? What?
I want to build a kernel that works on both 2e and 2f. Such a kernel must not be built with 2e or 2f specific code (which are incompatible to each other).
Is there some case where a -march=loongson2e kernel won't work on a 2F system?
Yes. There are 2E opcodes removed in the 2F. See e.g. http://media.romanrm.ru/loongson/info/Loongson%202F%20Datasheet.pdf Implementing all the features described in the MIPSIII, Loongson 2E has some of custom instructions occupied the MIPS-reserved instruction slot. So in the 2F, these custom-tailored instruction opcodes need to remove to the user instruction slot (COP2 or Special2). (I could of course check if a kernel has such opcodes included. But I'm unhappy to use compiler instructions which might end in invalid code.
The commit message should explain this stuff.
Ok. Andi