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