freebsd-nq/sys/powerpc/include
Nathan Whitehorn 54c562081f Restructure the way the copyin/copyout segment is stored to prevent a
concurrency bug. Since all SLB/SR entries were invalidated during an
exception, a decrementer exception could cause the user segment to be
invalidated during a copyin()/copyout() without a thread switch that
would cause it to be restored from the PCB, potentially causing the
operation to continue on invalid memory. This is now handled by explicit
restoration of segment 12 from the PCB on 32-bit systems and a check in
the Data Segment Exception handler on 64-bit.

While here, cause copyin()/copyout() to check whether the requested
user segment is already installed, saving some pipeline flushes, and
fix the synchronization primitives around the mtsr and slbmte
instructions to prevent accessing stale segments.

MFC after:	2 weeks
2010-10-30 23:07:30 +00:00
..
_align.h MFppc64: 2010-07-13 05:32:19 +00:00
_bus.h MFppc64: 2010-07-13 05:32:19 +00:00
_inttypes.h MFppc64: 2010-07-13 05:32:19 +00:00
_limits.h MFppc64: 2010-07-13 05:32:19 +00:00
_stdint.h MFppc64: 2010-07-13 05:32:19 +00:00
_types.h MFppc64: 2010-07-13 05:32:19 +00:00
altivec.h Handle vector assist traps without a kernel panic, by setting denormalized 2010-10-05 18:08:07 +00:00
asm.h MFppc64: 2010-07-13 05:32:19 +00:00
atomic.h MFppc64: 2010-07-13 05:32:19 +00:00
bat.h
bus_dma.h
bus.h MFppc64: 2010-07-13 05:32:19 +00:00
clock.h
cpu.h Add a CPU features framework on PowerPC and simplify CPU setup a little 2009-11-28 17:33:19 +00:00
cpufunc.h MFppc64: 2010-07-13 05:32:19 +00:00
db_machdep.h MFppc64: 2010-07-13 05:32:19 +00:00
dbdma.h
elf.h Supply some useful information to the started image using ELF aux vectors. 2010-08-17 08:55:45 +00:00
endian.h
exec.h
fdt.h Eliminate FDT_IMMR_VA define. 2010-07-19 18:47:18 +00:00
float.h
floatingpoint.h
fpu.h
frame.h MFppc64: 2010-07-13 05:32:19 +00:00
gdb_machdep.h
hid.h MFppc64: 2010-07-13 05:32:19 +00:00
ieee.h
ieeefp.h
in_cksum.h
intr_machdep.h Update PowerPC event timer code to use new event timers infrastructure. 2010-09-11 04:45:51 +00:00
kdb.h
limits.h
md_var.h Update PowerPC event timer code to use new event timers infrastructure. 2010-09-11 04:45:51 +00:00
memdev.h Add a memory-range interface to /dev/mem on PowerPC using PAT attributes. 2010-10-03 16:02:53 +00:00
metadata.h Convert Freescale PowerPC platforms to FDT convention. 2010-07-11 21:08:29 +00:00
mmuvar.h Introduce inheritance into the PowerPC MMU kobj interface. 2010-09-15 00:17:52 +00:00
mutex.h Initial support for SMP on PowerPC MPC85xx. 2009-05-21 11:43:37 +00:00
ofw_machdep.h Restructure how reset and poweroff are handled on PowerPC systems, since 2010-08-31 15:27:46 +00:00
openpicreg.h
openpicvar.h Configure interrupts on SMP systems to be distributed among all online 2010-06-23 22:33:03 +00:00
param.h - Bump MAXCPU to 4. Tested on a quad G5 with both 32 and 64-bit kernels. 2010-09-03 03:56:09 +00:00
pcb.h Restructure the way the copyin/copyout segment is stored to prevent a 2010-10-30 23:07:30 +00:00
pcpu.h Split the SLB mirror cache into two kinds of object, one for kernel maps 2010-09-16 03:46:17 +00:00
pio.h Provide 64-bit big endian bus space operations for PowerPC. They are required 2009-06-06 09:33:32 +00:00
platform.h Factor out platform dependent things unrelated to device drivers into a 2009-05-14 00:34:26 +00:00
platformvar.h Factor out platform dependent things unrelated to device drivers into a 2009-05-14 00:34:26 +00:00
pmap.h Add support for memory attributes (pmap_mapdev_attr() and friends) on 2010-09-30 18:14:12 +00:00
pmc_mdep.h
proc.h MFppc64: 2010-07-13 05:32:19 +00:00
profile.h MFppc64: 2010-07-13 05:32:19 +00:00
psl.h MFppc64: 2010-07-13 05:32:19 +00:00
pte.h MFppc64: 2010-07-13 05:32:19 +00:00
ptrace.h
reg.h MFppc64: 2010-07-13 05:32:19 +00:00
reloc.h
resource.h
runq.h MFppc64: 2010-07-13 05:32:19 +00:00
sc_machdep.h
setjmp.h
sf_buf.h Add support for 64-bit PowerPC CPUs operating in the 64-bit bridge mode 2009-04-04 00:22:44 +00:00
sigframe.h
signal.h
slb.h Restructure the way the copyin/copyout segment is stored to prevent a 2010-10-30 23:07:30 +00:00
smp.h Refactor timer management code with priority to one-shot operation mode. 2010-09-13 07:25:35 +00:00
spr.h MFppc64: 2010-07-13 05:32:19 +00:00
sr.h Restructure the way the copyin/copyout segment is stored to prevent a 2010-10-30 23:07:30 +00:00
stack.h
stdarg.h
sysarch.h Add sysarch.h. It's included by drm(4). 2009-04-04 22:05:36 +00:00
tlb.h Rework BookE pmap towards multi-core support. 2009-01-13 15:41:58 +00:00
trap_aim.h Handle vector assist traps without a kernel panic, by setting denormalized 2010-10-05 18:08:07 +00:00
trap_booke.h
trap.h
ucontext.h MFppc64: 2010-07-13 05:32:19 +00:00
varargs.h
vm.h Add support for memory attributes (pmap_mapdev_attr() and friends) on 2010-09-30 18:14:12 +00:00
vmparam.h Very rough first cut at NUMA support for the physical page allocator. For 2010-07-27 20:33:50 +00:00