From patchwork Fri Nov 20 10:21:11 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joakim Tjernlund X-Patchwork-Id: 38910 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from bilbo.ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 0DB9EB8475 for ; Fri, 20 Nov 2009 21:23:22 +1100 (EST) Received: by ozlabs.org (Postfix) id 059B2100885; Fri, 20 Nov 2009 21:21:39 +1100 (EST) Delivered-To: linuxppc-dev@ozlabs.org Received: from gw1.transmode.se (gw1.transmode.se [213.115.205.20]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 8B1B91008AA for ; Fri, 20 Nov 2009 21:21:38 +1100 (EST) Received: from sesr04.transmode.se (sesr04.transmode.se [192.168.201.15]) by gw1.transmode.se (Postfix) with ESMTP id 0DCFE650008; Fri, 20 Nov 2009 11:21:35 +0100 (CET) Received: from gentoo-jocke.transmode.se ([192.168.1.15]) by sesr04.transmode.se (Lotus Domino Release 8.5 HF964) with ESMTP id 2009112011213513-44042 ; Fri, 20 Nov 2009 11:21:35 +0100 Received: from gentoo-jocke.transmode.se (gentoo-jocke.transmode.se [127.0.0.1]) by gentoo-jocke.transmode.se (8.14.0/8.14.0) with ESMTP id nAKALYJk003255; Fri, 20 Nov 2009 11:21:34 +0100 Received: (from jocke@localhost) by gentoo-jocke.transmode.se (8.14.0/8.14.0/Submit) id nAKALYXP003254; Fri, 20 Nov 2009 11:21:34 +0100 From: Joakim Tjernlund To: Scott Wood , "linuxppc-dev@ozlabs.org" , Rex Feany Subject: [PATCH 10/10] 8xx: DTLB Miss cleanup Date: Fri, 20 Nov 2009 11:21:11 +0100 Message-Id: <1258712471-3104-11-git-send-email-Joakim.Tjernlund@transmode.se> X-Mailer: git-send-email 1.6.4.4 In-Reply-To: <1258712471-3104-10-git-send-email-Joakim.Tjernlund@transmode.se> References: <1258712471-3104-1-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-2-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-3-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-4-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-5-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-6-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-7-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-8-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-9-git-send-email-Joakim.Tjernlund@transmode.se> <1258712471-3104-10-git-send-email-Joakim.Tjernlund@transmode.se> X-MIMETrack: Itemize by SMTP Server on sesr04/Transmode(Release 8.5 HF964|October 21, 2009) at 2009-11-20 11:21:35, Serialize by Router on sesr04/Transmode(Release 8.5 HF964|October 21, 2009) at 2009-11-20 11:21:35, Serialize complete at 2009-11-20 11:21:35 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Use symbolic constant for PRESENT and avoid branching. Signed-off-by: Joakim Tjernlund --- arch/powerpc/kernel/head_8xx.S | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 36af721..ce327c5 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S @@ -438,15 +438,20 @@ DataStoreTLBMiss: * r11 = ((r10 & PRESENT) & ((r10 & ACCESSED) >> 5)); * r10 = (r10 & ~PRESENT) | r11; */ - rlwinm r11, r10, 32-5, 31, 31 + rlwinm r11, r10, 32-5, _PAGE_PRESENT and r11, r11, r10 - rlwimi r10, r11, 0, 31, 31 + rlwimi r10, r11, 0, _PAGE_PRESENT /* Honour kernel RO, User NA */ - andi. r11, r10, _PAGE_USER | _PAGE_RW - bne- cr0, 5f - ori r10,r10, 0x200 /* Extended encoding, bit 22 */ -5: xori r10, r10, _PAGE_RW /* invert RW bit */ + /* 0x200 == Extended encoding, bit 22 */ + /* r11 = (r10 & _PAGE_USER) >> 2 */ + rlwinm r11, r10, 32-2, 0x200 + or r10, r11, r10 + /* r11 = (r10 & _PAGE_RW) >> 1 */ + rlwinm r11, r10, 32-1, 0x200 + or r10, r11, r10 + /* invert RW and 0x200 bits */ + xori r10, r10, _PAGE_RW | 0x200 /* The Linux PTE won't go exactly into the MMU TLB. * Software indicator bits 22 and 28 must be clear.