[1/2] sparc32,leon: Build with -mcpu=leon3 for SPARC_LEON

Message ID 1510668223-18484-2-git-send-email-andreas@gaisler.com
State Changes Requested
Delegated to: David Miller
Headers show
Series
  • sparc32,leon: Allow and use CAS for atomic operations for LEON
Related show

Commit Message

Andreas Larsson Nov. 14, 2017, 2:03 p.m.
Apart from using LEON3 instruction timing it allows for usage of the
CASA instruction.

Signed-off-by: Andreas Larsson <andreas@gaisler.com>
---
 arch/sparc/Makefile | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

David Miller Nov. 29, 2017, 6:38 p.m. | #1
From: Andreas Larsson <andreas@gaisler.com>
Date: Tue, 14 Nov 2017 15:03:42 +0100

> Apart from using LEON3 instruction timing it allows for usage of the
> CASA instruction.
> 
> Signed-off-by: Andreas Larsson <andreas@gaisler.com>

Up until this point the LEON kconfig option is largely passive.

All of the sparc_cpu_type logic drives what parts of the kernel are
used based upon the run-time detected cpu type.

But with this change, it completely breaks the 32-bit sparc kernel
on any non-Leon processor.

I wish you would reconsider this approach, and instead do hardcoded
assembler instruction opcodes to use "casa" in assembler, and run
time detect CAS support in the 32-bit cpu.

Thank you.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
index 8496a07..673ee73 100644
--- a/arch/sparc/Makefile
+++ b/arch/sparc/Makefile
@@ -24,14 +24,20 @@  LDFLAGS        := -m elf32_sparc
 export BITS    := 32
 UTS_MACHINE    := sparc
 
+ifeq ($(CONFIG_SPARC_LEON),y)
+SPARC_MCPU=leon3
+else
+SPARC_MCPU=v8
+endif
+
 # We are adding -Wa,-Av8 to KBUILD_CFLAGS to deal with a specs bug in some
 # versions of gcc.  Some gcc versions won't pass -Av8 to binutils when you
 # give -mcpu=v8.  This silently worked with older bintutils versions but
 # does not any more.
-KBUILD_CFLAGS  += -m32 -mcpu=v8 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
+KBUILD_CFLAGS  += -m32 -mcpu=$(SPARC_MCPU) -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
 KBUILD_CFLAGS  += -Wa,-Av8
 
-KBUILD_AFLAGS  += -m32 -Wa,-Av8
+KBUILD_AFLAGS  += -m32 -mcpu=$(SPARC_MCPU) -Wa,-Av8
 
 else
 #####