Hi Michael,

> -----Original Message-----
> From: Michael Eager [mailto:ea...@eagerm.com]
> Sent: Wednesday, 27 February 2013 4:12 am
> To: David Holsgrove
> Cc: gcc-patches@gcc.gnu.org; Michael Eager (ea...@eagercon.com); John
> Williams; Edgar E. Iglesias (edgar.igles...@gmail.com); Vinod Kathail; 
> Vidhumouli
> Hunsigida; Nagaraju Mekala; Tom Shui
> Subject: Re: [Patch, microblaze]: Added fast_interrupt controller
> 
> On 02/10/2013 10:39 PM, David Holsgrove wrote:
> > Added fast_interrupt controller
> >
> > Changelog
> >
> > 2013-02-11  Nagaraju Mekala <nmek...@xilinx.com>
> >
> >    * config/microblaze/microblaze-protos.h: microblaze_is_fast_interrupt.
> >    * config/microblaze/microblaze.c (microblaze_attribute_table): Add
> >       microblaze_is_fast_interrupt.
> >       (microblaze_fast_interrupt_function_p): New function.
> >       (microblaze_is_fast_interrupt check): New function.
> >       (microblaze_must_save_register): Account for fast_interrupt.
> >       (save_restore_insns): Likewise.
> >       (compute_frame_size): Likewise.
> >       (microblaze_globalize_label): Add FAST_INTERRUPT_NAME.
> >    * config/microblaze/microblaze.h: Define FAST_INTERRUPT_NAME as
> >       fast_interrupt.
> >    * config/microblaze/microblaze.md (movsi_status): Can be
> >       fast_interrupt
> >       (return): Add microblaze_is_fast_interrupt.
> >       (return_internal): Likewise.
> 
> +int
> +microblaze_is_fast_interrupt (void)
> +{
> +  return fast_interrupt;
> +}
> 
> +  if (fast_interrupt)
> +    {
> 
> Use wrapper functions consistently.  Either reference the flag everywhere
> or use the wrapper everywhere.

I've repurposed the existing 'microblaze_is_interrupt_handler' wrapper, (which 
was
only used in the machine description), to be 'microblaze_is_interrupt_variant' 
- true
if the function's attribute is either interrupt_handler or fast_interrupt.

> 
> +  if (interrupt_handler || fast_interrupt)
> 
> +  if (microblaze_is_interrupt_handler () || microblaze_is_fast_interrupt())
> 
> There are many places in the patch where both interrupt_handler and
> fast_interrupt
> are tested.  These can be eliminated by setting the interrupt_handler flag 
> when
> you see fast_interrupt and checking for the correct registers to be saved in
> microblaze_must_save_register().

I've used this microblaze_is_interrupt_variant wrapper throughout, checking
specifically for the interrupt_handler or fast_interrupt flag only where it was
necessary to handle them differently.

Please let me know if the patch attached is acceptable, or if you would prefer
I refactor all the existing interrupt_handler functionality to accommodate the
fast_interrupt.

Updated Changelog;

2013-03-05  David Holsgrove <david.holsgr...@xilinx.com>

  *  gcc/config/microblaze/microblaze-protos.h: Rename
     microblaze_is_interrupt_handler to microblaze_is_interrupt_variant.
  *  gcc/config/microblaze/microblaze.c (microblaze_attribute_table): Add
     fast_interrupt.
     (microblaze_fast_interrupt_function_p): New function.
     (microblaze_is_interrupt_handler): Rename to
     microblaze_is_interrupt_variant and add fast_interrupt check.
     (microblaze_must_save_register): Use microblaze_is_interrupt_variant.
     (save_restore_insns): Likewise.
     (compute_frame_size): Likewise.
     (microblaze_function_prologue): Add FAST_INTERRUPT_NAME.
     (microblaze_globalize_label): Likewise.
  *  gcc/config/microblaze/microblaze.h: Define FAST_INTERRUPT_NAME.
  *  gcc/config/microblaze/microblaze.md: Use wrapper
     microblaze_is_interrupt_variant.


thanks again for the reviews,
David

> 
> +  if ((interrupt_handler && !prologue) ||( fast_interrupt && !prologue) )
> 
> +  if ((interrupt_handler && prologue) || (fast_interrupt && prologue))
> 
> Refactor.  Fix spacing around parens.
> 
> --
> Michael Eager  ea...@eagercon.com
> 1960 Park Blvd., Palo Alto, CA 94306  650-325-8077



Attachment: 0002-Gcc-Added-fast_interrupt-controller.patch
Description: 0002-Gcc-Added-fast_interrupt-controller.patch

Reply via email to