RE: [PATCH]Microblaze: Fixed missing save of r18 in fast_interrupt.

2020-04-05 Thread Nagaraju Mekala
> -Original Message-
> From: Jeff Law 
> Sent: Sunday, April 5, 2020 9:45 PM
> To: Michael Eager ; Nagaraju Mekala
> ; gcc-patches@gcc.gnu.org
> Cc: Sadanand Mutyala ; klauspeter...@gmail.com
> Subject: Re: [PATCH]Microblaze: Fixed missing save of r18 in fast_interrupt.
> 
> On Sat, 2020-04-04 at 11:16 -0700, Michael Eager wrote:
> > OK to apply.
Thank you.

> > On 4/4/20 2:18 AM, Nagaraju Mekala wrote:
> > > Hello All,
> > >
> > > Fixed missing save of r18 in fast_interrupt.
> > > Register 18 is used as a clobber register, and must be stored when
> > > entering a fast_interrupt. Before this fix, register 18 was only
> > > saved if it was used directly in the interrupt function.
> > >
> > > However, if the fast_interrupt function called a function that used
> > > r18, the register would not be saved, and thus be mangled upon
> > > returning from the interrupt.
> > >
> > > Changelog
> > >  2020-04-04  Klaus Petersen 
> > >   * gcc/config/microblaze/microblaze.c: Check for fast_interrupt 
> > > in
> > >  microblaze_must_save_register.
> > >
> > >  Signed-off-by: Klaus Petersen 
> > >  Signed-off-by :Nagaraju Mekala 
> Fixed up the ChangeLog and trailing whitespace nits and pushed to the trunk.
Thank you. I will take care of it from next time.
- Nagaraju
> THanks,
> jeff
> 



Re: [PATCH]Microblaze: Fixed missing save of r18 in fast_interrupt.

2020-04-05 Thread Jeff Law via Gcc-patches
On Sat, 2020-04-04 at 11:16 -0700, Michael Eager wrote:
> OK to apply.
> 
> On 4/4/20 2:18 AM, Nagaraju Mekala wrote:
> > Hello All,
> > 
> > Fixed missing save of r18 in fast_interrupt.
> > Register 18 is used as a clobber register, and must be stored when entering 
> > a
> > fast_interrupt. Before this fix, register 18 was only saved if it was used
> > directly in the interrupt function.
> >  
> > However, if the fast_interrupt function called a function that used r18, the
> > register would not be saved, and thus be mangled upon returning from the
> > interrupt.
> >  
> > Changelog
> >  2020-04-04  Klaus Petersen 
> >   * gcc/config/microblaze/microblaze.c: Check for fast_interrupt in
> >  microblaze_must_save_register.
> > 
> >  Signed-off-by: Klaus Petersen 
> >  Signed-off-by :Nagaraju Mekala 
Fixed up the ChangeLog and trailing whitespace nits and pushed to the trunk.

THanks,
jeff




Re: [PATCH]Microblaze: Fixed missing save of r18 in fast_interrupt.

2020-04-04 Thread Michael Eager

OK to apply.

On 4/4/20 2:18 AM, Nagaraju Mekala wrote:

Hello All,

Fixed missing save of r18 in fast_interrupt.
Register 18 is used as a clobber register, and must be stored when entering a 
fast_interrupt. Before this fix, register 18 was only saved if it was used 
directly in the interrupt function.
 
However, if the fast_interrupt function called a function that used r18, the register would not be saved, and thus be mangled upon returning from the interrupt.
 
Changelog

 2020-04-04  Klaus Petersen 
  * gcc/config/microblaze/microblaze.c: Check for fast_interrupt in
 microblaze_must_save_register.

 Signed-off-by: Klaus Petersen 
 Signed-off-by :Nagaraju Mekala 

diff --git a/gcc/config/microblaze/microblaze.c 
b/gcc/config/microblaze/microblaze.c
index b4754b1..67e393d 100644
--- a/gcc/config/microblaze/microblaze.c
+++ b/gcc/config/microblaze/microblaze.c
@@ -2035,7 +2035,7 @@ microblaze_must_save_register (int regno)
  {
if (df_regs_ever_live_p (regno)
   || regno == MB_ABI_MSR_SAVE_REG
- || (interrupt_handler
+ || ((interrupt_handler || fast_interrupt)
&& (regno == MB_ABI_ASM_TEMP_REGNUM
   || regno == MB_ABI_EXCEPTION_RETURN_ADDR_REGNUM)))
 return 1;

Attached is the patch.

Thanks
Nagaraju



--
Michael Eagerea...@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306


[PATCH]Microblaze: Fixed missing save of r18 in fast_interrupt.

2020-04-04 Thread Nagaraju Mekala
Hello All,

Fixed missing save of r18 in fast_interrupt.
Register 18 is used as a clobber register, and must be stored when entering a 
fast_interrupt. Before this fix, register 18 was only saved if it was used 
directly in the interrupt function.

However, if the fast_interrupt function called a function that used r18, the 
register would not be saved, and thus be mangled upon returning from the 
interrupt.

Changelog
2020-04-04  Klaus Petersen 
 * gcc/config/microblaze/microblaze.c: Check for fast_interrupt in
microblaze_must_save_register.

Signed-off-by: Klaus Petersen 
Signed-off-by :Nagaraju Mekala 

diff --git a/gcc/config/microblaze/microblaze.c 
b/gcc/config/microblaze/microblaze.c
index b4754b1..67e393d 100644
--- a/gcc/config/microblaze/microblaze.c
+++ b/gcc/config/microblaze/microblaze.c
@@ -2035,7 +2035,7 @@ microblaze_must_save_register (int regno)
 {
   if (df_regs_ever_live_p (regno) 
  || regno == MB_ABI_MSR_SAVE_REG
- || (interrupt_handler
+ || ((interrupt_handler || fast_interrupt)   
   && (regno == MB_ABI_ASM_TEMP_REGNUM
  || regno == MB_ABI_EXCEPTION_RETURN_ADDR_REGNUM)))
return 1;

Attached is the patch.

Thanks
Nagaraju


0001-Patch-microblaze-Fixed-missing-save-of-r18-in-fast_i.patch
Description: 0001-Patch-microblaze-Fixed-missing-save-of-r18-in-fast_i.patch