Re: [PATCH 4.18] MIPS: memset: Fix CPU_DADDI_WORKAROUNDS `small_fixup' regression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 16, 2018 at 10:51:10PM +0100, Maciej W. Rozycki wrote:
> Fix a commit 8a8158c85e1e ("MIPS: memset.S: EVA & fault support for 
> small_memset") regression and remove assembly warnings:
> 
> arch/mips/lib/memset.S: Assembler messages:
> arch/mips/lib/memset.S:243: Warning: Macro instruction expanded into multiple instructions in a branch delay slot
> 
> triggering with the CPU_DADDI_WORKAROUNDS option set and this code:
> 
> 	PTR_SUBU	a2, t1, a0
> 	jr		ra
> 	 PTR_ADDIU	a2, 1
> 
> This is because with that option in place the DADDIU instruction, which 
> the PTR_ADDIU CPP macro expands to, becomes a GAS macro, which in turn 
> expands to an LI/DADDU (or actually ADDIU/DADDU) sequence:
> 
>  13c:	01a4302f 	dsubu	a2,t1,a0
>  140:	03e00008 	jr	ra
>  144:	24010001 	li	at,1
>  148:	00c1302d 	daddu	a2,a2,at
> 	...
> 
> Correct this by switching off the `noreorder' assembly mode and letting 
> GAS schedule this jump's delay slot, as there is nothing special about 
> it that would require manual scheduling.  With this change in place 
> correct code is produced:
> 
>  13c:	01a4302f 	dsubu	a2,t1,a0
>  140:	24010001 	li	at,1
>  144:	03e00008 	jr	ra
>  148:	00c1302d 	daddu	a2,a2,at
> 	...
> 
> Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx>
> Fixes: 8a8158c85e1e ("MIPS: memset.S: EVA & fault support for small_memset")
> Cc: stable@xxxxxxxxxxxxxxx # 4.17+
> ---
> Hi,
> 
>  This is a version (one I originally made actually) of commit 148b9aba99e0 
> for 4.18-stable and before.  No functional changes.  Please apply.

Now queued up, thanks.

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux