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

[Xen-changelog] [xen-unstable] [IA64] Consolidate DELIVER_PSR_CLR and DELIVER_PSR_SET definition.



# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1190906183 21600
# Node ID eae7b887e5acb4e087f4787be581985e21d0d40d
# Parent  764d33505b98f43c1c265a07a2b2ae3c252a5388
[IA64] Consolidate DELIVER_PSR_CLR and DELIVER_PSR_SET definition.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/xen/faults.c      |   12 ------------
 xen/arch/ia64/xen/hyperprivop.S |   24 ++++--------------------
 xen/include/asm-ia64/xenkregs.h |   16 ++++++++++++++++
 3 files changed, 20 insertions(+), 32 deletions(-)

diff -r 764d33505b98 -r eae7b887e5ac xen/arch/ia64/xen/faults.c
--- a/xen/arch/ia64/xen/faults.c        Thu Sep 27 09:08:26 2007 -0600
+++ b/xen/arch/ia64/xen/faults.c        Thu Sep 27 09:16:23 2007 -0600
@@ -38,18 +38,6 @@ extern int ia64_hyperprivop(unsigned lon
 extern int ia64_hyperprivop(unsigned long, REGS *);
 extern IA64FAULT ia64_hypercall(struct pt_regs *regs);
 
-// note IA64_PSR_PK removed from following, why is this necessary?
-#define        DELIVER_PSR_SET (IA64_PSR_IC | IA64_PSR_I | \
-                       IA64_PSR_DT | IA64_PSR_RT | \
-                       IA64_PSR_IT | IA64_PSR_BN)
-
-#define        DELIVER_PSR_CLR (IA64_PSR_AC | IA64_PSR_DFL | IA64_PSR_DFH |    
\
-                        IA64_PSR_SP | IA64_PSR_DI | IA64_PSR_SI |      \
-                        IA64_PSR_DB | IA64_PSR_LP | IA64_PSR_TB |      \
-                        IA64_PSR_CPL| IA64_PSR_MC | IA64_PSR_IS |      \
-                        IA64_PSR_ID | IA64_PSR_DA | IA64_PSR_DD |      \
-                        IA64_PSR_SS | IA64_PSR_RI | IA64_PSR_ED | IA64_PSR_IA)
-
 extern void do_ssc(unsigned long ssc, struct pt_regs *regs);
 
 // should never panic domain... if it does, stack may have been overrun
diff -r 764d33505b98 -r eae7b887e5ac xen/arch/ia64/xen/hyperprivop.S
--- a/xen/arch/ia64/xen/hyperprivop.S   Thu Sep 27 09:08:26 2007 -0600
+++ b/xen/arch/ia64/xen/hyperprivop.S   Thu Sep 27 09:16:23 2007 -0600
@@ -55,22 +55,6 @@
 // FIXME: This is defined in include/asm-ia64/hw_irq.h but this
 // doesn't appear to be include'able from assembly?
 #define IA64_TIMER_VECTOR 0xef
-
-// Should be included from common header file (also in process.c)
-//  NO PSR_CLR IS DIFFERENT! (CPL)
-#define IA64_PSR_CPL1  (__IA64_UL(1) << IA64_PSR_CPL1_BIT)
-#define IA64_PSR_CPL0  (__IA64_UL(1) << IA64_PSR_CPL0_BIT)
-// note IA64_PSR_PK removed from following, why is this necessary?
-#define        DELIVER_PSR_SET (IA64_PSR_IC | IA64_PSR_I | \
-                       IA64_PSR_DT | IA64_PSR_RT | \
-                       IA64_PSR_IT | IA64_PSR_BN)
-
-#define        DELIVER_PSR_CLR (IA64_PSR_AC | IA64_PSR_DFL | IA64_PSR_DFH | \
-                       IA64_PSR_SP | IA64_PSR_DI | IA64_PSR_SI |       \
-                       IA64_PSR_DB | IA64_PSR_LP | IA64_PSR_TB | \
-                       IA64_PSR_MC | IA64_PSR_IS | \
-                       IA64_PSR_ID | IA64_PSR_DA | IA64_PSR_DD | \
-                       IA64_PSR_SS | IA64_PSR_RI | IA64_PSR_ED | IA64_PSR_IA)
 
 // Note: not hand-scheduled for now
 //  Registers at entry
