From f0a750c9c10e0e3291b23bce60de670d278c479c Mon Sep 17 00:00:00 2001 From: Tony Luck Date: Mon, 25 Apr 2005 13:22:44 -0700 Subject: [PATCH] --- yaml --- r: 519 b: refs/heads/master c: f0a8d3c9ec1f82d2a41faa6c46b8db7bd5b1eb8d h: refs/heads/master i: 517: d76938b40b8fa15295811d22869aab598ffd2be9 515: 0bd4faf74ca2fccf27a6db6f2af558707b3dcb07 511: a4ccb142a09ad69976cf727ba97be442de09b822 v: v3 --- [refs] | 2 +- trunk/arch/ia64/mm/fault.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index befb3618739e..78169db6bc31 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0985ea8f2db87d32b0b750229889e55fed7458ef +refs/heads/master: f0a8d3c9ec1f82d2a41faa6c46b8db7bd5b1eb8d diff --git a/trunk/arch/ia64/mm/fault.c b/trunk/arch/ia64/mm/fault.c index da859125aaef..4174ec999dde 100644 --- a/trunk/arch/ia64/mm/fault.c +++ b/trunk/arch/ia64/mm/fault.c @@ -209,10 +209,13 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re } no_context: - if (isr & IA64_ISR_SP) { + if ((isr & IA64_ISR_SP) + || ((isr & IA64_ISR_NA) && (isr & IA64_ISR_CODE_MASK) == IA64_ISR_CODE_LFETCH)) + { /* - * This fault was due to a speculative load set the "ed" bit in the psr to - * ensure forward progress (target register will get a NaT). + * This fault was due to a speculative load or lfetch.fault, set the "ed" + * bit in the psr to ensure forward progress. (Target register will get a + * NaT for ld.s, lfetch will be canceled.) */ ia64_psr(regs)->ed = 1; return;