# HG changeset patch # User dietmar.hahn@xxxxxxxxxxxxxxxxxxx # Date 1182167461 -7200 # Node ID d3e565b548779e3eb7b3971ad1ab74ce7f4b6486 # Parent 1623f5f5094f4bc41be0d67f906b155e3704109c Better handling of isr.code if priv_emulate() fails with IA64_GENEX_VECTOR. Signed-off-by: Dietmar Hahn diff -r 1623f5f5094f -r d3e565b54877 xen/arch/ia64/xen/faults.c --- a/xen/arch/ia64/xen/faults.c Thu Jun 14 15:32:22 2007 -0600 +++ b/xen/arch/ia64/xen/faults.c Mon Jun 18 13:51:01 2007 +0200 @@ -544,6 +544,13 @@ ia64_handle_privop(unsigned long ifa, st if (vector != IA64_NO_FAULT && vector != IA64_RFI_IN_PROGRESS) { // Note: if a path results in a vector to reflect that requires // iha/itir (e.g. vcpu_force_data_miss), they must be set there + /* IA64_GENEX_VECTOR may contain in the lowest byte an ISR.code + * see IA64_ILLOP_FAULT, ... + */ + if ((vector & ~0xffUL) == IA64_GENEX_VECTOR) { + isr = vector & 0xffUL; + vector = IA64_GENEX_VECTOR; + } reflect_interruption(isr, regs, vector); } }