freebsd-skq/sys/sparc64/include
Marius Strobl c6d76cdb21 - Add support for sending IPIs with USIII and greater sun4u CPUs.
These CPUs use an enhanced layout of the interrupt vector dispatch
  and dispatch status registers in order to allow sending IPIs to
  multiple targets simultaneously. Thus support for these CPUs was
  put in a newly added cheetah_ipi_selected(). This is intended to
  be pointed to by cpu_ipi_selected, which now is a function pointer,
  in order to avoid cpu_impl checks once booted. Alternatively it
  can point to spitfire_ipi_selected(), which was renamed from
  cpu_ipi_selected(). Consequently cpu_ipi_send() was also renamed
  to spitfire_ipi_send() (there's no need for a cheetah equivalent
  of this so far). Initialization of the cpu_ipi_selected pointer
  and other requirements is done in mp_init(), which was renamed
  from mp_tramp_alloc(), as cpu_mp_start() isn't called on UP
  systems while cpu_ipi_selected() is. As a side-effect this allows
  to make mp_tramp static to sys/sparc64/sparc64/mp_machdep.c.
  For the sake of avoiding #ifdef SMP and for keeping the history in
  place cheetah_ipi_selected() and spitfire_ipi_{selected,send}()
  where not put into/moved to sys/sparc64/sparc64/{cheetah,spitfire}.c
- Add some CTASSERTs and KASSERTs ensuring that MAXCPU doesn't
  exceed the data types we use to store the CPU bit fields or the
  number of USIII and greater CPUs supported by the current
  cheetah_ipi_selected() implementation (which for JBus-CPUs is
  only 4; that should be fine though as according to OpenSolaris
  there are no sun4u machines with more than 4 JBus-CPUs).
- In cpu_mp_start() don't enumerate and start more than MAXCPU CPUs
  as we can't handle more than that.
- In cpu_mp_start() check for upa-portid vs. portid depending on
  cpu_impl for consistency with nexus(4).
- In spitfire_ipi_selected() add KASSERTs ensuring that a CPU isn't
  told to IPI itself as sun4u CPUs just can't do that.
- In spitfire_ipi_send() do a MEMBAR #Sync after writing the
  interrupt vector data as we want to make sure the payload was
  actually written before we trigger the dispatch.
- In spitfire_ipi_send() also verify IDR_BUSY when checking whether
  the dispatch was successful as it has to be cleared for this to
  be the case.
- Remove some redundant variables.
2007-06-16 23:26:00 +00:00
..
_bus.h - Complete breaking out the definition of bus_space_{tag,handle}_t by 2006-06-13 19:18:09 +00:00
_inttypes.h
_limits.h
_stdint.h
_types.h
asi.h unbreak sparc64 loader build 2006-10-09 05:59:04 +00:00
asm.h
asmacros.h
atomic.h Add a new atomic_fetchadd() primitive that atomically adds a value to a 2005-09-27 17:39:11 +00:00
bus_common.h
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 - Rename UPA_BUS_SPACE to NEXUS_BUS_SPACE; besides an UPA bus, nexus(4) 2007-01-18 18:32:26 +00:00
cache.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
ccr.h
clock.h First part of a little cleanup in the calendar/timezone/RTC handling. 2006-10-02 12:59:59 +00:00
cpu.h Clean out sysctl machdep.* related defines. 2006-05-11 17:29:25 +00:00
cpufunc.h
db_machdep.h
elf.h PR: 2006-10-04 21:37:10 +00:00
endian.h In the replacement text of the __bswapN_const() macros encapsulate the 2006-10-30 21:50:11 +00:00
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 - The inline asm in this file uses output operands before all input 2006-01-12 11:40:39 +00:00
instr.h
intr_machdep.h o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
iommureg.h Rototill the sparc64 nexus(4) (actually this brings in the code the 2007-03-07 21:13:51 +00:00
iommuvar.h
kdb.h Add kdb_cpu_sync_icache(), intended to synchronize instruction 2007-06-09 21:55:17 +00:00
kerneldump.h
ktr.h Use <sys/ktr.h> directly in .S files instead of exporting the 2005-12-06 16:38:08 +00:00
limits.h
lsu.h
md_var.h
memdev.h
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 add new large page sizes for use by shared loader 2006-12-18 07:28:59 +00:00
pcb.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
pcpu.h Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
pmap.h Add pmap_clear_write() to the interface between the virtual memory 2006-07-20 17:48:41 +00:00
pmc_mdep.h
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 Remove 3rd clause, renumber, ok per email 2007-01-12 07:26:21 +00:00
resource.h
runq.h
sc_machdep.h
setjmp.h Remove 3rd clause, renumber, ok per email 2007-01-12 07:26:21 +00:00
sf_buf.h
sigframe.h
signal.h
smp.h - Add support for sending IPIs with USIII and greater sun4u CPUs. 2007-06-16 23:26:00 +00:00
stdarg.h Use __builtin_va_start instead of __builtin_stdarg_start. GCC4 obsoletes 2006-09-21 01:37:02 +00:00
sysarch.h
tick.h
tlb.h
trap.h Correct typos (s/OFERFLOW/OVERFLOW/). 2006-01-16 01:35:25 +00:00
tsb.h Convert the remainder of the low hanging fruits regarding including 2007-01-19 11:15:34 +00:00
tstate.h
tte.h
ucontext.h
upa.h
utrap.h Correct typos (s/OFERFLOW/OVERFLOW/). 2006-01-16 01:35:25 +00:00
varargs.h
ver.h - Also identify USIIIi+, USIV and USIV+ CPUs. 2007-05-20 13:47:36 +00:00
vmparam.h Add the machine-specific definitions for configuring the new physical 2007-06-04 02:32:07 +00:00
watch.h
wstate.h