cvs commit: src/sys/i386/i386 apic_vector.s

From: Bruce Evans <bde_at_FreeBSD.org>
Date: Tue, 2 Dec 2003 07:02:13 -0800 (PST)
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
Received on Tue Dec 02 2003 - 07:02:14 UTC