freebsd-nq/sys/amd64/include
Matthew Dillon 36e9f877df Commit major SMP cleanups and move the BGL (big giant lock) in the
syscall path inward.  A system call may select whether it needs the MP
    lock or not (the default being that it does need it).

    A great deal of conditional SMP code for various deadended experiments
    has been removed.  'cil' and 'cml' have been removed entirely, and the
    locking around the cpl has been removed.  The conditional
    separately-locked fast-interrupt code has been removed, meaning that
    interrupts must hold the CPL now (but they pretty much had to anyway).
    Another reason for doing this is that the original separate-lock for
    interrupts just doesn't apply to the interrupt thread mechanism being
    contemplated.

    Modifications to the cpl may now ONLY occur while holding the MP
    lock.  For example, if an otherwise MP safe syscall needs to mess with
    the cpl, it must hold the MP lock for the duration and must (as usual)
    save/restore the cpl in a nested fashion.

    This is precursor work for the real meat coming later: avoiding having
    to hold the MP lock for common syscalls and I/O's and interrupt threads.
    It is expected that the spl mechanisms and new interrupt threading
    mechanisms will be able to run in tandem, allowing a slow piecemeal
    transition to occur.

    This patch should result in a moderate performance improvement due to
    the considerable amount of code that has been removed from the critical
    path, especially the simplification of the spl*() calls.  The real
    performance gains will come later.

Approved by: jkh
Reviewed by: current, bde (exception.s)
Some work taken from: luoqi's patch
2000-03-28 07:16:37 +00:00
..
pc $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
apicreg.h Optimize two cases in the MP locking code. First, it is not necessary 1999-11-19 16:49:30 +00:00
asm.h Fixed the profiling version ALTENTRY(). Again. The previous version 2000-01-25 09:01:55 +00:00
asmacros.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
atomic.h Use the rev 1.1.2.1 code from RELENG_3 for atomic operations rather 1999-10-04 16:24:08 +00:00
bus_amd64.h Fix clobbers so that GENERIC may compile with GCC 2.95.2. 1999-11-14 03:36:34 +00:00
bus_at386.h Fix clobbers so that GENERIC may compile with GCC 2.95.2. 1999-11-14 03:36:34 +00:00
bus_dma.h Fix clobbers so that GENERIC may compile with GCC 2.95.2. 1999-11-14 03:36:34 +00:00
bus_memio.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus_pio.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus.h Fix clobbers so that GENERIC may compile with GCC 2.95.2. 1999-11-14 03:36:34 +00:00
clock.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
cpu.h Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
cpufunc.h Fix an __asm operand constraint which broke the -O3 and -O0 builds. 2000-02-21 13:06:50 +00:00
cputypes.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
db_machdep.h Fix style bug: order includes 1999-10-04 13:55:35 +00:00
elf.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
exec.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
float.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
floatingpoint.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
fpu.h Change the default FPU control word so that exceptions for new 2000-03-10 17:56:33 +00:00
frame.h sigset_t change (part 3 of 5) 1999-09-29 15:06:27 +00:00
ieeefp.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
md_var.h Don't forget to reset the hardware debug registers when a process that 2000-02-20 20:51:23 +00:00
mptable.h Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
npx.h Change the default FPU control word so that exceptions for new 2000-03-10 17:56:33 +00:00
pcb_ext.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
pcb.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
pci_cfgreg.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pcpu.h Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
pmap.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
proc.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
profile.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
psl.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ptrace.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
reg.h Document the support in the kernel for hardware debug registers on the 2000-02-12 18:33:54 +00:00
reloc.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
resource.h * Implement bus_set/get/delete_resource for pci. 1999-10-14 21:38:33 +00:00
segments.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
setjmp.h sigset_t change (part 3 of 5) 1999-09-29 15:06:27 +00:00
sigframe.h Fix type of sf_addr. 1999-12-04 10:40:24 +00:00
signal.h Reserve space for FPU state in struct sigcontext. Fix some style bugs 1999-11-12 13:52:11 +00:00
smp.h ISA device drivers use the ISA source interrupt number in locations where 2000-01-04 22:24:59 +00:00
specialreg.h Add the CR4 values for P3 SIMD enabling support. FXSR tells the cpu that 1999-09-10 15:51:44 +00:00
sysarch.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
trap.h Exchange numerical values for FPE_INTDIV and FPE_INTOVF, so that they 2000-03-20 10:22:19 +00:00
tss.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ucontext.h Add a per-signal flag to mark handlers registered with osigaction, so we 1999-10-11 20:33:17 +00:00
varargs.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
vmparam.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00