freebsd-skq/sys/isa
jhb ad1ee10f6d 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
..
atkbd_isa.c
atkbdc_isa.c
atrtc.c Use the local APIC timer to drive the various kernel clocks on SMP machines 2005-02-08 20:25:07 +00:00
isa_common.c
isa_common.h
isa_if.m
isahint.c
isareg.h
isavar.h Since we are quite unlikely to ever face another platform which 2005-02-06 13:46:39 +00:00
orm.c
pnp.c
pnpparse.c
pnpreg.h
pnpvar.h
psm.c
rtc.h
syscons_isa.c
vga_isa.c