# HG changeset patch # User Tristan Gingold # Date 1180763770 -7200 # Node ID e9716dd327fd9c3497c7deb8530541a3b4e1cfa4 # Parent b46c2ff6dfb0de75e17fee01f0adc4d35d5e8322 Conditionnaly comment two privify code blocks. Signed-off-by: Tristan Gingold diff -r b46c2ff6dfb0 -r e9716dd327fd xen/arch/ia64/xen/ivt.S --- a/xen/arch/ia64/xen/ivt.S Thu May 31 14:47:08 2007 -0600 +++ b/xen/arch/ia64/xen/ivt.S Sat Jun 02 07:56:10 2007 +0200 @@ -587,9 +587,13 @@ ENTRY(break_fault) ;; ld8 r18=[r18] ;; - cmp.eq p7,p0=r0,r17 // is this a psuedo-cover? +#ifdef CONFIG_PRIVIFY + // pseudo-cover are replaced by break.b which (unfortunatly) always + // clear iim. + cmp.eq p7,p0=r0,r17 (p7) br.spnt.many dispatch_privop_fault ;; +#endif // if (ipsr.cpl == 2 && (iim - HYPERPRIVOP_START) < HYPERPRIVOP_MAX) // this is a hyperprivop. A hyperprivop is hand-coded assembly with // psr.ic off which means it can make no calls, cannot use r1-r15, diff -r b46c2ff6dfb0 -r e9716dd327fd xen/arch/ia64/xen/privop.c --- a/xen/arch/ia64/xen/privop.c Thu May 31 14:47:08 2007 -0600 +++ b/xen/arch/ia64/xen/privop.c Sat Jun 02 07:56:10 2007 +0200 @@ -702,7 +702,7 @@ static IA64FAULT priv_handle_op(VCPU * v perfc_incr(bsw1); return priv_bsw1(vcpu, inst); } - if (inst.B8.x6 == 0x0) { + if (privify_en && inst.B8.x6 == 0x0) { // break instr for privified cover perfc_incr(cover); return priv_cover(vcpu, inst);