freebsd-skq/sys/sparc64/include
Marius Strobl 09c7f9e338 - USIII-based machines can consist of CPUs running at different
frequencies (and having different cache sizes) so use the STICK
  (System TICK) timer, which was introduced due to this and is
  driven by the same frequency across all CPUs, instead of the
  TICK timer, whose frequency varies with the CPU clock, to drive
  hardclock. We try to use the STICK counter with all CPUs that are
  USIII or beyond, even when not necessary due to identical CPUs,
  as we can can also avoid the workaround for the BlackBird erratum
  #1 there. Unfortunately, using the STICK counter currently causes
  a hang with USIIIi MP machines for reasons unknown, so we still
  use the TICK timer there (which is okay as they can only consist
  of identical CPUs).
- Given that we only (try to) synchronize the (S)TICK timers of APs
  with the BSP during startup, we could end up spinning forever in
  DELAY(9) if that function is migrated to another CPU while we're
  spinning due to clock drift afterwards, so pin to the CPU in order
  to avoid migration. Unfortunately, pinning doesn't work at the
  point DELAY(9) is required by the low-level console drivers, yet,
  so switch to a function pointer, which is updated accordingly, for
  implementing DELAY(9). For USIII and beyond, this would also allow
  to easily use the STICK counter instead of the TICK one here,
  there's no benefit in doing so however.
  While at it, use cpu_spinwait(9) for spinning in the delay-
  functions. This currently is a NOP though.
- Don't set the TICK timer of the BSP to 0 during at startup as
  there's no need to do so.
- Implement cpu_est_clockrate().
- Unfortunately, USIIIi-based machines don't provide a timecounter
  device besides the STICK and TICK counters (well, in theory the
  Tomatillo bridges have a performance counter that can be (ab)used
  as timecounter by configuring it to count bus cycles, though unlike
  the performance counter of Schizo bridges, the Tomatillo one is
  broken and counts Sun knows what in this mode). This means that
  we've to use a (S)TICK counter for timecounting, which has the old
  problem of not being in sync across CPUs, so provide an additional
  timecounter function which binds itself to the BSP but has an
  adequate low priority.
2008-09-03 17:39:19 +00:00
..
_bus.h
_inttypes.h
_limits.h
_stdint.h
_types.h
asi.h cosmetic changes and style fixes 2008-08-13 20:30:28 +00:00
asm.h
asmacros.h
atomic.h Oops. Use atomic_add_long() for atomic_fetchadd_long() (not atomic_add_int()) 2008-03-19 07:27:24 +00:00
bus_common.h - Use the name returned by device_get_nameunit(9) for the name of the 2008-05-07 21:22:15 +00:00
bus_dma.h
bus_private.h Rototill the sparc64 nexus(4) (actually this brings in the code the 2007-03-07 21:13:51 +00:00
bus.h - Remove the BUS_HANDLE_MIN checking in the __BUS_DEBUG_ACCESS macro; 2008-05-08 21:10:39 +00:00
cache.h - USIII-based machines can consist of CPUs having different cache 2008-09-02 21:13:54 +00:00
ccr.h
clock.h - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
cpu.h
cpufunc.h - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
db_machdep.h
elf.h
endian.h
exec.h
float.h
floatingpoint.h
fp.h
frame.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
fsr.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
gdb_machdep.h
idprom.h
ieee.h
ieeefp.h
in_cksum.h Revert the addition of "__volatile" to "__asm" done in r180011, since 2008-07-05 15:28:30 +00:00
instr.h
intr_machdep.h o Rename ic_eoi to ic_clear to emphasize the functions it points 2008-04-23 20:04:38 +00:00
iommureg.h - Divorce the IOTSBs, which so far where handled via a global list 2007-08-05 11:56:44 +00:00
iommuvar.h - Use the name returned by device_get_nameunit(9) for the name of the 2008-05-07 21:22:15 +00:00
kdb.h Add kdb_cpu_sync_icache(), intended to synchronize instruction 2007-06-09 21:55:17 +00:00
kerneldump.h
ktr.h
limits.h
lsu.h
md_var.h The Sun disk label only uses 16-bit fields for cylinders, heads and 2008-02-11 21:40:22 +00:00
memdev.h Remove the unused major/minor numbers from iodev and memdev. 2008-06-25 07:45:31 +00:00
metadata.h
mutex.h
ofw_bus.h
ofw_machdep.h
ofw_mem.h
ofw_nexus.h Rototill the sparc64 nexus(4) (actually this brings in the code the 2007-03-07 21:13:51 +00:00
param.h When building a kernel module, define MAXCPU the same as SMP so 2008-03-27 05:03:26 +00:00
pcb.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
pcpu.h - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
pmap.h
pmc_mdep.h Add stubs to unbreak LINT. 2007-12-07 13:45:47 +00:00
proc.h
profile.h - Add bits for userland profiling. For sun4u this is compile-tested only. 2007-05-11 23:43:55 +00:00
pstate.h
ptrace.h
reg.h
reloc.h
resource.h
runq.h
sc_machdep.h
setjmp.h
sf_buf.h
sigframe.h
signal.h
smp.h - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
stack.h Break out stack(9) from ddb(4): 2007-12-02 20:40:35 +00:00
stdarg.h
sysarch.h - Include <machine/utrap.h> so this header doesn't have an MD 2008-04-23 20:38:37 +00:00
tick.h - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
tlb.h - Do as the comment in pmap_bootstrap() suggests and flush all non-locked 2008-03-09 15:53:34 +00:00
trap.h
tsb.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
tstate.h
tte.h - Reimplement {d,i}tlb_enter() and {d,i}tlb_va_to_pa() in C. There's 2008-08-07 22:46:25 +00:00
ucontext.h
upa.h
utrap.h
varargs.h
ver.h - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
vmparam.h Assume OpenSolaris knows better and use their value for VM_MAX_PROM_ADDRESS. 2008-08-12 20:00:28 +00:00
watch.h
wstate.h