WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [IA64] Clear the key part of cr.itir

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] Clear the key part of cr.itir
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Jul 2007 02:55:42 -0700
Delivery-date: Fri, 27 Jul 2007 02:53:43 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1183662944 21600
# Node ID f71dcdd9cddb96a209e91a905615f1768a9cece1
# Parent  34f285b57b87e94948f9af22df80888452d85dce
[IA64] Clear the key part of cr.itir

Clear the key part of cr.itir before itc.X in alt_dtlb_miss(), alt_itlb_miss()
and frametable_miss().  Preparation for using protection keys.

Signed-off-by: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
---
 xen/arch/ia64/xen/ivt.S         |    8 +++++++-
 xen/include/asm-ia64/xenkregs.h |   12 ++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff -r 34f285b57b87 -r f71dcdd9cddb xen/arch/ia64/xen/ivt.S
--- a/xen/arch/ia64/xen/ivt.S   Thu Jul 05 13:04:00 2007 -0600
+++ b/xen/arch/ia64/xen/ivt.S   Thu Jul 05 13:15:44 2007 -0600
@@ -154,14 +154,17 @@ late_alt_itlb_miss:
        movl r17=PAGE_KERNEL
        movl r19=(((1 << IA64_MAX_PHYS_BITS) - 1) & ~0xfff)
        ;;
+       mov r20=cr.itir
        extr.u r23=r21,IA64_PSR_CPL0_BIT,2      // extract psr.cpl
        and r19=r19,r16         // clear ed, reserved bits, and PTE ctrl bits
        extr.u r18=r16,XEN_VIRT_UC_BIT,1        // extract UC bit
        ;;
        cmp.ne p8,p0=r0,r23     // psr.cpl != 0?
        or r19=r17,r19          // insert PTE control bits into r19
+       dep r20=0,r20,IA64_ITIR_KEY,IA64_ITIR_KEY_LEN   // clear the key 
        ;;
        dep r19=r18,r19,4,1     // set bit 4 (uncached) if access to UC area.
+       mov cr.itir=r20         // set itir with cleared key
 (p8)   br.cond.spnt page_fault
        ;;
        itc.i r19               // insert the TLB entry
@@ -195,6 +198,7 @@ late_alt_dtlb_miss:
 (p9)   cmp.eq.or.andcm p6,p7=IA64_ISR_CODE_LFETCH,r22  // check isr.code field
 (p8)   br.cond.spnt page_fault
        ;;
+       mov r20=cr.itir
 #ifdef CONFIG_VIRTUAL_FRAME_TABLE
        shr r22=r16,56          // Test for the address of virtual frame_table
        ;;
@@ -204,11 +208,13 @@ late_alt_dtlb_miss:
        // If it is not a Xen address, handle it via page_fault.
        extr.u r22=r16,59,5
        ;;
+       dep r20=0,r20,IA64_ITIR_KEY,IA64_ITIR_KEY_LEN   // clear the key
        cmp.ne p8,p0=0x1e,r22
 (p8)   br.cond.sptk page_fault
        ;;
        dep r21=-1,r21,IA64_PSR_ED_BIT,1
        or r19=r19,r17          // insert PTE control bits into r19
+       mov cr.itir=r20         // set itir with cleared key
        ;;
        dep r19=r18,r19,4,1     // set bit 4 (uncached) if access to UC area
 (p6)   mov cr.ipsr=r21
@@ -242,7 +248,7 @@ GLOBAL_ENTRY(frametable_miss)
        shladd r24=r19,3,r24    // r24=&pte[pte_offset(addr)]
        ;;
 (p7)   ld8 r24=[r24]           // r24=pte[pte_offset(addr)]
-       mov r25=0x700|(PAGE_SHIFT<<2) // key=7
+       mov r25=(PAGE_SHIFT<<IA64_ITIR_PS)
 (p6)   br.spnt.few frametable_fault
        ;;
        mov cr.itir=r25
diff -r 34f285b57b87 -r f71dcdd9cddb xen/include/asm-ia64/xenkregs.h
--- a/xen/include/asm-ia64/xenkregs.h   Thu Jul 05 13:04:00 2007 -0600
+++ b/xen/include/asm-ia64/xenkregs.h   Thu Jul 05 13:15:44 2007 -0600
@@ -35,4 +35,16 @@
 #define IA64_PTA_VF     (__IA64_UL(1) << IA64_PTA_VF_BIT)
 #define IA64_PTA_BASE   (__IA64_UL(0) - ((__IA64_UL(1) << IA64_PTA_BASE_BIT)))
 
+/* Some cr.itir declarations. */
+#define        IA64_ITIR_PS            2
+#define        IA64_ITIR_PS_LEN        6
+#define IA64_ITIR_PS_MASK      (((__IA64_UL(1) << IA64_ITIR_PS_LEN) - 1) \
+                                                       << IA64_ITIR_PS)
+#define        IA64_ITIR_KEY           8
+#define        IA64_ITIR_KEY_LEN       24
+#define        IA64_ITIR_KEY_MASK      (((__IA64_UL(1) << IA64_ITIR_KEY_LEN) - 
1) \
+                                                       << IA64_ITIR_KEY)
+#define IA64_ITIR_PS_KEY(_ps, _key)    (((_ps) << IA64_ITIR_PS) | \
+                                       (((_key) << IA64_ITIR_KEY)))
+
 #endif /* _ASM_IA64_XENKREGS_H */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [IA64] Clear the key part of cr.itir, Xen patchbot-unstable <=