freebsd-dev/sys/i386/isa
John Baldwin e8ce55117b Use the local APIC timer to drive the various kernel clocks on SMP machines
rather than forwarding interrupts from the clock devices around using IPIs:
- Add an IDT vector that pushes a clock frame and calls
  lapic_handle_timer().
- Add functions to program the local APIC timer including setting the
  divisor, and setting up the timer to either down a periodic countdown
  or one-shot countdown.
- Add a lapic_setup_clock() function that the BSP calls from
  cpu_init_clocks() to setup the local APIC timer if it is going to be
  used.  The setup uses a one-shot countdown to calibrate the timer.  We
  then program the timer on each CPU to fire at a frequency of hz * 3.
  stathz is defined as freq / 23 (hz * 3 / 23), and profhz is defined as
  freq / 2 (hz * 3 / 2).  This gives the clocks relatively prime divisors
  while keeping a low LCM for the frequency of the clock interrupts.
  Thanks to Peter Jeremy for suggesting this approach.
- Remove the hardclock and statclock forwarding code including the two
  associated IPIs.  The bitmap IPI handler has now effectively degenerated
  to just IPI_AST.
- When the local APIC timer is used we don't turn the RTC on at all, but
  we still enable interrupts on the ISA timer 0 (i8254) for timecounting
  purposes.
2005-02-08 20:25:07 +00:00
..
ic /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
pcvt /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
atpic_vector.s MFamd64: 2004-05-26 07:43:41 +00:00
atpic.c Tweak the ELCR support slightly. Explicitly probe the ELCR during boot 2005-01-18 20:24:47 +00:00
ccbque.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
clock.c Use the local APIC timer to drive the various kernel clocks on SMP machines 2005-02-08 20:25:07 +00:00
elcr.c Tweak the ELCR support slightly. Explicitly probe the ELCR during boot 2005-01-18 20:24:47 +00:00
elink.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
elink.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
icu.h - Move some macros from icu.h into atpic.c as that is the only place they 2004-05-11 20:23:24 +00:00
if_el.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
if_elreg.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
isa_dma.c Since we are quite unlikely to ever face another platform which 2005-02-06 13:46:39 +00:00
isa.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
isa.h Remove now obsolete port assignments and sizes. These more properly 2004-07-05 18:39:30 +00:00
lptreg.h
nmi.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
npx.c Don't include sys/user.h merely for its side-effect of recursively 2004-11-27 06:51:39 +00:00
pcf.c Remove isa compat stuff. 2004-03-14 23:03:57 +00:00
pmtimer.c Add some missing <sys/module.h> includes which are masked by the 2004-05-30 17:57:46 +00:00
prof_machdep.c Quick fix for overflow when tsc_freq >= 2^31. "int profrate" in struct 2004-05-26 09:43:38 +00:00
spic.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
spicreg.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
spkr.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
timerreg.h Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
vesa.c Do a pass over all modules in the kernel and make them return EOPNOTSUPP 2004-07-15 08:26:07 +00:00