This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ARM patches applied
- To: Nick Clifton <nickc at cygnus dot com>
- Subject: Re: ARM patches applied
- From: Richard Earnshaw <rearnsha at arm dot com>
- Date: Tue, 23 Feb 1999 12:05:16 +0000
- Cc: egcs-patches at cygnus dot com
- Cc: richard dot earnshaw at arm dot com
- Organization: ARM Ltd.
- Reply-To: richard dot earnshaw at arm dot com
Nick,
Sorry, but I think some of this is incomplete or just plain wrong.
>
> 1999-02-22 Nick Clifton <nickc@cygnus.com>
>
> * config/arm/arm.h: Add TARGET_CPU_strongarm1100.
> Add -mno-sched command line switch to disable scheduling of
> instructions into the function's prologue.
> (enum processor_type): Remove.
> (TARGET_OPTIONS): Add "fpe=" option to match documentation.
> (struct arm_cpu_select): Replace 'set_tune_p' and 'set_arch_p'
> fields with 'processors' field.
> (CONDITIONAL_REGISTER_USAGE): Allow r10 to be used if stack
> checking is not enabled.
RISCiX configurations must not use r10 at any time. How does this
interact with use of r10 as the PIC register when stack checking is off.
> (RETURN_IN_MEMORY): Always call arm_return_in_memory.
Does this maintain binary compatibility on NetBSD?
>
> * config/arm/arm.c: (arm_cpu): Remove.
> (tune_flags): Remove.
> (arm_is_strong): New variable: true iff the target processor is a
> StrongARM.
What about arm8/arm9 support. These also have load scheduling.
> (arm_is_6_or_7): New variable: true iff the target processor is an
> ARM6 or and ARM7.
> (arm_select): Fields reorganised.
> (struct processors): processor_type field removed.
> (all_procs): Remove.
> (all_cores): New array: Definitions of all known ARM cpu cores.
> (all_architectures): New array: Definitions of all known ARM
> architectures.
> (streq): New macro.
> (FL_SCHED): New processor flag: processor required load
> scheduling.
> (FL_STRONG): New processor flag: processor is a StrongARM.
Likewise.
> (arm_override_options): Reorganised to make code clearer.
> (use_return_insn): Test for "not (TARGET_APCS and
> frame_pointer_needed)".
> (arm_return_in_memory): Improve handling of structures.
Is this backwards compatible?
>
> * config/arm/arm.md: Remove "cpu" attribute. Replace with
> "is_strongarm" and "is_arm_6_or_7" attributes.
ARM8/ARM9?
> (zero_extendhisi2): Check for TARGET_SHORT_BY_BYTES before
> arm_arch4.
> (extendhisi2): Check for TARGET_SHORT_BY_BYTES before arm_arch4.
This is just wrong. TARGET_SHORT_BY_BYTES means don't use ldr to access a
short because the MMU will trap if it isn't aligned. On a machine with
ldrh this doesn't apply so there is no need to synthesise a short access
with byte loads.