From owner-p4-projects@FreeBSD.ORG Fri Jun 24 18:11:04 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4021C16A420; Fri, 24 Jun 2005 18:11:04 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 16D3316A41C for ; Fri, 24 Jun 2005 18:11:04 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E179243D1F for ; Fri, 24 Jun 2005 18:11:03 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j5OIB3nY070209 for ; Fri, 24 Jun 2005 18:11:03 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j5OIB3aW070199 for perforce@freebsd.org; Fri, 24 Jun 2005 18:11:03 GMT (envelope-from jhb@freebsd.org) Date: Fri, 24 Jun 2005 18:11:03 GMT Message-Id: <200506241811.j5OIB3aW070199@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 78928 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jun 2005 18:11:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=78928 Change 78928 by jhb@jhb_slimer on 2005/06/24 18:10:31 IFC @78925. Affected files ... .. //depot/projects/smpng/sys/alpha/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/amd64/amd64/exception.S#13 integrate .. //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#12 integrate .. //depot/projects/smpng/sys/amd64/amd64/local_apic.c#15 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#41 integrate .. //depot/projects/smpng/sys/amd64/amd64/support.S#13 integrate .. //depot/projects/smpng/sys/amd64/amd64/trap.c#27 integrate .. //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#27 integrate .. //depot/projects/smpng/sys/amd64/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#8 integrate .. //depot/projects/smpng/sys/arm/arm/db_interface.c#5 integrate .. //depot/projects/smpng/sys/arm/arm/pmap.c#18 integrate .. //depot/projects/smpng/sys/arm/arm/trap.c#12 integrate .. //depot/projects/smpng/sys/arm/arm/vm_machdep.c#13 integrate .. //depot/projects/smpng/sys/arm/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/arm/include/atomic.h#13 integrate .. //depot/projects/smpng/sys/arm/xscale/i80321/iq31244_machdep.c#12 integrate .. //depot/projects/smpng/sys/cam/cam_xpt.c#30 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#20 integrate .. //depot/projects/smpng/sys/compat/linux/linux_stats.c#28 integrate .. //depot/projects/smpng/sys/conf/NOTES#99 integrate .. //depot/projects/smpng/sys/conf/files#142 integrate .. //depot/projects/smpng/sys/conf/files.i386#84 integrate .. //depot/projects/smpng/sys/conf/files.pc98#75 integrate .. //depot/projects/smpng/sys/conf/options#100 integrate .. //depot/projects/smpng/sys/conf/options.i386#48 integrate .. //depot/projects/smpng/sys/conf/options.pc98#47 integrate .. //depot/projects/smpng/sys/contrib/ipfilter/netinet/fil.c#18 integrate .. //depot/projects/smpng/sys/contrib/ipfilter/netinet/ip_htable.c#2 integrate .. //depot/projects/smpng/sys/dev/acpi_support/acpi_ibm.c#4 integrate .. //depot/projects/smpng/sys/dev/aic/aic_pccard.c#10 integrate .. //depot/projects/smpng/sys/dev/amr/amr.c#31 integrate .. //depot/projects/smpng/sys/dev/an/if_an_pccard.c#16 integrate .. //depot/projects/smpng/sys/dev/ata/ata-card.c#27 integrate .. //depot/projects/smpng/sys/dev/awi/if_awi_pccard.c#15 integrate .. //depot/projects/smpng/sys/dev/cs/if_cs_pccard.c#12 integrate .. //depot/projects/smpng/sys/dev/ed/if_ed_pccard.c#29 integrate .. //depot/projects/smpng/sys/dev/ep/if_ep_pccard.c#18 integrate .. //depot/projects/smpng/sys/dev/ex/if_ex_pccard.c#10 integrate .. //depot/projects/smpng/sys/dev/fatm/if_fatm.c#13 integrate .. //depot/projects/smpng/sys/dev/fdc/fdc_pccard.c#7 integrate .. //depot/projects/smpng/sys/dev/fe/if_fe_pccard.c#14 integrate .. //depot/projects/smpng/sys/dev/hatm/if_hatmvar.h#9 integrate .. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_amd.c#3 integrate .. //depot/projects/smpng/sys/dev/iwi/if_iwi.c#3 integrate .. //depot/projects/smpng/sys/dev/ncv/ncr53c500_pccard.c#18 integrate .. //depot/projects/smpng/sys/dev/nsp/nsp_pccard.c#14 integrate .. //depot/projects/smpng/sys/dev/owi/if_owi_pccard.c#5 integrate .. //depot/projects/smpng/sys/dev/pccard/pccarddevs#45 integrate .. //depot/projects/smpng/sys/dev/pccard/pccardvar.h#21 integrate .. //depot/projects/smpng/sys/dev/ral/if_ral_pccard.c#2 integrate .. //depot/projects/smpng/sys/dev/sn/if_sn_pccard.c#14 integrate .. //depot/projects/smpng/sys/dev/stg/tmc18c30_pccard.c#15 integrate .. //depot/projects/smpng/sys/dev/uart/uart_cpu_alpha.c#7 integrate .. //depot/projects/smpng/sys/dev/utopia/utopia.c#10 integrate .. //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#34 integrate .. //depot/projects/smpng/sys/dev/xe/if_xe_pccard.c#18 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_fs.h#2 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_fs_sb.h#2 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_linux_balloc.c#2 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_linux_ialloc.c#2 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/ext2_vfsops.c#2 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/i386-bitops.h#2 integrate .. //depot/projects/smpng/sys/gnu/fs/ext2fs/sparc64-bitops.h#2 integrate .. //depot/projects/smpng/sys/gnu/fs/reiserfs/README#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_fs.h#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_fs_i.h#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_fs_sb.h#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_hashes.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_inode.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_item_ops.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_mount.h#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_namei.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_prints.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_stree.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_vfsops.c#1 branch .. //depot/projects/smpng/sys/gnu/fs/reiserfs/reiserfs_vnops.c#1 branch .. //depot/projects/smpng/sys/gnu/reiserfs/README#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_fs.h#3 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_fs_i.h#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_fs_sb.h#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_hashes.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_inode.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_item_ops.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_mount.h#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_namei.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_prints.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_stree.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_vfsops.c#2 delete .. //depot/projects/smpng/sys/gnu/reiserfs/reiserfs_vnops.c#2 delete .. //depot/projects/smpng/sys/i386/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/i386/conf/NOTES#102 integrate .. //depot/projects/smpng/sys/i386/i386/local_apic.c#31 integrate .. //depot/projects/smpng/sys/i386/i386/sys_machdep.c#43 integrate .. //depot/projects/smpng/sys/i386/i386/trap.c#78 integrate .. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#69 integrate .. //depot/projects/smpng/sys/i4b/driver/i4b_ipr.c#22 integrate .. //depot/projects/smpng/sys/i4b/driver/i4b_isppp.c#14 integrate .. //depot/projects/smpng/sys/ia64/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/kern/imgact_shell.c#11 integrate .. //depot/projects/smpng/sys/kern/kern_clock.c#40 integrate .. //depot/projects/smpng/sys/kern/kern_exec.c#86 integrate .. //depot/projects/smpng/sys/kern/kern_intr.c#68 integrate .. //depot/projects/smpng/sys/kern/kern_jail.c#40 integrate .. //depot/projects/smpng/sys/kern/kern_kse.c#22 integrate .. //depot/projects/smpng/sys/kern/kern_ktrace.c#45 integrate .. //depot/projects/smpng/sys/kern/kern_malloc.c#36 integrate .. //depot/projects/smpng/sys/kern/kern_mbuf.c#6 integrate .. //depot/projects/smpng/sys/kern/sched_4bsd.c#52 integrate .. //depot/projects/smpng/sys/kern/sched_ule.c#58 integrate .. //depot/projects/smpng/sys/kern/subr_disk.c#26 integrate .. //depot/projects/smpng/sys/kern/vfs_cache.c#29 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#104 integrate .. //depot/projects/smpng/sys/kern/vfs_syscalls.c#91 integrate .. //depot/projects/smpng/sys/modules/Makefile#98 integrate .. //depot/projects/smpng/sys/modules/libalias/Makefile#2 integrate .. //depot/projects/smpng/sys/modules/reiserfs/Makefile#2 integrate .. //depot/projects/smpng/sys/net/if.c#67 integrate .. //depot/projects/smpng/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c#10 integrate .. //depot/projects/smpng/sys/netinet/in_gif.c#15 integrate .. //depot/projects/smpng/sys/netinet/ip_fw2.c#54 integrate .. //depot/projects/smpng/sys/netinet/ip_mroute.c#40 integrate .. //depot/projects/smpng/sys/netinet/libalias/alias_util.c#2 integrate .. //depot/projects/smpng/sys/netinet/tcp_sack.c#12 integrate .. //depot/projects/smpng/sys/netinet6/in6_gif.c#10 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_bio.c#42 integrate .. //depot/projects/smpng/sys/pc98/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/pc98/conf/NOTES#39 integrate .. //depot/projects/smpng/sys/powerpc/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/sparc64/conf/.cvsignore#1 branch .. //depot/projects/smpng/sys/sys/mutex.h#57 integrate .. //depot/projects/smpng/sys/vm/uma_int.h#27 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/exception.S#13 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.123 2005/05/22 23:28:17 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.124 2005/06/24 00:38:36 peter Exp $ */ #include "opt_atpic.h" @@ -119,7 +119,7 @@ subq $TF_ERR,%rsp; \ movq $(a),TF_TRAPNO(%rsp) ; \ movq $0,TF_ADDR(%rsp) ; \ - jmp alltraps_noen + jmp alltraps IDTVEC(tss) TRAP_ERR(T_TSSFLT) IDTVEC(missing) ==== //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#12 (text+ko) ==== @@ -26,11 +26,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.14 2005/04/12 23:18:53 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.15 2005/06/24 00:45:01 peter Exp $ */ /* - * Machine dependent interrupt code for i386. For the i386, we have to + * Machine dependent interrupt code for amd64. For amd64, we have to * deal with different PICs. Thus, we use the passed in vector to lookup * an interrupt source associated with that vector. The interrupt source * describes which PIC the source belongs to and includes methods to handle ==== //depot/projects/smpng/sys/amd64/amd64/local_apic.c#15 (text+ko) ==== @@ -32,7 +32,9 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.15 2005/05/22 16:32:02 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.17 2005/06/24 00:45:01 peter Exp $"); + +#include "opt_hwpmc_hooks.h" #include #include @@ -837,7 +839,7 @@ #ifdef SMP /* * Inter Processor Interrupt functions. The lapic_ipi_*() functions are - * private to the sys/i386 code. The public interface for the rest of the + * private to the sys/amd64 code. The public interface for the rest of the * kernel is defined in mp_machdep.c. */ int ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#41 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.636 2005/05/05 18:19:53 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.637 2005/06/24 00:45:01 peter Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -661,7 +661,7 @@ CTLFLAG_RW, &wall_cmos_clock, 0, ""); /* - * Initialize 386 and configure to run kernel + * Initialize amd64 and configure to run kernel */ /* ==== //depot/projects/smpng/sys/amd64/amd64/support.S#13 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.114 2005/04/10 18:12:07 alc Exp $ + * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.115 2005/06/24 00:45:01 peter Exp $ */ #include "opt_ddb.h" @@ -201,14 +201,8 @@ /* copyout and fubyte family */ /*****************************************************************************/ /* - * Access user memory from inside the kernel. These routines and possibly - * the math- and DOS emulators should be the only places that do this. - * - * We have to access the memory with user's permissions, so use a segment - * selector with RPL 3. For writes to user space we have to additionally - * check the PTE for write permission, because the 386 does not check - * write permissions when we are executing with EPL 0. The 486 does check - * this if the WP bit is set in CR0, so we can use a simpler version here. + * Access user memory from inside the kernel. These routines should be + * the only places that do this. * * These routines set curpcb->onfault for the time they execute. When a * protection violation occurs inside the functions, the trap handler @@ -592,7 +586,7 @@ ret /* - * Handling of special 386 registers and descriptor tables etc + * Handling of special amd64 registers and descriptor tables etc * %rdi */ /* void lgdt(struct region_descriptor *rdp); */ ==== //depot/projects/smpng/sys/amd64/amd64/trap.c#27 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.286 2005/05/30 06:29:28 jkoshy Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.287 2005/06/24 00:16:56 peter Exp $"); /* * AMD64 Trap and System call handling @@ -46,6 +46,7 @@ #include "opt_clock.h" #include "opt_cpu.h" +#include "opt_hwpmc_hooks.h" #include "opt_isa.h" #include "opt_ktrace.h" ==== //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#27 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.246 2005/04/23 02:32:30 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.247 2005/06/24 00:29:53 peter Exp $"); #include "opt_isa.h" #include "opt_cpu.h" @@ -206,14 +206,14 @@ void cpu_thread_exit(struct thread *td) { - struct pcb *pcb = td->td_pcb; if (td == PCPU_GET(fpcurthread)) fpudrop(); - if (pcb->pcb_flags & PCB_DBREGS) { - /* disable all hardware breakpoints */ + + /* Disable any hardware breakpoints. */ + if (td->td_pcb->pcb_flags & PCB_DBREGS) { reset_dbregs(); - pcb->pcb_flags &= ~PCB_DBREGS; + td->td_pcb->pcb_flags &= ~PCB_DBREGS; } } ==== //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#8 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.9 2005/04/05 15:28:06 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_machdep.c,v 1.10 2005/06/24 17:41:27 jhb Exp $"); #include #include @@ -113,7 +113,8 @@ * Allocate temporary demand zeroed space for argument and * environment strings */ - args->buf = (char *) kmem_alloc_wait(exec_map, PATH_MAX + ARG_MAX); + args->buf = (char *) kmem_alloc_wait(exec_map, + PATH_MAX + ARG_MAX + MAXSHELLCMDLEN); if (args->buf == NULL) return (ENOMEM); args->begin_argv = args->buf; ==== //depot/projects/smpng/sys/arm/arm/db_interface.c#5 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/db_interface.c,v 1.4 2005/01/05 21:58:47 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/db_interface.c,v 1.5 2005/06/23 11:38:47 cognet Exp $"); #include "opt_ddb.h" #include @@ -71,27 +71,29 @@ int db_access_abt_sp (struct db_variable *, db_expr_t *, int); int db_access_irq_sp (struct db_variable *, db_expr_t *, int); +static db_varfcn_t db_frame; + #define DB_OFFSET(x) (db_expr_t *)offsetof(struct trapframe, x) struct db_variable db_regs[] = { - { "spsr", DB_OFFSET(tf_spsr), FCN_NULL, }, - { "r0", DB_OFFSET(tf_r0), FCN_NULL, }, - { "r1", DB_OFFSET(tf_r1), FCN_NULL, }, - { "r2", DB_OFFSET(tf_r2), FCN_NULL, }, - { "r3", DB_OFFSET(tf_r3), FCN_NULL, }, - { "r4", DB_OFFSET(tf_r4), FCN_NULL, }, - { "r5", DB_OFFSET(tf_r5), FCN_NULL, }, - { "r6", DB_OFFSET(tf_r6), FCN_NULL, }, - { "r7", DB_OFFSET(tf_r7), FCN_NULL, }, - { "r8", DB_OFFSET(tf_r8), FCN_NULL, }, - { "r9", DB_OFFSET(tf_r9), FCN_NULL, }, - { "r10", DB_OFFSET(tf_r10), FCN_NULL, }, - { "r11", DB_OFFSET(tf_r11), FCN_NULL, }, - { "r12", DB_OFFSET(tf_r12), FCN_NULL, }, - { "usr_sp", DB_OFFSET(tf_usr_sp), FCN_NULL, }, - { "usr_lr", DB_OFFSET(tf_usr_lr), FCN_NULL, }, - { "svc_sp", DB_OFFSET(tf_svc_sp), FCN_NULL, }, - { "svc_lr", DB_OFFSET(tf_svc_lr), FCN_NULL, }, - { "pc", DB_OFFSET(tf_pc), FCN_NULL, }, + { "spsr", DB_OFFSET(tf_spsr), db_frame }, + { "r0", DB_OFFSET(tf_r0), db_frame }, + { "r1", DB_OFFSET(tf_r1), db_frame }, + { "r2", DB_OFFSET(tf_r2), db_frame }, + { "r3", DB_OFFSET(tf_r3), db_frame }, + { "r4", DB_OFFSET(tf_r4), db_frame }, + { "r5", DB_OFFSET(tf_r5), db_frame }, + { "r6", DB_OFFSET(tf_r6), db_frame }, + { "r7", DB_OFFSET(tf_r7), db_frame }, + { "r8", DB_OFFSET(tf_r8), db_frame }, + { "r9", DB_OFFSET(tf_r9), db_frame }, + { "r10", DB_OFFSET(tf_r10), db_frame }, + { "r11", DB_OFFSET(tf_r11), db_frame }, + { "r12", DB_OFFSET(tf_r12), db_frame }, + { "usr_sp", DB_OFFSET(tf_usr_sp), db_frame }, + { "usr_lr", DB_OFFSET(tf_usr_lr), db_frame }, + { "svc_sp", DB_OFFSET(tf_svc_sp), db_frame }, + { "svc_lr", DB_OFFSET(tf_svc_lr), db_frame }, + { "pc", DB_OFFSET(tf_pc), db_frame }, { "und_sp", &nil, db_access_und_sp, }, { "abt_sp", &nil, db_access_abt_sp, }, { "irq_sp", &nil, db_access_irq_sp, }, @@ -103,8 +105,10 @@ db_access_und_sp(struct db_variable *vp, db_expr_t *valp, int rw) { - if (rw == DB_VAR_GET) + if (rw == DB_VAR_GET) { *valp = get_stackptr(PSR_UND32_MODE); + return (1); + } return(0); } @@ -112,8 +116,10 @@ db_access_abt_sp(struct db_variable *vp, db_expr_t *valp, int rw) { - if (rw == DB_VAR_GET) + if (rw == DB_VAR_GET) { *valp = get_stackptr(PSR_ABT32_MODE); + return (1); + } return(0); } @@ -121,11 +127,28 @@ db_access_irq_sp(struct db_variable *vp, db_expr_t *valp, int rw) { - if (rw == DB_VAR_GET) + if (rw == DB_VAR_GET) { *valp = get_stackptr(PSR_IRQ32_MODE); + return (1); + } return(0); } +int db_frame(struct db_variable *vp, db_expr_t *valp, int rw) +{ + int *reg; + + if (kdb_frame == NULL) + return (0); + + reg = (int *)((uintptr_t)kdb_frame + (db_expr_t)vp->valuep); + if (rw == DB_VAR_GET) + *valp = *reg; + else + *reg = *valp; + return(1); +} + void db_show_mdpcpu(struct pcpu *pc) { ==== //depot/projects/smpng/sys/arm/arm/pmap.c#18 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.34 2005/06/10 13:31:30 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.36 2005/06/23 11:37:41 cognet Exp $"); #include #include #include @@ -1089,6 +1089,9 @@ #ifndef PMAP_INCLUDE_PTE_SYNC struct l2_bucket *l2b; pt_entry_t *ptep, pte; +#ifdef ARM_USE_SMALL_ALLOC + pd_entry_t *pde; +#endif vm_offset_t va = (vm_offset_t)mem & ~PAGE_MASK; /* @@ -1100,7 +1103,8 @@ * correct. */ #ifdef ARM_USE_SMALL_ALLOC - if (flags & UMA_SLAB_KMEM) { + pde = &kernel_pmap->pm_l1->l1_kva[L1_IDX(va)]; + if (!l1pte_section_p(*pde)) { #endif l2b = pmap_get_l2_bucket(pmap_kernel(), va); ptep = &l2b->l2b_kva[l2pte_index(va)]; @@ -2406,6 +2410,7 @@ #ifdef ARM_USE_SMALL_ALLOC extern struct mtx smallalloc_mtx; extern vm_offset_t alloc_curaddr; +extern vm_offset_t alloc_firstaddr; #endif void @@ -2561,7 +2566,7 @@ kernel_vm_end = pmap_curmaxkvaddr; #ifdef ARM_USE_SMALL_ALLOC mtx_init(&smallalloc_mtx, "Small alloc page list", NULL, MTX_DEF); - alloc_curaddr = lastaddr; + alloc_firstaddr = alloc_curaddr = lastaddr; #endif } ==== //depot/projects/smpng/sys/arm/arm/trap.c#12 (text+ko) ==== @@ -82,7 +82,7 @@ #include "opt_ktrace.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.15 2005/05/25 13:46:32 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.17 2005/06/23 11:39:18 cognet Exp $"); #include @@ -118,12 +118,12 @@ #include #include #include -#if !defined(DDB) -#define kdb_trap kgdb_trap + +#ifdef KDB +#include #endif - void swi_handler(trapframe_t *); void undefinedinstruction(trapframe_t *); @@ -406,8 +406,8 @@ #ifdef DEBUG last_fault_code = fsr; #endif - if (pmap_fault_fixup(user ? vmspace_pmap(td->td_proc->p_vmspace) : - kernel_pmap, va, ftype, user)) { + if (pmap_fault_fixup(vmspace_pmap(td->td_proc->p_vmspace), va, ftype, + user)) { goto out; } @@ -512,8 +512,8 @@ tf->tf_svc_sp, tf->tf_svc_lr); printf(", pc =%08x\n\n", tf->tf_pc); -#if defined(DDB) || defined(KGDB) - kdb_trap(T_FAULT, tf); +#ifdef KDB + kdb_trap(fsr, 0, tf); #endif panic("Fatal abort"); /*NOTREACHED*/ ==== //depot/projects/smpng/sys/arm/arm/vm_machdep.c#13 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.15 2005/06/07 23:04:24 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.16 2005/06/23 11:37:41 cognet Exp $"); #include #include @@ -380,6 +380,7 @@ MALLOC_DEFINE(M_VMSMALLALLOC, "VM Small alloc", "VM Small alloc data"); vm_offset_t alloc_curaddr; +vm_offset_t alloc_firstaddr; extern int doverbose; @@ -463,15 +464,12 @@ /* No more free pages, need to alloc more. */ mtx_unlock(&smallalloc_mtx); if (!(wait & M_WAITOK)) { - *flags = UMA_SLAB_KMEM; ret = (void *)kmem_malloc(kmem_map, bytes, wait); return (ret); } /* Try to alloc 1MB of contiguous memory. */ ret = arm_uma_do_alloc(&sp, bytes, zone == l2zone ? SECTION_PT : SECTION_CACHE); - if (!sp) - *flags = UMA_SLAB_KMEM; mtx_lock(&smallalloc_mtx); if (sp) { for (int i = 0; i < (0x100000 / PAGE_SIZE) - 1; @@ -490,10 +488,6 @@ TAILQ_REMOVE(head, sp, pg_list); TAILQ_INSERT_HEAD(&free_pgdesc, sp, pg_list); ret = sp->addr; - if (ret == NULL) - panic("NULL"); - if (ret < (void *)0xa0000000) - panic("BLA %p", ret); } mtx_unlock(&smallalloc_mtx); if ((wait & M_ZERO)) @@ -507,7 +501,7 @@ pd_entry_t *pd; pt_entry_t *pt; - if (flags & UMA_SLAB_KMEM) + if (mem < (void *)alloc_firstaddr) kmem_free(kmem_map, (vm_offset_t)mem, size); else { struct arm_small_page *sp; ==== //depot/projects/smpng/sys/arm/include/atomic.h#13 (text+ko) ==== @@ -33,7 +33,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/atomic.h,v 1.7 2005/05/24 21:42:31 cognet Exp $ + * $FreeBSD: src/sys/arm/include/atomic.h,v 1.8 2005/06/23 21:54:17 jhb Exp $ */ #ifndef _MACHINE_ATOMIC_H_ ==== //depot/projects/smpng/sys/arm/xscale/i80321/iq31244_machdep.c#12 (text+ko) ==== @@ -48,7 +48,7 @@ #include "opt_msgbuf.h" #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.12 2005/06/07 23:04:24 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.13 2005/06/23 11:40:45 cognet Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -101,8 +101,7 @@ #define KERNEL_PT_SYS 0 /* Page table for mapping proc0 zero page */ #define KERNEL_PT_IOPXS 1 #define KERNEL_PT_BEFOREKERN 2 -#define KERNEL_PT_PHYS 3 -#define KERNEL_PT_AFKERNEL 4 /* L2 table for mapping after kernel */ +#define KERNEL_PT_AFKERNEL 3 /* L2 table for mapping after kernel */ #define KERNEL_PT_AFKERNEL_NUM 9 /* this should be evenly divisable by PAGE_SIZE / L2_TABLE_SIZE_REAL (or 4) */ @@ -319,18 +318,13 @@ &kernel_pt_table[KERNEL_PT_IOPXS]); pmap_link_l2pt(l1pagetable, KERNBASE, &kernel_pt_table[KERNEL_PT_BEFOREKERN]); - pmap_link_l2pt(l1pagetable, SDRAM_START, - &kernel_pt_table[KERNEL_PT_PHYS]); - pmap_map_chunk(l1pagetable, KERNBASE, SDRAM_START, - 0x100000, + pmap_map_chunk(l1pagetable, KERNBASE, SDRAM_START, 0x100000, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); pmap_map_chunk(l1pagetable, KERNBASE + 0x100000, SDRAM_START + 0x100000, 0x100000, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE); pmap_map_chunk(l1pagetable, KERNBASE + 0x200000, SDRAM_START + 0x200000, (((uint32_t)(&end) - KERNBASE - 0x200000) + L1_S_SIZE) & ~(L1_S_SIZE - 1), VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - pmap_map_entry(l1pagetable, minidataclean.pv_pa, minidataclean.pv_pa, - VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); freemem_after = ((int)&end + PAGE_SIZE) & ~(PAGE_SIZE - 1); afterkern = round_page(((vm_offset_t)&end + L1_S_SIZE) & ~(L1_S_SIZE - 1)); @@ -338,6 +332,9 @@ pmap_link_l2pt(l1pagetable, afterkern + i * 0x00100000, &kernel_pt_table[KERNEL_PT_AFKERNEL + i]); } + pmap_map_entry(l1pagetable, afterkern, minidataclean.pv_pa, + VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); + #ifdef ARM_USE_SMALL_ALLOC if ((freemem_after + 2 * PAGE_SIZE) <= afterkern) { @@ -349,7 +346,7 @@ #endif /* Map the Mini-Data cache clean area. */ - xscale_setup_minidata(l1pagetable, minidataclean.pv_pa, + xscale_setup_minidata(l1pagetable, afterkern, minidataclean.pv_pa); /* Map the vector page. */ @@ -428,7 +425,7 @@ - pmap_curmaxkvaddr = afterkern; + pmap_curmaxkvaddr = afterkern + PAGE_SIZE; pmap_bootstrap(pmap_curmaxkvaddr, 0xd0000000, &kernel_l1pt); msgbufp = (void*)msgbufpv.pv_va; ==== //depot/projects/smpng/sys/cam/cam_xpt.c#30 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.153 2005/05/11 17:39:33 kan Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.154 2005/06/24 08:09:05 avatar Exp $"); #include #include @@ -5107,6 +5107,8 @@ devq = bus->sim->devq; cam_devq_resize(devq, devq->alloc_queue.array_size - 1); splx(s); + camq_fini(&device->drvq); + camq_fini(&device->ccbq.queue); free(device, M_DEVBUF); xpt_release_target(bus, target); } else ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#20 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.35 2005/06/11 14:58:20 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.36 2005/06/24 17:41:28 jhb Exp $"); #include "opt_compat.h" @@ -237,7 +237,8 @@ * Allocate temporary demand zeroed space for argument and * environment strings */ - args->buf = (char *) kmem_alloc_wait(exec_map, PATH_MAX + ARG_MAX); + args->buf = (char *) kmem_alloc_wait(exec_map, + PATH_MAX + ARG_MAX + MAXSHELLCMDLEN); if (args->buf == NULL) return (ENOMEM); args->begin_argv = args->buf; ==== //depot/projects/smpng/sys/compat/linux/linux_stats.c#28 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.71 2005/06/09 18:49:19 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.72 2005/06/23 22:13:29 pjd Exp $"); #include "opt_mac.h" @@ -331,9 +331,6 @@ if (dev != NULL && vfinddev(dev, &vp)) { if (vp->v_mount == NULL) return (EINVAL); - error = prison_canseemount(td->td_ucred, vp->v_mount); - if (error) - return (error); #ifdef MAC error = mac_check_mount_stat(td->td_ucred, vp->v_mount); if (error) ==== //depot/projects/smpng/sys/conf/NOTES#99 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1324 2005/06/14 14:21:24 ups Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1325 2005/06/21 10:17:54 dumbbell Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -918,6 +918,12 @@ # options EXT2FS +# +# Add support for the ReiserFS filesystem (used in Linux). Currently, +# this is limited to read-only access. +# +options REISERFS + # Use real implementations of the aio_* system calls. There are numerous # stability and security issues in the current aio code that make it # unsuitable for inclusion on machines with untrusted local users. ==== //depot/projects/smpng/sys/conf/files#142 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1027 2005/06/15 02:36:11 rodrigc Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1030 2005/06/21 10:17:54 dumbbell Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -583,6 +583,8 @@ dev/hme/if_hme.c optional hme dev/hme/if_hme_pci.c optional hme pci dev/hme/if_hme_sbus.c optional hme sbus +dev/hwpmc/hwpmc_logging.c optional hwpmc +dev/hwpmc/hwpmc_mod.c optional hwpmc dev/ichsmb/ichsmb.c optional ichsmb dev/ichsmb/ichsmb_pci.c optional ichsmb pci dev/ida/ida.c optional ida @@ -1068,12 +1070,16 @@ gnu/fs/ext2fs/ext2_subr.c optional ext2fs gnu/fs/ext2fs/ext2_vfsops.c optional ext2fs gnu/fs/ext2fs/ext2_vnops.c optional ext2fs -# -# Support for hardware performance monitoring counters +gnu/fs/reiserfs/reiserfs_hashes.c optional reiserfs \ + warning "kernel contains GPL contaminated ReiserFS filesystem" +gnu/fs/reiserfs/reiserfs_inode.c optional reiserfs +gnu/fs/reiserfs/reiserfs_item_ops.c optional reiserfs +gnu/fs/reiserfs/reiserfs_namei.c optional reiserfs +gnu/fs/reiserfs/reiserfs_prints.c optional reiserfs +gnu/fs/reiserfs/reiserfs_stree.c optional reiserfs +gnu/fs/reiserfs/reiserfs_vfsops.c optional reiserfs +gnu/fs/reiserfs/reiserfs_vnops.c optional reiserfs # -dev/hwpmc/hwpmc_mod.c optional hwpmc -dev/hwpmc/hwpmc_logging.c optional hwpmc -# # isdn4bsd device drivers # i4b/driver/i4b_trace.c optional i4btrc @@ -1591,7 +1597,6 @@ netinet/libalias/alias_ftp.c optional libalias netinet/libalias/alias_irc.c optional libalias netinet/libalias/alias_nbt.c optional libalias -netinet/libalias/alias_old.c optional libalias netinet/libalias/alias_pptp.c optional libalias netinet/libalias/alias_proxy.c optional libalias netinet/libalias/alias_skinny.c optional libalias ==== //depot/projects/smpng/sys/conf/files.i386#84 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.536 2005/06/12 00:47:21 marcel Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.538 2005/06/21 10:17:54 dumbbell Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -224,15 +224,6 @@ geom/geom_bsd_enc.c standard geom/geom_mbr.c standard geom/geom_mbr_enc.c standard -gnu/reiserfs/reiserfs_hashes.c optional reiserfs \ - warning "kernel contains GPL contaminated ReiserFS filesystem" -gnu/reiserfs/reiserfs_inode.c optional reiserfs -gnu/reiserfs/reiserfs_item_ops.c optional reiserfs -gnu/reiserfs/reiserfs_namei.c optional reiserfs -gnu/reiserfs/reiserfs_prints.c optional reiserfs -gnu/reiserfs/reiserfs_stree.c optional reiserfs -gnu/reiserfs/reiserfs_vfsops.c optional reiserfs -gnu/reiserfs/reiserfs_vnops.c optional reiserfs dev/acpica/acpi_if.m standard i386/acpica/OsdEnvironment.c optional acpi i386/acpica/acpi_machdep.c optional acpi ==== //depot/projects/smpng/sys/conf/files.pc98#75 (text+ko) ==== @@ -3,7 +3,7 @@ # # modified for PC-9801/PC-9821 # -# $FreeBSD: src/sys/conf/files.pc98,v 1.326 2005/06/12 00:47:21 marcel Exp $ +# $FreeBSD: src/sys/conf/files.pc98,v 1.327 2005/06/21 10:17:54 dumbbell Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -157,15 +157,6 @@ geom/geom_bsd_enc.c standard geom/geom_pc98.c standard geom/geom_pc98_enc.c standard -gnu/reiserfs/reiserfs_hashes.c optional reiserfs \ - warning "kernel contains GPL contaminated ReiserFS filesystem" -gnu/reiserfs/reiserfs_inode.c optional reiserfs -gnu/reiserfs/reiserfs_item_ops.c optional reiserfs -gnu/reiserfs/reiserfs_namei.c optional reiserfs -gnu/reiserfs/reiserfs_prints.c optional reiserfs -gnu/reiserfs/reiserfs_stree.c optional reiserfs -gnu/reiserfs/reiserfs_vfsops.c optional reiserfs -gnu/reiserfs/reiserfs_vnops.c optional reiserfs i386/bios/apm.c optional apm #i386/i386/apic_vector.s optional apic i386/i386/atomic.c standard \ ==== //depot/projects/smpng/sys/conf/options#100 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.506 2005/06/10 08:05:12 glebius Exp $ +# $FreeBSD: src/sys/conf/options,v 1.508 2005/06/24 00:16:57 peter Exp $ # # On the handling of kernel options # @@ -177,6 +177,7 @@ PORTALFS opt_dontuse.h PROCFS opt_dontuse.h PSEUDOFS opt_dontuse.h +REISERFS opt_dontuse.h SMBFS opt_dontuse.h UDF opt_dontuse.h UMAPFS opt_dontuse.h @@ -706,4 +707,4 @@ LOOKUP_SHARED opt_vfs.h # HWPMC options -HWPMC_HOOKS opt_global.h +HWPMC_HOOKS ==== //depot/projects/smpng/sys/conf/options.i386#48 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.i386,v 1.222 2005/05/24 12:28:21 dumbbell Exp $ +# $FreeBSD: src/sys/conf/options.i386,v 1.223 2005/06/21 10:17:54 dumbbell Exp $ # Options specific to the i386 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -120,9 +120,6 @@ # Enables NETGRAPH support for Cronyx adapters NETGRAPH_CRONYX opt_ng_cronyx.h -# ReiserFS -REISERFS opt_dontuse.h - # ------------------------------- # isdn4bsd: passive ISA cards # ------------------------------- ==== //depot/projects/smpng/sys/conf/options.pc98#47 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.pc98,v 1.186 2005/05/25 12:32:06 nyan Exp $ +# $FreeBSD: src/sys/conf/options.pc98,v 1.187 2005/06/24 13:19:09 des Exp $ # Options specific to the pc98 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -72,9 +72,6 @@ # Enables NETGRAPH support for Cronyx adapters NETGRAPH_CRONYX opt_ng_cronyx.h -# ReiserFS -REISERFS opt_dontuse.h - # ------------------------------- # isdn4bsd: passive PCI cards # ------------------------------- ==== //depot/projects/smpng/sys/contrib/ipfilter/netinet/fil.c#18 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.45 2005/04/27 03:48:09 darrenr Exp $ */ +/* $FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.46 2005/06/23 14:19:02 darrenr Exp $ */ /* * Copyright (C) 1993-2003 by Darren Reed. @@ -136,7 +136,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.45 2005/04/27 03:48:09 darrenr Exp $"; +static const char rcsid[] = "@(#)$FreeBSD: src/sys/contrib/ipfilter/netinet/fil.c,v 1.46 2005/06/23 14:19:02 darrenr Exp $"; /* static const char rcsid[] = "@(#)Id: fil.c,v 2.243.2.57 2005/03/28 10:47:50 darrenr Exp"; */ #endif @@ -3998,10 +3998,15 @@ fprev = &fg->fg_start; } - for (f = *fprev; (f = *fprev) != NULL; fprev = &f->fr_next) - if (fp->fr_collect <= f->fr_collect) + ftail = fprev; + for (f = *ftail; (f = *ftail) != NULL; ftail = &f->fr_next) { + if (fp->fr_collect <= f->fr_collect) { + ftail = fprev; + f = NULL; break; - ftail = fprev; + } + fprev = ftail; + } /* * Copy in extra data for the rule. @@ -4140,14 +4145,17 @@ WRITE_ENTER(&ipf_mutex); bzero((char *)frcache, sizeof(frcache)); - for (; (f = *ftail) != NULL; ftail = &f->fr_next) - if ((fp->fr_cksum == f->fr_cksum) && - (f->fr_dsize == fp->fr_dsize) && - !bcmp((char *)&f->fr_func, - (char *)&fp->fr_func, FR_CMPSIZ) && - (!ptr || !f->fr_data || + for (; (f = *ftail) != NULL; ftail = &f->fr_next) { + if ((fp->fr_cksum != f->fr_cksum) || + (f->fr_dsize != fp->fr_dsize)) + continue; + if (bcmp((char *)&f->fr_func, (char *)&fp->fr_func, FR_CMPSIZ)) + continue; + if ((!ptr && !f->fr_data) || + (ptr && f->fr_data && !bcmp((char *)ptr, (char *)f->fr_data, f->fr_dsize))) break; + } /* * If zero'ing statistics, copy current to caller and zero. @@ -4193,12 +4201,40 @@ } >>> TRUNCATED FOR MAIL (1000 lines) <<<