PERFORCE change 121279 for review
Matt Jacob
mjacob at FreeBSD.org
Sat Jun 9 17:57:20 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=121279
Change 121279 by mjacob at mjexp on 2007/06/09 17:56:50
IFC
Affected files ...
.. //depot/projects/mjexp/sys/amd64/conf/GENERIC#11 integrate
.. //depot/projects/mjexp/sys/arm/arm/busdma_machdep.c#6 integrate
.. //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_atomic.c#1 branch
.. //depot/projects/mjexp/sys/compat/opensolaris/sys/atomic.h#1 branch
.. //depot/projects/mjexp/sys/conf/NOTES#23 integrate
.. //depot/projects/mjexp/sys/conf/options#21 integrate
.. //depot/projects/mjexp/sys/contrib/ipfilter/netinet/fil.c#3 integrate
.. //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/amd64/atomic.S#3 integrate
.. //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/i386/atomic.S#3 integrate
.. //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/ia64/atomic.S#1 branch
.. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#6 integrate
.. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/sys/asm_linkage.h#2 integrate
.. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/sys/atomic.h#2 delete
.. //depot/projects/mjexp/sys/dev/an/if_an.c#3 integrate
.. //depot/projects/mjexp/sys/dev/bge/if_bge.c#18 edit
.. //depot/projects/mjexp/sys/dev/cardbus/cardbus_cis.c#3 integrate
.. //depot/projects/mjexp/sys/dev/dcons/dcons.h#2 integrate
.. //depot/projects/mjexp/sys/dev/dcons/dcons_crom.c#3 integrate
.. //depot/projects/mjexp/sys/dev/dcons/dcons_os.c#5 integrate
.. //depot/projects/mjexp/sys/dev/dcons/dcons_os.h#2 integrate
.. //depot/projects/mjexp/sys/dev/firewire/firewire.c#8 integrate
.. //depot/projects/mjexp/sys/dev/firewire/fwohci.c#6 integrate
.. //depot/projects/mjexp/sys/dev/firewire/sbp_targ.c#6 integrate
.. //depot/projects/mjexp/sys/dev/hatm/if_hatm_intr.c#2 integrate
.. //depot/projects/mjexp/sys/dev/isp/isp_freebsd.c#29 integrate
.. //depot/projects/mjexp/sys/dev/mii/brgphy.c#12 integrate
.. //depot/projects/mjexp/sys/dev/nve/if_nve.c#4 integrate
.. //depot/projects/mjexp/sys/dev/pdq/pdq_ifsubr.c#2 integrate
.. //depot/projects/mjexp/sys/dev/pdq/pdqreg.h#2 integrate
.. //depot/projects/mjexp/sys/dev/sbsh/if_sbsh.c#4 integrate
.. //depot/projects/mjexp/sys/dev/sound/usb/uaudio.c#8 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_axe.c#6 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_cdce.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_cdcereg.h#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_cue.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_kue.c#4 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_rue.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_rum.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_udav.c#4 integrate
.. //depot/projects/mjexp/sys/dev/usb/if_ural.c#11 integrate
.. //depot/projects/mjexp/sys/dev/usb/uark.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/ubsa.c#7 integrate
.. //depot/projects/mjexp/sys/dev/usb/ubser.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/ucycom.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/udbp.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/ufm.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/ufoma.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/uftdi.c#4 integrate
.. //depot/projects/mjexp/sys/dev/usb/ugen.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/uhid.c#4 integrate
.. //depot/projects/mjexp/sys/dev/usb/uhub.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/uipaq.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/ukbd.c#6 integrate
.. //depot/projects/mjexp/sys/dev/usb/ulpt.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/umass.c#8 integrate
.. //depot/projects/mjexp/sys/dev/usb/umct.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/umodem.c#2 integrate
.. //depot/projects/mjexp/sys/dev/usb/ums.c#5 integrate
.. //depot/projects/mjexp/sys/dev/usb/uplcom.c#6 integrate
.. //depot/projects/mjexp/sys/dev/usb/urio.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/uscanner.c#4 integrate
.. //depot/projects/mjexp/sys/dev/usb/uvisor.c#3 integrate
.. //depot/projects/mjexp/sys/dev/usb/uvscom.c#5 integrate
.. //depot/projects/mjexp/sys/i386/conf/GENERIC#9 integrate
.. //depot/projects/mjexp/sys/ia64/conf/GENERIC#6 integrate
.. //depot/projects/mjexp/sys/ia64/ia64/machdep.c#11 integrate
.. //depot/projects/mjexp/sys/kern/init_main.c#12 integrate
.. //depot/projects/mjexp/sys/kern/kern_exit.c#9 integrate
.. //depot/projects/mjexp/sys/kern/kern_fork.c#13 integrate
.. //depot/projects/mjexp/sys/kern/kern_mutex.c#12 integrate
.. //depot/projects/mjexp/sys/kern/kern_prot.c#7 integrate
.. //depot/projects/mjexp/sys/kern/vfs_bio.c#13 integrate
.. //depot/projects/mjexp/sys/modules/zfs/Makefile#5 integrate
.. //depot/projects/mjexp/sys/net/pfil.h#2 integrate
.. //depot/projects/mjexp/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#2 integrate
.. //depot/projects/mjexp/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#2 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_asconf.c#11 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_auth.c#10 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_auth.h#5 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_input.c#14 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_output.c#16 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_pcb.c#15 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_timer.h#4 integrate
.. //depot/projects/mjexp/sys/netinet/sctp_uio.h#14 integrate
.. //depot/projects/mjexp/sys/netinet/sctputil.c#15 integrate
.. //depot/projects/mjexp/sys/netinet/tcp_hostcache.c#5 integrate
.. //depot/projects/mjexp/sys/pc98/conf/GENERIC#8 integrate
.. //depot/projects/mjexp/sys/powerpc/conf/GENERIC#7 integrate
.. //depot/projects/mjexp/sys/powerpc/powerpc/busdma_machdep.c#2 integrate
.. //depot/projects/mjexp/sys/security/audit/audit.c#10 integrate
.. //depot/projects/mjexp/sys/security/audit/audit.h#5 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_arg.c#8 integrate
.. //depot/projects/mjexp/sys/security/audit/audit_syscalls.c#9 integrate
.. //depot/projects/mjexp/sys/sparc64/conf/GENERIC#7 integrate
.. //depot/projects/mjexp/sys/sun4v/conf/GENERIC#6 integrate
.. //depot/projects/mjexp/sys/sys/proc.h#17 integrate
.. //depot/projects/mjexp/sys/sys/ucred.h#3 integrate
Differences ...
==== //depot/projects/mjexp/sys/amd64/conf/GENERIC#11 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.478 2007/05/28 14:38:42 simokawa Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.479 2007/06/08 20:29:05 rwatson Exp $
cpu HAMMER
ident GENERIC
@@ -60,6 +60,7 @@
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
+options AUDIT # Security event auditing
# Debugging for use in -current
options KDB # Enable kernel debugger support.
==== //depot/projects/mjexp/sys/arm/arm/busdma_machdep.c#6 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.31 2007/05/29 06:30:25 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.32 2007/06/07 21:51:09 cognet Exp $");
/*
* ARM bus dma support routines
@@ -674,8 +674,8 @@
CTR4(KTR_BUSDMA, "lowaddr= %d Maxmem= %d, boundary= %d, "
"alignment= %d", dmat->lowaddr, ptoa((vm_paddr_t)Maxmem),
dmat->boundary, dmat->alignment);
- CTR3(KTR_BUSDMA, "map= %p, nobouncemap= %p, pagesneeded= %d",
- map, &nobounce_dmamap, map->pagesneeded);
+ CTR2(KTR_BUSDMA, "map= %p, pagesneeded= %d",
+ map, map->pagesneeded);
/*
* Count the number of bounce pages
* needed in order to complete this transfer
@@ -1384,8 +1384,7 @@
struct bounce_page *bpage;
KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag"));
- KASSERT(map != NULL && map != &nobounce_dmamap,
- ("add_bounce_page: bad map %p", map));
+ KASSERT(map != NULL, ("add_bounce_page: bad map %p", map));
bz = dmat->bounce_zone;
if (map->pagesneeded == 0)
==== //depot/projects/mjexp/sys/conf/NOTES#23 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1428 2007/06/05 00:12:36 jeff Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1429 2007/06/08 21:36:52 attilio Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -226,11 +226,6 @@
# and WITNESS options.
options MUTEX_NOINLINE
-# MUTEX_WAKE_ALL changes the mutex unlock algorithm to wake all waiters
-# when a contested mutex is released rather than just awaking the highest
-# priority waiter.
-options MUTEX_WAKE_ALL
-
# RWLOCK_NOINLINE forces rwlock operations to call functions to perform each
# operation rather than inlining the simple cases. This can be used to
# shrink the size of the kernel text segment. Note that this behavior is
==== //depot/projects/mjexp/sys/conf/options#21 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.590 2007/06/05 00:12:36 jeff Exp $
+# $FreeBSD: src/sys/conf/options,v 1.591 2007/06/08 21:36:52 attilio Exp $
#
# On the handling of kernel options
#
@@ -123,7 +123,6 @@
MFI_DECODE_LOG opt_mfi.h
MPROF_BUFFERS opt_mprof.h
MPROF_HASH_SIZE opt_mprof.h
-MUTEX_WAKE_ALL
NO_ADAPTIVE_MUTEXES opt_adaptive_mutexes.h
NO_ADAPTIVE_RWLOCKS
NSWBUF_MIN opt_swap.h
==== //depot/projects/mjexp/sys/contrib/ipfilter/netinet/fil.c#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.51 2007/06/04 02:54:35 darrenr Exp $ */
+/* $FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.52 2007/06/09 09:28:36 darrenr Exp $ */
/*
* Copyright (C) 1993-2003 by Darren Reed.
@@ -155,7 +155,7 @@
#if !defined(lint)
static const char sccsid[] = "@(#)fil.c 1.36 6/5/96 (C) 1993-2000 Darren Reed";
-static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.51 2007/06/04 02:54:35 darrenr Exp $";
+static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.52 2007/06/09 09:28:36 darrenr Exp $";
/* static const char rcsid[] = "@(#)$Id: fil.c,v 2.243.2.78 2006/03/29 11:19:54 darrenr Exp $"; */
#endif
@@ -766,6 +766,7 @@
* source of the original packet then this packet is
* not correct.
*/
+ icmp6 = fin->fin_dp;
ip6 = (ip6_t *)((char *)icmp6 + ICMPERR_ICMPHLEN);
if (IP6_NEQ(&fin->fin_fi.fi_dst,
(i6addr_t *)&ip6->ip6_src))
==== //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/amd64/atomic.S#3 (text+ko) ====
@@ -31,296 +31,7 @@
#define _ASM
#include <sys/asm_linkage.h>
-#if defined(_KERNEL)
- /*
- * Legacy kernel interfaces; they will go away (eventually).
- */
- ANSI_PRAGMA_WEAK2(cas8,atomic_cas_8,function)
- ANSI_PRAGMA_WEAK2(cas32,atomic_cas_32,function)
- ANSI_PRAGMA_WEAK2(cas64,atomic_cas_64,function)
- ANSI_PRAGMA_WEAK2(caslong,atomic_cas_ulong,function)
- ANSI_PRAGMA_WEAK2(casptr,atomic_cas_ptr,function)
- ANSI_PRAGMA_WEAK2(atomic_and_long,atomic_and_ulong,function)
- ANSI_PRAGMA_WEAK2(atomic_or_long,atomic_or_ulong,function)
-#endif
-
- ENTRY(atomic_inc_8)
- ALTENTRY(atomic_inc_uchar)
- lock
- incb (%rdi)
- ret
- SET_SIZE(atomic_inc_uchar)
- SET_SIZE(atomic_inc_8)
-
- ENTRY(atomic_inc_16)
- ALTENTRY(atomic_inc_ushort)
- lock
- incw (%rdi)
- ret
- SET_SIZE(atomic_inc_ushort)
- SET_SIZE(atomic_inc_16)
-
- ENTRY(atomic_inc_32)
- ALTENTRY(atomic_inc_uint)
- lock
- incl (%rdi)
- ret
- SET_SIZE(atomic_inc_uint)
- SET_SIZE(atomic_inc_32)
-
- ENTRY(atomic_inc_64)
- ALTENTRY(atomic_inc_ulong)
- lock
- incq (%rdi)
- ret
- SET_SIZE(atomic_inc_ulong)
- SET_SIZE(atomic_inc_64)
-
- ENTRY(atomic_inc_8_nv)
- ALTENTRY(atomic_inc_uchar_nv)
- movb (%rdi), %al // %al = old value
-1:
- leaq 1(%rax), %rcx // %cl = new value
- lock
- cmpxchgb %cl, (%rdi) // try to stick it in
- jne 1b
- movzbl %cl, %eax // return new value
- ret
- SET_SIZE(atomic_inc_uchar_nv)
- SET_SIZE(atomic_inc_8_nv)
-
- ENTRY(atomic_inc_16_nv)
- ALTENTRY(atomic_inc_ushort_nv)
- movw (%rdi), %ax // %ax = old value
-1:
- leaq 1(%rax), %rcx // %cx = new value
- lock
- cmpxchgw %cx, (%rdi) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_inc_ushort_nv)
- SET_SIZE(atomic_inc_16_nv)
-
- ENTRY(atomic_inc_32_nv)
- ALTENTRY(atomic_inc_uint_nv)
- movl (%rdi), %eax // %eax = old value
-1:
- leaq 1(%rax), %rcx // %ecx = new value
- lock
- cmpxchgl %ecx, (%rdi) // try to stick it in
- jne 1b
- movl %ecx, %eax // return new value
- ret
- SET_SIZE(atomic_inc_uint_nv)
- SET_SIZE(atomic_inc_32_nv)
-
- ENTRY(atomic_inc_64_nv)
- ALTENTRY(atomic_inc_ulong_nv)
- movq (%rdi), %rax // %rax = old value
-1:
- leaq 1(%rax), %rcx // %rcx = new value
- lock
- cmpxchgq %rcx, (%rdi) // try to stick it in
- jne 1b
- movq %rcx, %rax // return new value
- ret
- SET_SIZE(atomic_inc_ulong_nv)
- SET_SIZE(atomic_inc_64_nv)
-
- ENTRY(atomic_dec_8)
- ALTENTRY(atomic_dec_uchar)
- lock
- decb (%rdi)
- ret
- SET_SIZE(atomic_dec_uchar)
- SET_SIZE(atomic_dec_8)
-
- ENTRY(atomic_dec_16)
- ALTENTRY(atomic_dec_ushort)
- lock
- decw (%rdi)
- ret
- SET_SIZE(atomic_dec_ushort)
- SET_SIZE(atomic_dec_16)
-
- ENTRY(atomic_dec_32)
- ALTENTRY(atomic_dec_uint)
- lock
- decl (%rdi)
- ret
- SET_SIZE(atomic_dec_uint)
- SET_SIZE(atomic_dec_32)
-
- ENTRY(atomic_dec_64)
- ALTENTRY(atomic_dec_ulong)
- lock
- decq (%rdi)
- ret
- SET_SIZE(atomic_dec_ulong)
- SET_SIZE(atomic_dec_64)
-
- ENTRY(atomic_dec_8_nv)
- ALTENTRY(atomic_dec_uchar_nv)
- movb (%rdi), %al // %al = old value
-1:
- leaq -1(%rax), %rcx // %cl = new value
- lock
- cmpxchgb %cl, (%rdi) // try to stick it in
- jne 1b
- movzbl %cl, %eax // return new value
- ret
- SET_SIZE(atomic_dec_uchar_nv)
- SET_SIZE(atomic_dec_8_nv)
-
- ENTRY(atomic_dec_16_nv)
- ALTENTRY(atomic_dec_ushort_nv)
- movw (%rdi), %ax // %ax = old value
-1:
- leaq -1(%rax), %rcx // %cx = new value
- lock
- cmpxchgw %cx, (%rdi) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_dec_ushort_nv)
- SET_SIZE(atomic_dec_16_nv)
-
- ENTRY(atomic_dec_32_nv)
- ALTENTRY(atomic_dec_uint_nv)
- movl (%rdi), %eax // %eax = old value
-1:
- leaq -1(%rax), %rcx // %ecx = new value
- lock
- cmpxchgl %ecx, (%rdi) // try to stick it in
- jne 1b
- movl %ecx, %eax // return new value
- ret
- SET_SIZE(atomic_dec_uint_nv)
- SET_SIZE(atomic_dec_32_nv)
-
- ENTRY(atomic_dec_64_nv)
- ALTENTRY(atomic_dec_ulong_nv)
- movq (%rdi), %rax // %rax = old value
-1:
- leaq -1(%rax), %rcx // %rcx = new value
- lock
- cmpxchgq %rcx, (%rdi) // try to stick it in
- jne 1b
- movq %rcx, %rax // return new value
- ret
- SET_SIZE(atomic_dec_ulong_nv)
- SET_SIZE(atomic_dec_64_nv)
-
- ENTRY(atomic_or_8)
- ALTENTRY(atomic_or_uchar)
- lock
- orb %sil, (%rdi)
- ret
- SET_SIZE(atomic_or_uchar)
- SET_SIZE(atomic_or_8)
-
- ENTRY(atomic_or_16)
- ALTENTRY(atomic_or_ushort)
- lock
- orw %si, (%rdi)
- ret
- SET_SIZE(atomic_or_ushort)
- SET_SIZE(atomic_or_16)
-
- ENTRY(atomic_or_32)
- ALTENTRY(atomic_or_uint)
- lock
- orl %esi, (%rdi)
- ret
- SET_SIZE(atomic_or_uint)
- SET_SIZE(atomic_or_32)
-
- ENTRY(atomic_or_64)
- ALTENTRY(atomic_or_ulong)
- lock
- orq %rsi, (%rdi)
- ret
- SET_SIZE(atomic_or_ulong)
- SET_SIZE(atomic_or_64)
-
- ENTRY(atomic_and_8)
- ALTENTRY(atomic_and_uchar)
- lock
- andb %sil, (%rdi)
- ret
- SET_SIZE(atomic_and_uchar)
- SET_SIZE(atomic_and_8)
-
- ENTRY(atomic_and_16)
- ALTENTRY(atomic_and_ushort)
- lock
- andw %si, (%rdi)
- ret
- SET_SIZE(atomic_and_ushort)
- SET_SIZE(atomic_and_16)
-
- ENTRY(atomic_and_32)
- ALTENTRY(atomic_and_uint)
- lock
- andl %esi, (%rdi)
- ret
- SET_SIZE(atomic_and_uint)
- SET_SIZE(atomic_and_32)
-
- ENTRY(atomic_and_64)
- ALTENTRY(atomic_and_ulong)
- lock
- andq %rsi, (%rdi)
- ret
- SET_SIZE(atomic_and_ulong)
- SET_SIZE(atomic_and_64)
-
- ENTRY(atomic_add_8_nv)
- ALTENTRY(atomic_add_char_nv)
- movb (%rdi), %al // %al = old value
-1:
- movb %sil, %cl
- addb %al, %cl // %cl = new value
- lock
- cmpxchgb %cl, (%rdi) // try to stick it in
- jne 1b
- movzbl %cl, %eax // return new value
- ret
- SET_SIZE(atomic_add_char_nv)
- SET_SIZE(atomic_add_8_nv)
-
- ENTRY(atomic_add_16_nv)
- ALTENTRY(atomic_add_short_nv)
- movw (%rdi), %ax // %ax = old value
-1:
- movw %si, %cx
- addw %ax, %cx // %cx = new value
- lock
- cmpxchgw %cx, (%rdi) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_add_short_nv)
- SET_SIZE(atomic_add_16_nv)
-
- ENTRY(atomic_add_32_nv)
- ALTENTRY(atomic_add_int_nv)
- movl (%rdi), %eax
-1:
- movl %esi, %ecx
- addl %eax, %ecx
- lock
- cmpxchgl %ecx, (%rdi)
- jne 1b
- movl %ecx, %eax
- ret
- SET_SIZE(atomic_add_int_nv)
- SET_SIZE(atomic_add_32_nv)
-
ENTRY(atomic_add_64_nv)
- ALTENTRY(atomic_add_ptr_nv)
- ALTENTRY(atomic_add_long_nv)
movq (%rdi), %rax
1:
movq %rsi, %rcx
@@ -330,68 +41,9 @@
jne 1b
movq %rcx, %rax
ret
- SET_SIZE(atomic_add_long_nv)
- SET_SIZE(atomic_add_ptr_nv)
SET_SIZE(atomic_add_64_nv)
- ENTRY(atomic_and_8_nv)
- ALTENTRY(atomic_and_uchar_nv)
- movb (%rdi), %al // %al = old value
-1:
- movb %sil, %cl
- andb %al, %cl // %cl = new value
- lock
- cmpxchgb %cl, (%rdi) // try to stick it in
- jne 1b
- movzbl %cl, %eax // return new value
- ret
- SET_SIZE(atomic_and_uchar_nv)
- SET_SIZE(atomic_and_8_nv)
-
- ENTRY(atomic_and_16_nv)
- ALTENTRY(atomic_and_ushort_nv)
- movw (%rdi), %ax // %ax = old value
-1:
- movw %si, %cx
- andw %ax, %cx // %cx = new value
- lock
- cmpxchgw %cx, (%rdi) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_and_ushort_nv)
- SET_SIZE(atomic_and_16_nv)
-
- ENTRY(atomic_and_32_nv)
- ALTENTRY(atomic_and_uint_nv)
- movl (%rdi), %eax
-1:
- movl %esi, %ecx
- andl %eax, %ecx
- lock
- cmpxchgl %ecx, (%rdi)
- jne 1b
- movl %ecx, %eax
- ret
- SET_SIZE(atomic_and_uint_nv)
- SET_SIZE(atomic_and_32_nv)
-
- ENTRY(atomic_and_64_nv)
- ALTENTRY(atomic_and_ulong_nv)
- movq (%rdi), %rax
-1:
- movq %rsi, %rcx
- andq %rax, %rcx
- lock
- cmpxchgq %rcx, (%rdi)
- jne 1b
- movq %rcx, %rax
- ret
- SET_SIZE(atomic_and_ulong_nv)
- SET_SIZE(atomic_and_64_nv)
-
ENTRY(atomic_or_8_nv)
- ALTENTRY(atomic_or_uchar_nv)
movb (%rdi), %al // %al = old value
1:
movb %sil, %cl
@@ -401,160 +53,16 @@
jne 1b
movzbl %cl, %eax // return new value
ret
- SET_SIZE(atomic_and_uchar_nv)
- SET_SIZE(atomic_and_8_nv)
+ SET_SIZE(atomic_or_8_nv)
- ENTRY(atomic_or_16_nv)
- ALTENTRY(atomic_or_ushort_nv)
- movw (%rdi), %ax // %ax = old value
-1:
- movw %si, %cx
- orw %ax, %cx // %cx = new value
- lock
- cmpxchgw %cx, (%rdi) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_or_ushort_nv)
- SET_SIZE(atomic_or_16_nv)
-
- ENTRY(atomic_or_32_nv)
- ALTENTRY(atomic_or_uint_nv)
- movl (%rdi), %eax
-1:
- movl %esi, %ecx
- orl %eax, %ecx
- lock
- cmpxchgl %ecx, (%rdi)
- jne 1b
- movl %ecx, %eax
- ret
- SET_SIZE(atomic_or_uint_nv)
- SET_SIZE(atomic_or_32_nv)
-
- ENTRY(atomic_or_64_nv)
- ALTENTRY(atomic_or_ulong_nv)
- movq (%rdi), %rax
-1:
- movq %rsi, %rcx
- orq %rax, %rcx
- lock
- cmpxchgq %rcx, (%rdi)
- jne 1b
- movq %rcx, %rax
- ret
- SET_SIZE(atomic_or_ulong_nv)
- SET_SIZE(atomic_or_64_nv)
-
- ENTRY(atomic_cas_8)
- ALTENTRY(atomic_cas_uchar)
- movzbl %sil, %eax
- lock
- cmpxchgb %dl, (%rdi)
- ret
- SET_SIZE(atomic_cas_uchar)
- SET_SIZE(atomic_cas_8)
-
- ENTRY(atomic_cas_16)
- ALTENTRY(atomic_cas_ushort)
- movzwl %si, %eax
- lock
- cmpxchgw %dx, (%rdi)
- ret
- SET_SIZE(atomic_cas_ushort)
- SET_SIZE(atomic_cas_16)
-
- ENTRY(atomic_cas_32)
- ALTENTRY(atomic_cas_uint)
- movl %esi, %eax
- lock
- cmpxchgl %edx, (%rdi)
- ret
- SET_SIZE(atomic_cas_uint)
- SET_SIZE(atomic_cas_32)
-
ENTRY(atomic_cas_64)
- ALTENTRY(atomic_cas_ulong)
- ALTENTRY(atomic_cas_ptr)
movq %rsi, %rax
lock
cmpxchgq %rdx, (%rdi)
ret
- SET_SIZE(atomic_cas_ptr)
- SET_SIZE(atomic_cas_ulong)
SET_SIZE(atomic_cas_64)
- ENTRY(atomic_swap_8)
- ALTENTRY(atomic_swap_uchar)
- movzbl %sil, %eax
- lock
- xchgb %al, (%rdi)
- ret
- SET_SIZE(atomic_swap_uchar)
- SET_SIZE(atomic_swap_8)
-
- ENTRY(atomic_swap_16)
- ALTENTRY(atomic_swap_ushort)
- movzwl %si, %eax
- lock
- xchgw %ax, (%rdi)
- ret
- SET_SIZE(atomic_swap_ushort)
- SET_SIZE(atomic_swap_16)
-
- ENTRY(atomic_swap_32)
- ALTENTRY(atomic_swap_uint)
- movl %esi, %eax
- lock
- xchgl %eax, (%rdi)
- ret
- SET_SIZE(atomic_swap_uint)
- SET_SIZE(atomic_swap_32)
-
- ENTRY(atomic_swap_64)
- ALTENTRY(atomic_swap_ulong)
- ALTENTRY(atomic_swap_ptr)
- movq %rsi, %rax
- lock
- xchgq %rax, (%rdi)
- ret
- SET_SIZE(atomic_swap_ptr)
- SET_SIZE(atomic_swap_ulong)
- SET_SIZE(atomic_swap_64)
-
- ENTRY(atomic_set_long_excl)
- xorl %eax, %eax
- lock
- btsq %rsi, (%rdi)
- jnc 1f
- decl %eax // return -1
-1:
- ret
- SET_SIZE(atomic_set_long_excl)
-
- ENTRY(atomic_clear_long_excl)
- xorl %eax, %eax
- lock
- btrq %rsi, (%rdi)
- jc 1f
- decl %eax // return -1
-1:
- ret
- SET_SIZE(atomic_clear_long_excl)
-
- ENTRY(membar_enter)
- ALTENTRY(membar_exit)
- mfence
- ret
- SET_SIZE(membar_exit)
- SET_SIZE(membar_enter)
-
ENTRY(membar_producer)
sfence
ret
SET_SIZE(membar_producer)
-
- ENTRY(membar_consumer)
- lfence
- ret
- SET_SIZE(membar_consumer)
==== //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/i386/atomic.S#3 (text+ko) ====
@@ -31,327 +31,6 @@
#define _ASM
#include <sys/asm_linkage.h>
-#if defined(_KERNEL)
- /*
- * Legacy kernel interfaces; they will go away (eventually).
- */
- ANSI_PRAGMA_WEAK2(cas8,atomic_cas_8,function)
- ANSI_PRAGMA_WEAK2(cas32,atomic_cas_32,function)
- ANSI_PRAGMA_WEAK2(cas64,atomic_cas_64,function)
- ANSI_PRAGMA_WEAK2(caslong,atomic_cas_ulong,function)
- ANSI_PRAGMA_WEAK2(casptr,atomic_cas_ptr,function)
- ANSI_PRAGMA_WEAK2(atomic_and_long,atomic_and_ulong,function)
- ANSI_PRAGMA_WEAK2(atomic_or_long,atomic_or_ulong,function)
-#endif
-
- ENTRY(atomic_inc_8)
- ALTENTRY(atomic_inc_uchar)
- movl 4(%esp), %eax
- lock
- incb (%eax)
- ret
- SET_SIZE(atomic_inc_uchar)
- SET_SIZE(atomic_inc_8)
-
- ENTRY(atomic_inc_16)
- ALTENTRY(atomic_inc_ushort)
- movl 4(%esp), %eax
- lock
- incw (%eax)
- ret
- SET_SIZE(atomic_inc_ushort)
- SET_SIZE(atomic_inc_16)
-
- ENTRY(atomic_inc_32)
- ALTENTRY(atomic_inc_uint)
- ALTENTRY(atomic_inc_ulong)
- movl 4(%esp), %eax
- lock
- incl (%eax)
- ret
- SET_SIZE(atomic_inc_ulong)
- SET_SIZE(atomic_inc_uint)
- SET_SIZE(atomic_inc_32)
-
- ENTRY(atomic_inc_8_nv)
- ALTENTRY(atomic_inc_uchar_nv)
- movl 4(%esp), %edx // %edx = target address
- movb (%edx), %al // %al = old value
-1:
- leal 1(%eax), %ecx // %cl = new value
- lock
- cmpxchgb %cl, (%edx) // try to stick it in
- jne 1b
- movzbl %cl, %eax // return new value
- ret
- SET_SIZE(atomic_inc_uchar_nv)
- SET_SIZE(atomic_inc_8_nv)
-
- ENTRY(atomic_inc_16_nv)
- ALTENTRY(atomic_inc_ushort_nv)
- movl 4(%esp), %edx // %edx = target address
- movw (%edx), %ax // %ax = old value
-1:
- leal 1(%eax), %ecx // %cx = new value
- lock
- cmpxchgw %cx, (%edx) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_inc_ushort_nv)
- SET_SIZE(atomic_inc_16_nv)
-
- ENTRY(atomic_inc_32_nv)
- ALTENTRY(atomic_inc_uint_nv)
- ALTENTRY(atomic_inc_ulong_nv)
- movl 4(%esp), %edx // %edx = target address
- movl (%edx), %eax // %eax = old value
-1:
- leal 1(%eax), %ecx // %ecx = new value
- lock
- cmpxchgl %ecx, (%edx) // try to stick it in
- jne 1b
- movl %ecx, %eax // return new value
- ret
- SET_SIZE(atomic_inc_ulong_nv)
- SET_SIZE(atomic_inc_uint_nv)
- SET_SIZE(atomic_inc_32_nv)
-
- ENTRY(atomic_inc_64)
- ALTENTRY(atomic_inc_64_nv)
- pushl %edi
- pushl %ebx
- movl 12(%esp), %edi // %edi = target address
- movl (%edi), %eax
- movl 4(%edi), %edx // %edx:%eax = old value
-1:
- xorl %ebx, %ebx
- xorl %ecx, %ecx
- incl %ebx // %ecx:%ebx = 1
- addl %eax, %ebx
- adcl %edx, %ecx // add in the carry from inc
- lock
- cmpxchg8b (%edi) // try to stick it in
- jne 1b
- movl %ebx, %eax
- movl %ecx, %edx // return new value
- popl %ebx
- popl %edi
- ret
- SET_SIZE(atomic_inc_64_nv)
- SET_SIZE(atomic_inc_64)
-
- ENTRY(atomic_dec_8)
- ALTENTRY(atomic_dec_uchar)
- movl 4(%esp), %eax
- lock
- decb (%eax)
- ret
- SET_SIZE(atomic_dec_uchar)
- SET_SIZE(atomic_dec_8)
-
- ENTRY(atomic_dec_16)
- ALTENTRY(atomic_dec_ushort)
- movl 4(%esp), %eax
- lock
- decw (%eax)
- ret
- SET_SIZE(atomic_dec_ushort)
- SET_SIZE(atomic_dec_16)
-
- ENTRY(atomic_dec_32)
- ALTENTRY(atomic_dec_uint)
- ALTENTRY(atomic_dec_ulong)
- movl 4(%esp), %eax
- lock
- decl (%eax)
- ret
- SET_SIZE(atomic_dec_ulong)
- SET_SIZE(atomic_dec_uint)
- SET_SIZE(atomic_dec_32)
-
- ENTRY(atomic_dec_8_nv)
- ALTENTRY(atomic_dec_uchar_nv)
- movl 4(%esp), %edx // %edx = target address
- movb (%edx), %al // %al = old value
-1:
- leal -1(%eax), %ecx // %cl = new value
- lock
- cmpxchgb %cl, (%edx) // try to stick it in
- jne 1b
- movzbl %cl, %eax // return new value
- ret
- SET_SIZE(atomic_dec_uchar_nv)
- SET_SIZE(atomic_dec_8_nv)
-
- ENTRY(atomic_dec_16_nv)
- ALTENTRY(atomic_dec_ushort_nv)
- movl 4(%esp), %edx // %edx = target address
- movw (%edx), %ax // %ax = old value
-1:
- leal -1(%eax), %ecx // %cx = new value
- lock
- cmpxchgw %cx, (%edx) // try to stick it in
- jne 1b
- movzwl %cx, %eax // return new value
- ret
- SET_SIZE(atomic_dec_ushort_nv)
- SET_SIZE(atomic_dec_16_nv)
-
- ENTRY(atomic_dec_32_nv)
- ALTENTRY(atomic_dec_uint_nv)
- ALTENTRY(atomic_dec_ulong_nv)
- movl 4(%esp), %edx // %edx = target address
- movl (%edx), %eax // %eax = old value
-1:
- leal -1(%eax), %ecx // %ecx = new value
- lock
- cmpxchgl %ecx, (%edx) // try to stick it in
- jne 1b
- movl %ecx, %eax // return new value
- ret
- SET_SIZE(atomic_dec_ulong_nv)
- SET_SIZE(atomic_dec_uint_nv)
- SET_SIZE(atomic_dec_32_nv)
-
- ENTRY(atomic_dec_64)
- ALTENTRY(atomic_dec_64_nv)
- pushl %edi
- pushl %ebx
- movl 12(%esp), %edi // %edi = target address
- movl (%edi), %eax
- movl 4(%edi), %edx // %edx:%eax = old value
-1:
- xorl %ebx, %ebx
- xorl %ecx, %ecx
- not %ecx
- not %ebx // %ecx:%ebx = -1
- addl %eax, %ebx
- adcl %edx, %ecx // add in the carry from inc
- lock
- cmpxchg8b (%edi) // try to stick it in
- jne 1b
- movl %ebx, %eax
- movl %ecx, %edx // return new value
- popl %ebx
- popl %edi
- ret
- SET_SIZE(atomic_dec_64_nv)
- SET_SIZE(atomic_dec_64)
-
- ENTRY(atomic_or_8)
- ALTENTRY(atomic_or_uchar)
- movl 4(%esp), %eax
- movb 8(%esp), %cl
- lock
- orb %cl, (%eax)
- ret
- SET_SIZE(atomic_or_uchar)
- SET_SIZE(atomic_or_8)
-
- ENTRY(atomic_or_16)
- ALTENTRY(atomic_or_ushort)
- movl 4(%esp), %eax
- movw 8(%esp), %cx
- lock
- orw %cx, (%eax)
- ret
- SET_SIZE(atomic_or_ushort)
- SET_SIZE(atomic_or_16)
-
- ENTRY(atomic_or_32)
- ALTENTRY(atomic_or_uint)
- ALTENTRY(atomic_or_ulong)
- movl 4(%esp), %eax
- movl 8(%esp), %ecx
- lock
- orl %ecx, (%eax)
- ret
- SET_SIZE(atomic_or_ulong)
- SET_SIZE(atomic_or_uint)
- SET_SIZE(atomic_or_32)
-
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list