# 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
|