From owner-cvs-all@FreeBSD.ORG Tue Dec 2 07:02:14 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DACD516A4CE; Tue, 2 Dec 2003 07:02:14 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A966B43FE9; Tue, 2 Dec 2003 07:02:13 -0800 (PST) (envelope-from bde@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.9/8.12.9) with ESMTP id hB2F2DXJ043417; Tue, 2 Dec 2003 07:02:13 -0800 (PST) (envelope-from bde@repoman.freebsd.org) Received: (from bde@localhost) by repoman.freebsd.org (8.12.9/8.12.9/Submit) id hB2F2Dfj043416; Tue, 2 Dec 2003 07:02:13 -0800 (PST) (envelope-from bde) Message-Id: <200312021502.hB2F2Dfj043416@repoman.freebsd.org> From: Bruce Evans Date: Tue, 2 Dec 2003 07:02:13 -0800 (PST) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/i386/i386 apic_vector.s X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Dec 2003 15:02:15 -0000 bde 2003/12/02 07:02:12 PST FreeBSD src repository Modified files: sys/i386/i386 apic_vector.s Log: Fixed panics in apic interrupt handlers if kernel profiling is turned on. MCOUNT and FAKE_MCOUNT() may clobber all the call-used registers, and one FAKE_MCOUNT() was placed so that an active %eax was clobbered. The fix is to move this FAKE_MCOUNT() earlier where it should have been anyway. Fixed 3 layers of bitrot in the comment about why this FAKE_MCOUNT() was where it was by removing the comment. (mcount() should be called as early as possible after entering a new level, but an implementation detail got in the way until 3 layers of changes ago.) Kernel profiling still gives wrong results because the new interrupt code rearranged object files too much. mcount() depends on trap, syscall and interrupt handlers being between certain magic labels with interrupt handlers last, and on nothing else being there. Splitting up exception.o moved the magic labels to effectively random places relative to what they are supposed to delimit. This mainly broke the call graph; the flat profile is still usable. Revision Changes Path 1.95 +1 -1 src/sys/i386/i386/apic_vector.s