From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932294AbcIBOTb (ORCPT ); Fri, 2 Sep 2016 10:19:31 -0400 Received: from mailapp01.imgtec.com ([195.59.15.196]:30523 "EHLO mailapp01.imgtec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932213AbcIBOTa (ORCPT ); Fri, 2 Sep 2016 10:19:30 -0400 From: Paul Burton To: CC: Paul Burton , "Maciej W. Rozycki" , Ralf Baechle , Subject: [PATCH] MIPS: dec: Avoid la pseudo-instruction in delay slots Date: Fri, 2 Sep 2016 15:19:01 +0100 Message-ID: <20160902141902.2478-1-paul.burton@imgtec.com> X-Mailer: git-send-email 2.9.3 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.100.200.40] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When expanding the la or dla pseudo-instruction in a delay slot the GNU assembler will complain should the pseudo-instruction expand to multiple actual instructions, since only the first of them will be in the delay slot leading to the pseudo-instruction being only partially executed if the branch is taken. Use of PTR_LA in the dec int-handler.S leads to such warnings: arch/mips/dec/int-handler.S: Assembler messages: arch/mips/dec/int-handler.S:149: Warning: macro instruction expanded into multiple instructions in a branch delay slot arch/mips/dec/int-handler.S:198: Warning: macro instruction expanded into multiple instructions in a branch delay slot Avoid this by placing nops in the delay slots of the affected branches, leading to the PTR_LA macros being placed after the branches & their delay slots. Although the nop isn't strictly needed, it's an insignificant cost & satisfies the assembler easily with more readable code than the possible alternative of manually expanding the la/dla pseudo-instructions & placing the appropriate first instruction into the delay slots. Signed-off-by: Paul Burton --- arch/mips/dec/int-handler.S | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S index d7b9918..54ddca1 100644 --- a/arch/mips/dec/int-handler.S +++ b/arch/mips/dec/int-handler.S @@ -137,16 +137,16 @@ and t0,t1 # isolate allowed ones beqz t0,spurious - #ifdef CONFIG_32BIT and t2,t0 bnez t2,fpu # handle FPU immediately #endif + nop /* * Find irq with highest priority */ - PTR_LA t1,cpu_mask_nr_tbl + PTR_LA t1,cpu_mask_nr_tbl 1: lw t2,(t1) nop and t2,t0 @@ -191,11 +191,12 @@ 1: and t0,t1 # mask out allowed ones beqz t0,spurious + nop /* * Find irq with highest priority */ - PTR_LA t1,asic_mask_nr_tbl + PTR_LA t1,asic_mask_nr_tbl 2: lw t2,(t1) nop and t2,t0 -- 2.9.3