From owner-p4-projects@FreeBSD.ORG Fri Apr 18 14:05:05 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EC30137B404; Fri, 18 Apr 2003 14:05:04 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8B87537B401 for ; Fri, 18 Apr 2003 14:05:04 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3359A43FA3 for ; Fri, 18 Apr 2003 14:05:04 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h3IL540U039894 for ; Fri, 18 Apr 2003 14:05:04 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h3IL53VY039891 for perforce@freebsd.org; Fri, 18 Apr 2003 14:05:03 -0700 (PDT) Date: Fri, 18 Apr 2003 14:05:03 -0700 (PDT) Message-Id: <200304182105.h3IL53VY039891@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 29226 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Apr 2003 21:05:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=29226 Change 29226 by marcel@marcel_nfs on 2003/04/18 14:04:05 Preserve the value of cr.iim as cr.ifa in the trapframe for the following faults: o the break instruction fault writes the immediate operand of the break instruction in cr.iim, o the speculative operation fault encodes the displacement of the target operand of the chk.a and chk.s instructions in cr.iim, o the ia32 faults and traps using the ia32 intercept vector write the cause of the interception in cr.iim. In the above cases cr.ifa is undefined and in all other cases cr.iim is undefined. Hence no information is lost by copying cr.iim into cr.ifa prior to saving the context in the trapframe. Affected files ... .. //depot/projects/ia64_epc/sys/ia64/ia64/exception.s#12 edit Differences ... ==== //depot/projects/ia64_epc/sys/ia64/ia64/exception.s#12 (text+ko) ==== @@ -1081,6 +1081,18 @@ IVT_END(Data_Access_Bit) IVT_ENTRY(Break_Instruction, 0x2c00) +{ .mmi + mov r16=cr.iim + ;; + mov cr.ifa=r16 + nop 0 + ;; +} +{ .mfb + srlz.d + nop 0 + nop 0 +} TRAP(11) IVT_END(Break_Instruction) @@ -1174,6 +1186,18 @@ IVT_END(NaT_Consumption) IVT_ENTRY(Speculation, 0x5700) +{ .mmi + mov r16=cr.iim + ;; + mov cr.ifa=r16 + nop 0 + ;; +} +{ .mfb + srlz.d + nop 0 + nop 0 +} TRAP(27) IVT_END(Speculation) @@ -1250,6 +1274,18 @@ IVT_END(IA_32_Exception) IVT_ENTRY(IA_32_Intercept, 0x6a00) +{ .mmi + mov r16=cr.iim + ;; + mov cr.ifa=r16 + nop 0 + ;; +} +{ .mfb + srlz.d + nop 0 + nop 0 +} TRAP(46) IVT_END(IA_32_Intercept)