From patchwork Sun May 21 13:15:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 765090 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wW2S837DBz9ryr for ; Sun, 21 May 2017 23:19:04 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="h5WRQXeG"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3wW2S81vxYzDqb0 for ; Sun, 21 May 2017 23:19:04 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="h5WRQXeG"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from mail-pf0-x241.google.com (mail-pf0-x241.google.com [IPv6:2607:f8b0:400e:c00::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3wW2Nw2nhjzDqLb for ; Sun, 21 May 2017 23:16:16 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="h5WRQXeG"; dkim-atps=neutral Received: by mail-pf0-x241.google.com with SMTP id w69so14494040pfk.1 for ; Sun, 21 May 2017 06:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mOyTaYFG5aOC/wWhsuv0RF8f25uazzr5tqwonlfyhhE=; b=h5WRQXeGomJJQm3Lmfmt0vybf58s4avk00dbe4h3rc3Risc/bNAcDXqf5FY0Or0vO2 8MJHe6Uv5q7epw6VilwLQuAjyLzn8J/Pe30MRgE/7wbvMKXHAt1fQRmJBKNaisaMtLjA E8qfLIG9O4EVpdRFuksc/pjhiooAXMZDpdfsNt6ECbUGFs6mLLfcvd7mXHv3mhWa8sd0 r92JhQb/eBIKjecnIArl8aTheZ0jxVb9Z8UwZxtQu/k8U2Iqt8qSSLp2eOzIX+DJ2IB2 cUrsUnlCo414E9xi4EFF35heq0PuZUNiD6krTq+Tb79mr5PXpb0eMG9yZdcFpwpxPQP/ iRig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mOyTaYFG5aOC/wWhsuv0RF8f25uazzr5tqwonlfyhhE=; b=MFfPYcsE548uVCpPV3n7VABhnGRgTnvJ6lBQ7BBG/cOPJPuxb9QB6S2JUGU7HWbB1T sqLCMrpuaaqVaQeddYSyz0Xqiy7ZmfREARwZsa5DaXD2HW7VROfANMJizfhSAYX7Bkzg nGxSUFk3xRyvSG7FaHPbUmbxi4XfBignUZIbCIqd2AIrDtYwce+DlMmFetE0YbKS7lYz LzdvuSNpYoq8zuzPKpVm4OyxWuLPFY1B8vu0wy1g2yT8mNIxIm75NhlQfPtcGyrEVtOO LgprXm/s9JQ6hHne/WNDlHw6xPEwFWtIf70v7rKAY8EpObRgtJxmY/n6LVgGbgdFDNQ4 8LLw== X-Gm-Message-State: AODbwcBE2hrBZq2KJMCCgzY2xuN0rffBy9YMhxTWeNNFe6G+E/6qT89Y vyWNUG50D21gyg== X-Received: by 10.99.156.2 with SMTP id f2mr19911829pge.65.1495372574070; Sun, 21 May 2017 06:16:14 -0700 (PDT) Received: from roar.ozlabs.ibm.com (149.45.218.139.dynamic.dsl.dv.iprimus.net.au. [139.218.45.149]) by smtp.gmail.com with ESMTPSA id x80sm26285428pff.105.2017.05.21.06.16.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 May 2017 06:16:13 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH 1/9] powerpc/64s: slb_allocate_realmode() preserve r3 Date: Sun, 21 May 2017 23:15:42 +1000 Message-Id: <20170521131550.25813-2-npiggin@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170521131550.25813-1-npiggin@gmail.com> References: <20170521131550.25813-1-npiggin@gmail.com> X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" One fewer registers clobbered by this function means the SLB miss handler can save one fewer. Signed-off-by: Nicholas Piggin --- arch/powerpc/mm/slb_low.S | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/mm/slb_low.S b/arch/powerpc/mm/slb_low.S index 1519617aab36..9869b44a04dc 100644 --- a/arch/powerpc/mm/slb_low.S +++ b/arch/powerpc/mm/slb_low.S @@ -70,6 +70,7 @@ ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_68_BIT_VA) * Create an SLB entry for the given EA (user or kernel). * r3 = faulting address, r13 = PACA * r9, r10, r11 are clobbered by this function + * r3 is preserved. * No other registers are examined or changed. */ _GLOBAL(slb_allocate_realmode) @@ -235,6 +236,9 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_1T_SEGMENT) * dont have any LRU information to help us choose a slot. */ + mr r9,r3 + + /* slb_finish_load_1T continues here. r9=EA with non-ESID bits clear */ 7: ld r10,PACASTABRR(r13) addi r10,r10,1 /* This gets soft patched on boot. */ @@ -249,10 +253,10 @@ slb_compare_rr_to_size: std r10,PACASTABRR(r13) 3: - rldimi r3,r10,0,36 /* r3= EA[0:35] | entry */ - oris r10,r3,SLB_ESID_V@h /* r3 |= SLB_ESID_V */ + rldimi r9,r10,0,36 /* r9 = EA[0:35] | entry */ + oris r10,r9,SLB_ESID_V@h /* r10 = r9 | SLB_ESID_V */ - /* r3 = ESID data, r11 = VSID data */ + /* r9 = ESID data, r11 = VSID data */ /* * No need for an isync before or after this slbmte. The exception @@ -265,21 +269,21 @@ slb_compare_rr_to_size: bgelr cr7 /* Update the slb cache */ - lhz r3,PACASLBCACHEPTR(r13) /* offset = paca->slb_cache_ptr */ - cmpldi r3,SLB_CACHE_ENTRIES + lhz r9,PACASLBCACHEPTR(r13) /* offset = paca->slb_cache_ptr */ + cmpldi r9,SLB_CACHE_ENTRIES bge 1f /* still room in the slb cache */ - sldi r11,r3,2 /* r11 = offset * sizeof(u32) */ + sldi r11,r9,2 /* r11 = offset * sizeof(u32) */ srdi r10,r10,28 /* get the 36 bits of the ESID */ add r11,r11,r13 /* r11 = (u32 *)paca + offset */ stw r10,PACASLBCACHE(r11) /* paca->slb_cache[offset] = esid */ - addi r3,r3,1 /* offset++ */ + addi r9,r9,1 /* offset++ */ b 2f 1: /* offset >= SLB_CACHE_ENTRIES */ - li r3,SLB_CACHE_ENTRIES+1 + li r9,SLB_CACHE_ENTRIES+1 2: - sth r3,PACASLBCACHEPTR(r13) /* paca->slb_cache_ptr = offset */ + sth r9,PACASLBCACHEPTR(r13) /* paca->slb_cache_ptr = offset */ crclr 4*cr0+eq /* set result to "success" */ blr @@ -301,7 +305,7 @@ slb_compare_rr_to_size: rldimi r11,r10,SLB_VSID_SSIZE_SHIFT,0 /* insert segment size */ /* r3 = EA, r11 = VSID data */ - clrrdi r3,r3,SID_SHIFT_1T /* clear out non-ESID bits */ + clrrdi r9,r3,SID_SHIFT_1T /* clear out non-ESID bits */ b 7b