freebsd-dev/sys/sparc64/include
Marius Strobl 7bed9b320b - Add a workaround for a bug in BlackBird CPUs (said to be part of the
SpitFire erratum #54) which can cause writes to the TICK_CMPR register
  to fail. This seems to fix the dying clocks problem reported by jhb@
  and kris@. [1]
- In tick_start() don't reset the tick counter of the boot processor to
  zero. It's initially reset in _start() and afterwards but _before_
  tick_start() is called on the BSP the APs synchronise with the tick
  counter of the BSP in mp_startup(). Resetting the tick counter of the
  BSP in tick_start() probably also was the cause of problems seen when
  using the CPU tick counter as timecounter on SMP machines.
  Not resetting the tick counter of the BSP in mp_startup() makes the
  tick counters and tick interrupts between the BSP and APs be pretty
  much in sync as it's supposed to be. This also means there's no longer
  a real reason to have separate tick_start() and tick_start_ap() so
  merge them and zap tick_start_ap(). This is also a first step in
  simplifying the interface to the tick counters in preparation to use
  alternate clock hardware where available.
- Switch to the algorithm used on FreeBSD/ia64 for updating the tick
  interrupt register and which compensates the clock drift caused by
  varying delays between when the tick interrupts actually trigger and
  when they are serviced. Not compensating the clock drift mainly hurts
  interactive performance especially when using WITNESS. [2]
  For further information about the algorithm also see the commit log
  of sys/ia64/ia64/interrupt.c rev. 1.38.
  On sparc64 the sysctls for monitoring the behaviour of the tick
  interrupts are machdep.tick.adjust_edges, machdep.tick.adjust_excess,
  machdep.tick.adjust_missed and machdep.tick.adjust_ticks.
- In tick_init() just use tick_stop() for stopping the tick interrupts
  until a proper handler is set up later. This also stops the system
  tick interrupt on USIII systems earlier.
- In tick_start() check for a rough upper limit of HZ.
- Some minor changes, e.g. use FBSDID, remove unused headers, etc.

Info obtained from:	Linux [1]
Ok'ed by:		marcel [2]
Additional testing by:	kris (earlier version of the workaround), jhb
X-MFC after:		3 days [1]
2005-04-16 14:57:38 +00:00
..
_inttypes.h
_limits.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
_stdint.h <stdint.h> should define WINT_M{AX,IN} independent from whether WCHAR_MIN is 2004-05-18 16:04:57 +00:00
_types.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
asi.h
asm.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
asmacros.h Remove filename+line number from panic messages. 2004-06-06 21:26:49 +00:00
atomic.h Use unsigned types for the arguments of the atomic(9) operations, 2004-05-22 00:52:16 +00:00
bus_common.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
bus_dma.h Refactor the bus_dma header files so that the interface is described in 2005-03-14 16:46:28 +00:00
bus_memio.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
bus_pio.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
bus_private.h Retire BUS_DMAMAP_NSEGS for sparc64 2004-06-28 04:04:43 +00:00
bus.h Refactor the bus_dma header files so that the interface is described in 2005-03-14 16:46:28 +00:00
cache.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
ccr.h
clock.h
cpu.h Instead of calling ia32_pause() conditionally on __i386__ or __amd64__ 2004-08-03 18:44:27 +00:00
cpufunc.h - Add a workaround for a bug in BlackBird CPUs (said to be part of the 2005-04-16 14:57:38 +00:00
db_machdep.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
eeprom.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
elf.h
endian.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
exec.h
float.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
floatingpoint.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
fp.h
frame.h Remove obsolete prototype of kdb_trap(). 2004-07-10 23:05:38 +00:00
fsr.h
gdb_machdep.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
idprom.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
ieee.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
ieeefp.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
in_cksum.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
instr.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
intr_machdep.h
iommureg.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
iommuvar.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
kdb.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
kerneldump.h
ktr.h
limits.h Addendum to netchild's C compiler abstraction mega-patch which somehow 2005-03-04 21:26:07 +00:00
lsu.h
md_var.h Add a small API to manage the MD user trap structures. Specifically, we 2005-01-19 18:24:07 +00:00
memdev.h Break out the MI part of the /dev/[k]mem and /dev/io drivers into 2004-08-01 11:40:54 +00:00
metadata.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
mutex.h
nexusvar.h Some cleanups to the nexus code: 2004-04-30 19:50:51 +00:00
ofw_bus.h Instead of "OpenFirmware", "openfirmware", etc. use the official spelling 2004-08-16 15:45:27 +00:00
ofw_machdep.h - Re-write OF_decode_addr() with a bus-neutral approach, adding support 2005-02-12 19:13:51 +00:00
ofw_mem.h
ofw_nexus.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
ofw_upa.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
param.h Remove UAREA_PAGES. 2004-11-20 02:29:50 +00:00
pcb.h Implement makectx(). The makectx() function is used by KDB to create 2004-07-10 19:56:00 +00:00
pcpu.h - Add a workaround for a bug in BlackBird CPUs (said to be part of the 2005-04-16 14:57:38 +00:00
pmap.h Silence witness warnings about duplicate pmap lock emitted since 2005-02-18 15:37:34 +00:00
proc.h Divorce critical sections from spinlocks. Critical sections as denoted by 2005-04-04 21:53:56 +00:00
profile.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
pstate.h
ptrace.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
reg.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
reloc.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
resource.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
runq.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
sc_machdep.h
setjmp.h
sf_buf.h
sigframe.h
signal.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
smp.h Declare as volatile the memory location referenced by a pointer rather than 2005-03-06 20:57:08 +00:00
stdarg.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
sysarch.h Remove advertising clause from University of California Regent's 2004-04-07 05:00:01 +00:00
tick.h - Add a workaround for a bug in BlackBird CPUs (said to be part of the 2005-04-16 14:57:38 +00:00
tlb.h
trap.h
tsb.h
tstate.h
tte.h
ucontext.h
upa.h
utrap.h
varargs.h netchild's mega-patch to isolate compiler dependencies into a central 2005-03-02 21:33:29 +00:00
ver.h Identify USIIIi processors. 2004-12-24 16:21:46 +00:00
vmparam.h
watch.h
wstate.h