freebsd-nq/sys/amd64/include
Matthew Dillon cd906fe3de Optimize two cases in the MP locking code. First, it is not necessary
to use a locked cmpexg when unlocking a lock that we already hold, since
    nobody else can touch the lock while we hold it.  Second, it is not
    necessary to use a locked cmpexg when locking a lock that we already
    hold, for the same reason.  These changes will allow MP locks to be used
    recursively without impacting performance.

    Modify two procedures that are called only by assembly and are already
    NOPROF entries to pass a critical argument in %edx instead of on the
    stack, removing a significant amount of code from the critical path
    as a consequence.

Reviewed by:	Alfred Perlstein <bright@wintelcom.net>, Peter Wemm <peter@netplex.com.au>
1999-11-19 16:49:30 +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 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +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 i8254_restore is called from apm_default_resume() to reload 1999-10-30 14:56:01 +00:00
cpu.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
cpufunc.h Segment registers can be read(write) to(from) memory locations as well as 1999-11-15 19:45:19 +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 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +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 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +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 Add a per-signal flag to mark handlers registered with osigaction, so we 1999-10-11 20:33:17 +00:00
mptable.h Eliminate remaining part of incorrect PCI bus numbering sanity check on systems with more than one PCI bus. 1999-10-15 21:38:15 +00:00
npx.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pcb_ext.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pcb.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pci_cfgreg.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pcpu.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pmap.h Make pmap_mapdev() deal with non-page-aligned requests. 1999-09-11 20:31:32 +00:00
proc.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
profile.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
psl.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ptrace.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
reg.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +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 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
setjmp.h sigset_t change (part 3 of 5) 1999-09-29 15:06:27 +00:00
sigframe.h Change the type of sf_addr in struct {o}sigframe from char* to 1999-11-12 11:21:34 +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 Fix from Tor so that if we enter the debugger in the tristate going to 1999-09-25 18:36:31 +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 Some reorganization of sysarch() interface: 1999-09-02 20:59:50 +00:00
trap.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tss.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +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