@@ -250,7 +234,7 @@ ENTRY(hyper_ssm_i)
        // set cr.ipsr
        mov r29=r30
        movl r28=DELIVER_PSR_SET
-       movl r27=~DELIVER_PSR_CLR;;
+       movl r27=~(DELIVER_PSR_CLR & (~IA64_PSR_CPL));;
        and r29=r29,r27;;
        or r29=r29,r28;;
        // set hpsr_dfh to ipsr
@@ -438,7 +422,7 @@ GLOBAL_ENTRY(fast_tick_reflect)
        // set cr.ipsr (make sure cpl==2!)
        mov r29=r17
        movl r28=DELIVER_PSR_SET | (CONFIG_CPL0_EMUL << IA64_PSR_CPL0_BIT)
-       movl r27=~(DELIVER_PSR_CLR|IA64_PSR_CPL0|IA64_PSR_CPL1);;
+       movl r27=~DELIVER_PSR_CLR;;
        and r29=r29,r27;;
        or r29=r29,r28;;
        mov cr.ipsr=r29;;
@@ -611,7 +595,7 @@ ENTRY(fast_reflect)
        mov r29=r30 ;;
        ld8 r21=[r21]
        movl r28=DELIVER_PSR_SET | (CONFIG_CPL0_EMUL << IA64_PSR_CPL0_BIT)
-       movl r27=~(DELIVER_PSR_CLR|IA64_PSR_CPL0|IA64_PSR_CPL1);;
+       movl r27=~DELIVER_PSR_CLR;;
        and r29=r29,r27;;
        or r29=r29,r28;;
        // set hpsr_dfh to ipsr
@@ -1269,7 +1253,7 @@ ENTRY(rfi_with_interrupt)
        movl r22=THIS_CPU(current_psr_i_addr)
        // set cr.ipsr (make sure cpl==2!)
        mov r29=r17
-       movl r27=~(DELIVER_PSR_CLR|IA64_PSR_CPL0|IA64_PSR_CPL1)
+       movl r27=~DELIVER_PSR_CLR
        movl r28=DELIVER_PSR_SET | (CONFIG_CPL0_EMUL << IA64_PSR_CPL0_BIT)
        mov r20=1;;
        ld8 r22=[r22]
diff -r 764d33505b98 -r eae7b887e5ac xen/include/asm-ia64/xenkregs.h
--- a/xen/include/asm-ia64/xenkregs.h   Thu Sep 27 09:08:26 2007 -0600
+++ b/xen/include/asm-ia64/xenkregs.h   Thu Sep 27 09:16:23 2007 -0600
@@ -16,6 +16,22 @@
 #define IA64_DEFAULT_DCR_BITS  (IA64_DCR_PP | IA64_DCR_LC | IA64_DCR_DM | \
                                 IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | \
                                 IA64_DCR_DR | IA64_DCR_DA | IA64_DCR_DD)
+
+// note IA64_PSR_PK removed from following, why is this necessary?
+#define        DELIVER_PSR_SET (IA64_PSR_IC | IA64_PSR_I  |    \
+                        IA64_PSR_DT | IA64_PSR_RT |    \
+                        IA64_PSR_IT | IA64_PSR_BN)
+
+#define        DELIVER_PSR_CLR (IA64_PSR_AC | IA64_PSR_DFL| IA64_PSR_DFH|      
\
+                        IA64_PSR_SP | IA64_PSR_DI | IA64_PSR_SI |      \
+                        IA64_PSR_DB | IA64_PSR_LP | IA64_PSR_TB |      \
+                        IA64_PSR_CPL| IA64_PSR_MC | IA64_PSR_IS |      \
+                        IA64_PSR_ID | IA64_PSR_DA | IA64_PSR_DD |      \
+                        IA64_PSR_SS | IA64_PSR_RI | IA64_PSR_ED | IA64_PSR_IA)
+
+//  NO PSR_CLR IS DIFFERENT! (CPL)
+#define IA64_PSR_CPL1  (__IA64_UL(1) << IA64_PSR_CPL1_BIT)
+#define IA64_PSR_CPL0  (__IA64_UL(1) << IA64_PSR_CPL0_BIT)
 
 /* Interruption Function State */
 #define IA64_IFS_V_BIT         63

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.