Adding Leon processor to the SPARC list of processors

Eric Botcazou ebotcazou@adacore.com
Tue Nov 23 20:35:00 GMT 2010


> Following the recent comments by Eric, the patch now sketches the
> following setup:
>
> If multi-lib is wanted:
>  configure --with-cpu=leon ... :         creates multilib-dir soft|v8
> combinations using [-msoft-float|-mcpu=sparcleonv8] (MULTILIB_OPTIONS =
> msoft-float mcpu=sparcleonv8)
>
> If Single-lib is wanted:
>  configure --with-cpu=sparcleonv7 --with-float=soft --disable-multilib ... 
> : (v7 | soft | no-multilib) configure --with-cpu=sparcleonv8
> --with-float=soft --disable-multilib ...  : (v8 | soft | no-multilib)
> configure --with-cpu=sparcleonv7 --with-float=hard --disable-multilib ... 
> : (v7 | hard | no-multilib) configure --with-cpu=sparcleonv8
> --with-float=hard --disable-multilib ...  : (v8 | hard | no-multilib)
>
> Using --with-cpu=leon|sparcleonv7|sparcleonv8 the the sparc_cpu is switched
> to PROCESSOR_LEON.

I'm mostly OK, but I don't think we need sparcleonv7 or sparcleonv8.  Attached 
is another proposal, which:

 1. Adds -mtune/--with-tune=leon for all SPARC targets.  In particular, this 
mean that if you configure --target=sparc-{elf,rtems} --with-tune=leon, you 
get a multilib-ed compiler defaulting to V7/FPU and -mtune=leon, with V8 and 
NO-FPU libraries.

 2. Adds new targets sparc-leon-{elf,linux}: multilib-ed compiler defaulting
to V8/FPU and -mtune=leon, with V7 and NO-FPU libraries.

 3. Adds new targets sparc-leon3-{elf,linux}: multilib-ed compiler defaulting 
to V8/FPU and -mtune=leon, with NO-FPU libraries.

Singlelib-ed compilers are available through --disable-multilib and
  --with=cpu={v7,v8} --with-float={soft,hard} --with-tune=leon
for sparc-{elf,rtems} or just
  --with=cpu={v7,v8} --with-float={soft,hard}
for sparc-leon*-*.

The rationale is that --with-cpu shouldn't change the set of multilibs, it is 
only the configure-time equivalent of -mcpu.  This set of multilibs should 
only depend on the target and the presence of --disable-multilib.


	* config.gcc (sparc-*-elf*): Deal with sparc-leon specifically.
	(sparc-*-linux*): Likewise.
	(sparc*-*-*): Remove obsolete sparc86x setting.
	(sparc-leon*): Default to --with-cpu=v8 and --with-tune=leon.
	* doc/invoke.texi (SPARC Options): Document -mcpu/-mtune=leon.
	* config/sparc/sparc.h (TARGET_CPU_leon): Define.
	(TARGET_CPU_sparc86x): Delete.
	(TARGET_CPU_cypress): Define as alias to TARGET_CPU_v7.
	(TARGET_CPU_f930): Define as alias to TARGET_CPU_sparclite.
	(TARGET_CPU_f934): Likewise.
	(TARGET_CPU_tsc701): Define as alias to TARGET_CPU_sparclet.
	(CPP_CPU_SPEC): Add entry for -mcpu=leon.
	(enum processor_type): Add PROCESSOR_LEON.
	* config/sparc/sparc.c (leon_costs): New cost array.
	(sparc_option_override): Add entry for TARGET_CPU_leon and -mcpu=leon.
	Initialize cost array to leon_costs if -mtune=leon.
	* config/sparc/sparc.md (cpu attribute): Add leon.
	Include leon.md scheduling description.
	* config/sparc/leon.md: New file.
	* config/sparc/t-elf: Do not assemble Solaris startup files.
	* config/sparc/t-leon: New file.
	* config/sparc/t-leon3: Likewise.


-- 
Eric Botcazou
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sparc-leon2.diff
Type: text/x-diff
Size: 18185 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20101123/75c50ebd/attachment.bin>


More information about the Gcc mailing list