From owner-p4-projects@FreeBSD.ORG Tue Nov 21 16:18:18 2006 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 D742016A721; Tue, 21 Nov 2006 16:18:17 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8494416A7AE for ; Tue, 21 Nov 2006 16:18:16 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4FFE343DB1 for ; Tue, 21 Nov 2006 16:16:53 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id kALGH1tw045532 for ; Tue, 21 Nov 2006 16:17:01 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id kALGGxpI045525 for perforce@freebsd.org; Tue, 21 Nov 2006 16:16:59 GMT (envelope-from marcel@freebsd.org) Date: Tue, 21 Nov 2006 16:16:59 GMT Message-Id: <200611211616.kALGGxpI045525@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 110253 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: Tue, 21 Nov 2006 16:18:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=110253 Change 110253 by marcel@marcel_nfs on 2006/11/19 20:28:04 IFC @110251 Affected files ... .. //depot/projects/uart/amd64/amd64/db_trace.c#13 integrate .. //depot/projects/uart/amd64/amd64/intr_machdep.c#11 integrate .. //depot/projects/uart/amd64/amd64/io_apic.c#10 integrate .. //depot/projects/uart/amd64/amd64/machdep.c#24 integrate .. //depot/projects/uart/amd64/amd64/msi.c#2 integrate .. //depot/projects/uart/amd64/include/reg.h#3 integrate .. //depot/projects/uart/arm/arm/nexus.c#7 integrate .. //depot/projects/uart/arm/xscale/i80321/ep80219_machdep.c#3 integrate .. //depot/projects/uart/arm/xscale/i80321/iq31244_machdep.c#16 integrate .. //depot/projects/uart/boot/arm/at91/boot0/Makefile#4 integrate .. //depot/projects/uart/boot/arm/at91/boot0/arm_init.s#2 delete .. //depot/projects/uart/boot/arm/at91/boot0iic/Makefile#3 integrate .. //depot/projects/uart/boot/arm/at91/boot0iic/main.c#4 integrate .. //depot/projects/uart/boot/arm/at91/boot0spi/Makefile#3 integrate .. //depot/projects/uart/boot/arm/at91/boot0spi/main.c#4 integrate .. //depot/projects/uart/boot/arm/at91/boot2/Makefile#2 integrate .. //depot/projects/uart/boot/arm/at91/boot2/boot2.c#2 integrate .. //depot/projects/uart/boot/arm/at91/bootiic/Makefile#5 integrate .. //depot/projects/uart/boot/arm/at91/bootiic/arm_init.S#3 delete .. //depot/projects/uart/boot/arm/at91/bootspi/Makefile#4 integrate .. //depot/projects/uart/boot/arm/at91/bootspi/arm_init.S#3 delete .. //depot/projects/uart/boot/arm/at91/libat91/arm_init.S#1 branch .. //depot/projects/uart/boot/arm/at91/libat91/mci_device.c#3 delete .. //depot/projects/uart/boot/i386/loader/main.c#10 integrate .. //depot/projects/uart/boot/ia64/common/copy.c#2 integrate .. //depot/projects/uart/boot/ia64/common/libia64.h#2 integrate .. //depot/projects/uart/compat/linux/linux_emul.c#3 integrate .. //depot/projects/uart/compat/linux/linux_getcwd.c#10 integrate .. //depot/projects/uart/compat/linux/linux_misc.c#20 integrate .. //depot/projects/uart/conf/NOTES#45 integrate .. //depot/projects/uart/conf/files#77 integrate .. //depot/projects/uart/conf/files.sun4v#3 integrate .. //depot/projects/uart/ddb/db_watch.c#4 integrate .. //depot/projects/uart/dev/ata/ata-all.c#24 integrate .. //depot/projects/uart/dev/bce/if_bce.c#6 integrate .. //depot/projects/uart/dev/bce/if_bcereg.h#7 integrate .. //depot/projects/uart/dev/em/if_em.c#26 integrate .. //depot/projects/uart/dev/em/if_em.h#22 integrate .. //depot/projects/uart/dev/isp/isp.c#17 integrate .. //depot/projects/uart/dev/isp/isp_library.c#7 integrate .. //depot/projects/uart/dev/isp/isp_library.h#4 integrate .. //depot/projects/uart/dev/isp/isp_pci.c#18 integrate .. //depot/projects/uart/dev/isp/isp_stds.h#2 integrate .. //depot/projects/uart/dev/isp/ispmbox.h#10 integrate .. //depot/projects/uart/dev/isp/ispvar.h#15 integrate .. //depot/projects/uart/dev/mfi/mfi.c#9 integrate .. //depot/projects/uart/dev/mpt/mpt.c#21 integrate .. //depot/projects/uart/dev/mpt/mpt.h#19 integrate .. //depot/projects/uart/dev/mpt/mpt_cam.c#21 integrate .. //depot/projects/uart/dev/mpt/mpt_pci.c#24 integrate .. //depot/projects/uart/dev/nfe/if_nfe.c#4 integrate .. //depot/projects/uart/dev/pci/pci.c#27 integrate .. //depot/projects/uart/dev/syscons/syscons.c#18 integrate .. //depot/projects/uart/dev/usb/uark.c#1 branch .. //depot/projects/uart/dev/usb/usbdevs#28 integrate .. //depot/projects/uart/fs/procfs/procfs_ioctl.c#6 integrate .. //depot/projects/uart/gnu/fs/ext2fs/ext2_vfsops.c#7 integrate .. //depot/projects/uart/i386/i386/db_trace.c#13 integrate .. //depot/projects/uart/i386/i386/intr_machdep.c#9 integrate .. //depot/projects/uart/i386/i386/io_apic.c#11 integrate .. //depot/projects/uart/i386/i386/machdep.c#27 integrate .. //depot/projects/uart/i386/i386/msi.c#2 integrate .. //depot/projects/uart/i386/i386/pmap.c#45 integrate .. //depot/projects/uart/i386/include/reg.h#4 integrate .. //depot/projects/uart/ia64/ia64/genassym.c#10 integrate .. //depot/projects/uart/ia64/ia64/interrupt.c#14 integrate .. //depot/projects/uart/ia64/ia64/machdep.c#28 integrate .. //depot/projects/uart/ia64/ia64/mp_machdep.c#12 integrate .. //depot/projects/uart/ia64/include/kdb.h#4 integrate .. //depot/projects/uart/ia64/include/pcpu.h#4 integrate .. //depot/projects/uart/kern/kern_condvar.c#7 integrate .. //depot/projects/uart/kern/kern_synch.c#19 integrate .. //depot/projects/uart/kern/subr_sleepqueue.c#12 integrate .. //depot/projects/uart/kern/sysv_msg.c#11 integrate .. //depot/projects/uart/modules/Makefile#43 integrate .. //depot/projects/uart/modules/uark/Makefile#1 branch .. //depot/projects/uart/net/ethernet.h#3 integrate .. //depot/projects/uart/net/if_ethersubr.c#19 integrate .. //depot/projects/uart/nfsclient/nfs_node.c#14 integrate .. //depot/projects/uart/nfsclient/nfs_vnops.c#20 integrate .. //depot/projects/uart/sparc64/sparc64/autoconf.c#4 integrate .. //depot/projects/uart/sparc64/sparc64/identcpu.c#6 integrate .. //depot/projects/uart/sparc64/sparc64/mem.c#5 integrate .. //depot/projects/uart/sun4v/conf/NOTES#3 integrate .. //depot/projects/uart/sun4v/include/asmacros.h#2 integrate .. //depot/projects/uart/sun4v/include/cache.h#2 integrate .. //depot/projects/uart/sun4v/include/pcpu.h#2 integrate .. //depot/projects/uart/sun4v/include/tte_hash.h#2 integrate .. //depot/projects/uart/sun4v/sun4v/autoconf.c#2 delete .. //depot/projects/uart/sun4v/sun4v/clock.c#2 delete .. //depot/projects/uart/sun4v/sun4v/counter.c#2 delete .. //depot/projects/uart/sun4v/sun4v/db_disasm.c#2 delete .. //depot/projects/uart/sun4v/sun4v/eeprom.c#2 delete .. //depot/projects/uart/sun4v/sun4v/elf_machdep.c#2 delete .. //depot/projects/uart/sun4v/sun4v/exception.S#3 integrate .. //depot/projects/uart/sun4v/sun4v/gdb_machdep.c#2 delete .. //depot/projects/uart/sun4v/sun4v/identcpu.c#2 delete .. //depot/projects/uart/sun4v/sun4v/in_cksum.c#2 delete .. //depot/projects/uart/sun4v/sun4v/interrupt.S#3 integrate .. //depot/projects/uart/sun4v/sun4v/iommu.c#2 delete .. //depot/projects/uart/sun4v/sun4v/mem.c#2 delete .. //depot/projects/uart/sun4v/sun4v/ofw_bus.c#2 delete .. //depot/projects/uart/sun4v/sun4v/ofw_machdep.c#2 delete .. //depot/projects/uart/sun4v/sun4v/pmap.c#3 integrate .. //depot/projects/uart/sun4v/sun4v/prof_machdep.c#2 delete .. //depot/projects/uart/sun4v/sun4v/rwindow.c#2 delete .. //depot/projects/uart/sun4v/sun4v/sys_machdep.c#2 delete .. //depot/projects/uart/sun4v/sun4v/tlb.c#2 delete .. //depot/projects/uart/sun4v/sun4v/tte_hash.c#2 integrate .. //depot/projects/uart/sys/sleepqueue.h#4 integrate Differences ... ==== //depot/projects/uart/amd64/amd64/db_trace.c#13 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.76 2006/10/20 09:44:20 bde Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.80 2006/11/17 20:27:00 jhb Exp $"); #include #include @@ -200,10 +200,10 @@ static void db_print_stack_entry(const char *, int, char **, long *, db_addr_t); static void decode_syscall(int, struct thread *); -static char * watchtype_str(int type); +static const char * watchtype_str(int type); int amd64_set_watch(int watchnum, unsigned long watchaddr, int size, - int access, struct dbreg * d); -int amd64_clr_watch(int watchnum, struct dbreg * d); + int access, struct dbreg *d); +int amd64_clr_watch(int watchnum, struct dbreg *d); /* * Figure out how many arguments were passed into the frame at "fp". @@ -536,21 +536,20 @@ unsigned long watchaddr; int size; int access; - struct dbreg * d; + struct dbreg *d; { - int i; - unsigned int mask; - + int i, len; + if (watchnum == -1) { - for (i = 0, mask = 0x3; i < 4; i++, mask <<= 2) - if ((d->dr[7] & mask) == 0) + for (i = 0; i < 4; i++) + if (!DBREG_DR7_ENABLED(d->dr[7], i)) break; if (i < 4) watchnum = i; else return (-1); } - + switch (access) { case DBREG_DR7_EXEC: size = 1; /* size must be 1 for an execution breakpoint */ @@ -558,29 +557,39 @@ case DBREG_DR7_WRONLY: case DBREG_DR7_RDWR: break; - default : return (-1); + default: + return (-1); } - + /* - * we can watch a 1, 2, or 4 byte sized location + * we can watch a 1, 2, 4, or 8 byte sized location */ switch (size) { - case 1 : mask = 0x00; break; - case 2 : mask = 0x01 << 2; break; - case 4 : mask = 0x03 << 2; break; - default : return (-1); + case 1: + len = DBREG_DR7_LEN_1; + break; + case 2: + len = DBREG_DR7_LEN_2; + break; + case 4: + len = DBREG_DR7_LEN_4; + break; + case 8: + len = DBREG_DR7_LEN_8; + break; + default: + return (-1); } - mask |= access; - /* clear the bits we are about to affect */ - d->dr[7] &= ~((0x3 << (watchnum*2)) | (0x0f << (watchnum*4+16))); + d->dr[7] &= ~DBREG_DR7_MASK(watchnum); /* set drN register to the address, N=watchnum */ - DBREG_DRX(d,watchnum) = watchaddr; + DBREG_DRX(d, watchnum) = watchaddr; /* enable the watchpoint */ - d->dr[7] |= (0x2 << (watchnum*2)) | (mask << (watchnum*4+16)); + d->dr[7] |= DBREG_DR7_SET(watchnum, len, access, + DBREG_DR7_GLOBAL_ENABLE); return (watchnum); } @@ -589,15 +598,15 @@ int amd64_clr_watch(watchnum, d) int watchnum; - struct dbreg * d; + struct dbreg *d; { if (watchnum < 0 || watchnum >= 4) return (-1); - - d->dr[7] = d->dr[7] & ~((0x3 << (watchnum*2)) | (0x0f << (watchnum*4+16))); - DBREG_DRX(d,watchnum) = 0; - + + d->dr[7] &= ~DBREG_DR7_MASK(watchnum); + DBREG_DRX(d, watchnum) = 0; + return (0); } @@ -607,38 +616,38 @@ db_expr_t addr; db_expr_t size; { - int avail, wsize; - int i; struct dbreg d; - + int avail, i, wsize; + fill_dbregs(NULL, &d); - + avail = 0; - for(i=0; i<4; i++) { - if ((d.dr[7] & (3 << (i*2))) == 0) + for(i = 0; i < 4; i++) { + if (!DBREG_DR7_ENABLED(d.dr[7], i)) avail++; } - - if (avail*4 < size) + + if (avail * 8 < size) return (-1); - - for (i=0; i<4 && (size != 0); i++) { - if ((d.dr[7] & (3<<(i*2))) == 0) { - if (size > 4) + + for (i = 0; i < 4 && (size > 0); i++) { + if (!DBREG_DR7_ENABLED(d.dr[7], i)) { + if (size >= 8 || (avail == 1 && size > 4)) + wsize = 8; + else if (size > 2) wsize = 4; else wsize = size; - if (wsize == 3) - wsize++; - amd64_set_watch(i, addr, wsize, + amd64_set_watch(i, addr, wsize, DBREG_DR7_WRONLY, &d); addr += wsize; size -= wsize; + avail--; } } - + set_dbregs(NULL, &d); - + return(0); } @@ -648,28 +657,27 @@ db_expr_t addr; db_expr_t size; { + struct dbreg d; int i; - struct dbreg d; fill_dbregs(NULL, &d); - for(i=0; i<4; i++) { - if (d.dr[7] & (3 << (i*2))) { - if ((DBREG_DRX((&d), i) >= addr) && + for(i = 0; i < 4; i++) { + if (DBREG_DR7_ENABLED(d.dr[7], i)) { + if ((DBREG_DRX((&d), i) >= addr) && (DBREG_DRX((&d), i) < addr+size)) amd64_clr_watch(i, &d); - + } } - + set_dbregs(NULL, &d); - + return(0); } -static -char * +static const char * watchtype_str(type) int type; { @@ -685,30 +693,33 @@ void db_md_list_watchpoints() { - int i; struct dbreg d; + int i, len, type; fill_dbregs(NULL, &d); db_printf("\nhardware watchpoints:\n"); - db_printf(" watch status type len address\n"); - db_printf(" ----- -------- ---------- --- ----------\n"); - for (i=0; i<4; i++) { - if (d.dr[7] & (0x03 << (i*2))) { - unsigned type, len; - type = (d.dr[7] >> (16+(i*4))) & 3; - len = (d.dr[7] >> (16+(i*4)+2)) & 3; - db_printf(" %-5d %-8s %10s %3d 0x%016lx\n", - i, "enabled", watchtype_str(type), - len + 1, DBREG_DRX((&d), i)); - } - else { + db_printf(" watch status type len address\n"); + db_printf(" ----- -------- ---------- --- ------------------\n"); + for (i = 0; i < 4; i++) { + if (DBREG_DR7_ENABLED(d.dr[7], i)) { + type = DBREG_DR7_ACCESS(d.dr[7], i); + len = DBREG_DR7_LEN(d.dr[7], i); + if (len == DBREG_DR7_LEN_8) + len = 8; + else + len++; + db_printf(" %-5d %-8s %10s %3d ", + i, "enabled", watchtype_str(type), len); + db_printsym((db_addr_t)DBREG_DRX((&d), i), DB_STGY_ANY); + db_printf("\n"); + } else { db_printf(" %-5d disabled\n", i); } } - + db_printf("\ndebug register values:\n"); - for (i=0; i<8; i++) { + for (i = 0; i < 8; i++) { db_printf(" dr%d 0x%016lx\n", i, DBREG_DRX((&d), i)); } db_printf("\n"); ==== //depot/projects/uart/amd64/amd64/intr_machdep.c#11 (text+ko) ==== @@ -26,7 +26,7 @@ * 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.25 2006/10/16 21:40:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.26 2006/11/17 16:41:03 jhb Exp $ */ /* @@ -446,10 +446,6 @@ current_cpu++; if (current_cpu >= num_cpus) current_cpu = 0; - if (bootverbose) { - printf("INTR: Assigning IRQ %d", pic->pic_vector(isrc)); - printf(" to local APIC %u\n", apic_id); - } pic->pic_assign_cpu(isrc, apic_id); } @@ -483,7 +479,7 @@ if (num_cpus <= 1) return; - /* Round-robin assign each enabled source a CPU. */ + /* Round-robin assign a CPU to each enabled source. */ mtx_lock_spin(&intr_table_lock); assign_cpu = 1; for (i = 0; i < NUM_IO_INTS; i++) { ==== //depot/projects/uart/amd64/amd64/io_apic.c#10 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.25 2006/10/10 23:23:11 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.26 2006/11/17 16:41:03 jhb Exp $"); #include "opt_isa.h" @@ -512,13 +512,6 @@ * be routed to other CPUs later after they are enabled. */ intpin->io_cpu = PCPU_GET(apic_id); - if (bootverbose && intpin->io_irq != IRQ_DISABLED) { - printf("ioapic%u: intpin %d -> ", io->io_id, i); - ioapic_print_irq(intpin); - printf(" (%s, %s)\n", intpin->io_edgetrigger ? - "edge" : "level", intpin->io_activehi ? "high" : - "low"); - } value = ioapic_read(apic, IOAPIC_REDTBL_LO(i)); ioapic_write(apic, IOAPIC_REDTBL_LO(i), value | IOART_INTMSET); } @@ -583,6 +576,8 @@ return (EINVAL); if (io->io_pins[pin].io_irq >= NUM_IO_INTS) return (EINVAL); + if (io->io_pins[pin].io_bus == bus_type) + return (0); io->io_pins[pin].io_bus = bus_type; if (bootverbose) printf("ioapic%u: intpin %d bus %s\n", io->io_id, pin, @@ -666,13 +661,17 @@ ioapic_set_polarity(void *cookie, u_int pin, enum intr_polarity pol) { struct ioapic *io; + int activehi; io = (struct ioapic *)cookie; if (pin >= io->io_numintr || pol == INTR_POLARITY_CONFORM) return (EINVAL); if (io->io_pins[pin].io_irq >= NUM_IO_INTS) return (EINVAL); - io->io_pins[pin].io_activehi = (pol == INTR_POLARITY_HIGH); + activehi = (pol == INTR_POLARITY_HIGH); + if (io->io_pins[pin].io_activehi == activehi) + return (0); + io->io_pins[pin].io_activehi = activehi; if (bootverbose) printf("ioapic%u: intpin %d polarity: %s\n", io->io_id, pin, pol == INTR_POLARITY_HIGH ? "high" : "low"); @@ -683,13 +682,17 @@ ioapic_set_triggermode(void *cookie, u_int pin, enum intr_trigger trigger) { struct ioapic *io; + int edgetrigger; io = (struct ioapic *)cookie; if (pin >= io->io_numintr || trigger == INTR_TRIGGER_CONFORM) return (EINVAL); if (io->io_pins[pin].io_irq >= NUM_IO_INTS) - return (EINVAL); - io->io_pins[pin].io_edgetrigger = (trigger == INTR_TRIGGER_EDGE); + return (EINVAL); + edgetrigger = (trigger == INTR_TRIGGER_EDGE); + if (io->io_pins[pin].io_edgetrigger == edgetrigger) + return (0); + io->io_pins[pin].io_edgetrigger = edgetrigger; if (bootverbose) printf("ioapic%u: intpin %d trigger: %s\n", io->io_id, pin, trigger == INTR_TRIGGER_EDGE ? "edge" : "level"); ==== //depot/projects/uart/amd64/amd64/machdep.c#24 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.660 2006/11/07 21:57:18 ru Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.663 2006/11/17 20:27:01 jhb Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -1692,7 +1692,6 @@ { struct pcb *pcb; int i; - u_int64_t mask1, mask2; if (td == NULL) { load_dr0(dbregs->dr[0]); @@ -1709,10 +1708,13 @@ * TRCTRAP or a general protection fault right here. * Upper bits of dr6 and dr7 must not be set */ - for (i = 0, mask1 = 0x3<<16, mask2 = 0x2<<16; i < 8; - i++, mask1 <<= 2, mask2 <<= 2) - if ((dbregs->dr[7] & mask1) == mask2) + for (i = 0; i < 4; i++) { + if (DBREG_DR7_ACCESS(dbregs->dr[7], i) == 0x02) + return (EINVAL); + if (td->td_frame->tf_cs == _ucode32sel && + DBREG_DR7_LEN(dbregs->dr[7], i) == DBREG_DR7_LEN_8) return (EINVAL); + } if ((dbregs->dr[6] & 0xffffffff00000000ul) != 0 || (dbregs->dr[7] & 0xffffffff00000000ul) != 0) return (EINVAL); @@ -1733,22 +1735,22 @@ * from within kernel mode? */ - if (dbregs->dr[7] & 0x3) { + if (DBREG_DR7_ENABLED(dbregs->dr[7], 0)) { /* dr0 is enabled */ if (dbregs->dr[0] >= VM_MAXUSER_ADDRESS) return (EINVAL); } - if (dbregs->dr[7] & 0x3<<2) { + if (DBREG_DR7_ENABLED(dbregs->dr[7], 1)) { /* dr1 is enabled */ if (dbregs->dr[1] >= VM_MAXUSER_ADDRESS) return (EINVAL); } - if (dbregs->dr[7] & 0x3<<4) { + if (DBREG_DR7_ENABLED(dbregs->dr[7], 2)) { /* dr2 is enabled */ if (dbregs->dr[2] >= VM_MAXUSER_ADDRESS) return (EINVAL); } - if (dbregs->dr[7] & 0x3<<6) { + if (DBREG_DR7_ENABLED(dbregs->dr[7], 3)) { /* dr3 is enabled */ if (dbregs->dr[3] >= VM_MAXUSER_ADDRESS) return (EINVAL); @@ -1832,9 +1834,8 @@ addr[nbp++] = (caddr_t)rdr3(); } - for (i=0; i -__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.1 2006/11/13 22:23:32 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/msi.c,v 1.2 2006/11/15 18:40:00 jhb Exp $"); #include #include @@ -315,7 +315,7 @@ /* We need count - cnt more sources starting at index 'cnt'. */ *newirq = cnt; *newcount = count - cnt; - for (j = 0; j < *newirq; j++) { + for (j = 0; j < *newcount; j++) { /* Create a new MSI source. */ msi = malloc(sizeof(struct msi_intsrc), M_MSI, ==== //depot/projects/uart/amd64/include/reg.h#3 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * from: @(#)reg.h 5.5 (Berkeley) 1/18/91 - * $FreeBSD: src/sys/amd64/include/reg.h,v 1.35 2004/04/05 23:55:14 imp Exp $ + * $FreeBSD: src/sys/amd64/include/reg.h,v 1.38 2006/11/17 20:27:01 jhb Exp $ */ #ifndef _MACHINE_REG_H_ @@ -92,11 +92,26 @@ /* Index 8-15: reserved */ }; -#define DBREG_DR7_EXEC 0x00 /* break on execute */ -#define DBREG_DR7_WRONLY 0x01 /* break on write */ -#define DBREG_DR7_RDWR 0x03 /* break on read or write */ -#define DBREG_DRX(d,x) ((d)->dr[(x)]) /* reference dr0 - dr15 by - register number */ +#define DBREG_DR7_LOCAL_ENABLE 0x01 +#define DBREG_DR7_GLOBAL_ENABLE 0x02 +#define DBREG_DR7_LEN_1 0x00 /* 1 byte length */ +#define DBREG_DR7_LEN_2 0x01 +#define DBREG_DR7_LEN_4 0x03 +#define DBREG_DR7_LEN_8 0x02 +#define DBREG_DR7_EXEC 0x00 /* break on execute */ +#define DBREG_DR7_WRONLY 0x01 /* break on write */ +#define DBREG_DR7_RDWR 0x03 /* break on read or write */ +#define DBREG_DR7_MASK(i) ((u_long)0xf << ((i) * 4 + 16) | 0x3 << (i) * 2) +#define DBREG_DR7_SET(i, len, access, enable) \ + ((u_long)((len) << 2 | (access)) << ((i) * 4 + 16) | (enable) << (i) * 2) +#define DBREG_DR7_GD 0x2000 +#define DBREG_DR7_ENABLED(d, i) (((d) & 0x3 << (i) * 2) != 0) +#define DBREG_DR7_ACCESS(d, i) ((d) >> ((i) * 4 + 16) & 0x3) +#define DBREG_DR7_LEN(d, i) ((d) >> ((i) * 4 + 18) & 0x3) + +#define DBREG_DRX(d,x) ((d)->dr[(x)]) /* reference dr0 - dr15 by + register number */ + #ifdef _KERNEL /* * XXX these interfaces are MI, so they should be declared in a MI place. ==== //depot/projects/uart/arm/arm/nexus.c#7 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.9 2006/10/25 21:11:46 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.10 2006/11/17 11:56:56 cognet Exp $"); #include #include @@ -142,7 +142,7 @@ int i; for (i = rman_get_start(r); i <= rman_get_end(r); i++) - arm_mask_irq(rman_get_start(r)); + arm_mask_irq(i); error = arm_remove_irqhandler(ih); return (error); } ==== //depot/projects/uart/arm/xscale/i80321/ep80219_machdep.c#3 (text+ko) ==== @@ -49,7 +49,7 @@ #include "opt_ddb.h" #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/ep80219_machdep.c,v 1.3 2006/10/26 21:42:17 jb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/ep80219_machdep.c,v 1.4 2006/11/17 00:53:39 kevlo Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -474,7 +474,6 @@ /* Do basic tuning, hz etc */ init_param1(); init_param2(physmem); - avail_end = 0xa0000000 + memsize - 1; kdb_init(); return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP - sizeof(struct pcb))); ==== //depot/projects/uart/arm/xscale/i80321/iq31244_machdep.c#16 (text+ko) ==== @@ -49,7 +49,7 @@ #include "opt_ddb.h" #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.24 2006/10/26 21:42:17 jb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.25 2006/11/17 00:53:39 kevlo Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -477,7 +477,6 @@ /* Do basic tuning, hz etc */ init_param1(); init_param2(physmem); - avail_end = 0xa0000000 + memsize - 1; kdb_init(); return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP - sizeof(struct pcb))); ==== //depot/projects/uart/boot/arm/at91/boot0/Makefile#4 (text) ==== @@ -1,11 +1,14 @@ -# $FreeBSD: src/sys/boot/arm/at91/boot0/Makefile,v 1.4 2006/08/18 20:26:54 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/boot0/Makefile,v 1.5 2006/11/16 00:53:27 imp Exp $ + +.PATH: ${.CURDIR}/../libat91 P=boot0 FILES=${P} -SRCS=arm_init.s main.c +SRCS=arm_init.S main.c NO_MAN= LDFLAGS=-e 0 -T ${.CURDIR}/linker.cfg OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .include +CFLAGS+=-DBOOT_BOOT0 ==== //depot/projects/uart/boot/arm/at91/boot0iic/Makefile#3 (text) ==== @@ -1,12 +1,14 @@ -# $FreeBSD: src/sys/boot/arm/at91/boot0iic/Makefile,v 1.2 2006/08/16 23:14:52 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/boot0iic/Makefile,v 1.3 2006/11/16 00:53:27 imp Exp $ -.PATH: ${.CURDIR}/../boot0 +.PATH: ${.CURDIR}/../libat91 P=boot0iic FILES=${P} -SRCS=arm_init.s main.c +SRCS=arm_init.S main.c NO_MAN= LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .include + +CFLAGS+=-DBOOT_BOOT0 ==== //depot/projects/uart/boot/arm/at91/boot0iic/main.c#4 (text) ==== @@ -21,7 +21,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/arm/at91/boot0iic/main.c,v 1.3 2006/11/09 19:55:25 imp Exp $ + * $FreeBSD: src/sys/boot/arm/at91/boot0iic/main.c,v 1.4 2006/11/16 00:49:50 imp Exp $ */ #include "at91rm9200.h" @@ -32,12 +32,19 @@ main(void) { char *addr = (char *)SDRAM_BASE + (1 << 20); /* Load to base + 1MB */ + int len, sec; - while (xmodem_rx(addr) == -1) + printf("\nSend data to be written into EEPROM\n"); + while ((len = xmodem_rx(addr)) == -1) + continue; + sec = GetSeconds() + 1; + while (sec >= GetSeconds()) continue; + printf("\nWriting EEPROM from 0x%x to addr 0, 0x%x bytes\n", addr, + len); InitEEPROM(); - printf("Writing EEPROM from 0x%x to addr 0\n", addr); - WriteEEPROM(0, addr, 8192); - printf("Write complete. Press reset\n"); + printf("init done\n"); + WriteEEPROM(0, addr, len); + printf("\nWrote %d bytes. Press reset\n", len); return (1); } ==== //depot/projects/uart/boot/arm/at91/boot0spi/Makefile#3 (text) ==== @@ -1,13 +1,14 @@ -# $FreeBSD: src/sys/boot/arm/at91/boot0spi/Makefile,v 1.2 2006/08/16 23:18:07 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/boot0spi/Makefile,v 1.3 2006/11/16 00:53:27 imp Exp $ -.PATH: ${.CURDIR}/../boot0 +.PATH: ${.CURDIR}/../libat91 P=boot0spi FILES=${P} -SRCS=arm_init.s main.c +SRCS=arm_init.S main.c NO_MAN= LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .include +CFLAGS+=-DBOOT_BOOT0 ==== //depot/projects/uart/boot/arm/at91/boot0spi/main.c#4 (text) ==== @@ -21,7 +21,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/arm/at91/boot0spi/main.c,v 1.3 2006/10/21 22:43:07 imp Exp $ + * $FreeBSD: src/sys/boot/arm/at91/boot0spi/main.c,v 1.4 2006/11/16 00:48:53 imp Exp $ */ #include "at91rm9200.h" @@ -29,21 +29,23 @@ #include "at91rm9200_lowlevel.h" #include "spi_flash.h" -#define OFFSET 0 +#define LOADER_OFFSET 0 +#define FPGA_OFFSET (15 * FLASH_PAGE_SIZE) +#define OFFSET LOADER_OFFSET int main(void) { int len, i, j, off; - char *addr = (char *)SDRAM_BASE + (1 << 20); /* Load to base + 1MB */ - char *addr2 = (char *)SDRAM_BASE + (2 << 20); /* Load to base + 2MB */ - char *addr3 = (char *)SDRAM_BASE + (3 << 20); /* Load to base + 2MB */ + char *addr = (char *)SDRAM_BASE + (1 << 20); /* download at + 1MB */ + char *addr2 = (char *)SDRAM_BASE + (2 << 20); /* readback to + 2MB */ + char *addr3 = (char *)SDRAM_BASE + (3 << 20); /* extra copy at + 3MB */ SPI_InitFlash(); printf("Waiting for data\n"); while ((len = xmodem_rx(addr)) == -1) continue; - printf("\nDownloaded %u bytes.\n", len); + // Need extra copy at addr3 memcpy(addr3, addr, (len + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE * FLASH_PAGE_SIZE); printf("Writing %u bytes to flash at %u\n", len, OFFSET); for (i = 0; i < len; i+= FLASH_PAGE_SIZE) { @@ -57,5 +59,6 @@ if (j >= 10) printf("Bad Readback at %u\n", i); } + printf("Done\n"); return (1); } ==== //depot/projects/uart/boot/arm/at91/boot2/Makefile#2 (text+ko) ==== @@ -1,19 +1,16 @@ -# $FreeBSD: src/sys/boot/arm/at91/boot2/Makefile,v 1.2 2006/11/09 20:07:26 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/boot2/Makefile,v 1.3 2006/11/16 00:48:04 imp Exp $ -.PATH: ${.CURDIR}/../libat91 +.PATH: ${.CURDIR}/../libat91 ${.CURDIR}/../bootspi P=boot2 FILES=${P} -SRCS=arm_init.S boot2.c ${BOOT_FLAVOR}_board.c +SRCS=arm_init.S boot2.c ${BOOT_FLAVOR:L}_board.c NO_MAN= LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .include -.if ${BOOT_FLAVOR} == "tsc" -SRCS+=ee.c -.endif .if ${BOOT_FLAVOR} == "kb920x" CFLAGS+=-DBOOT_IIC .endif ==== //depot/projects/uart/boot/arm/at91/boot2/boot2.c#2 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/arm/at91/boot2/boot2.c,v 1.2 2006/11/09 20:07:26 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/arm/at91/boot2/boot2.c,v 1.3 2006/11/16 00:47:31 imp Exp $"); #include #include @@ -29,7 +29,6 @@ #include "emac.h" #include "lib.h" #include "sd-card.h" -#include "ee.h" #include "board.h" #define RBX_ASKNAME 0x0 /* -a */ ==== //depot/projects/uart/boot/arm/at91/bootiic/Makefile#5 (text) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/sys/boot/arm/at91/bootiic/Makefile,v 1.4 2006/11/09 20:23:51 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/bootiic/Makefile,v 1.5 2006/11/16 00:53:27 imp Exp $ -.PATH: ${.CURDIR}/../libat91 +.PATH: ${.CURDIR}/../libat91 P=bootiic FILES=${P} @@ -11,4 +11,4 @@ .include -CFLAGS += -DBOOT_IIC +CFLAGS += -DBOOT_IIC -DBOOT_COMMANDS ==== //depot/projects/uart/boot/arm/at91/bootspi/Makefile#4 (text) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/sys/boot/arm/at91/bootspi/Makefile,v 1.5 2006/11/09 20:45:22 imp Exp $ +# $FreeBSD: src/sys/boot/arm/at91/bootspi/Makefile,v 1.6 2006/11/16 00:53:27 imp Exp $ -.PATH: ${.CURDIR}/../libat91 +.PATH: ${.CURDIR}/../libat91 P=bootspi FILES=${P} @@ -14,3 +14,4 @@ .if ${MK_FPGA} == "yes" CFLAGS += -DTSC_FPGA .endif +CFLAGS += -DBOOT_COMMANDS ==== //depot/projects/uart/boot/i386/loader/main.c#10 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/i386/loader/main.c,v 1.38 2006/11/02 01:23:18 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/loader/main.c,v 1.39 2006/11/16 13:32:30 ru Exp $"); /* * MD bootstrap main() and assorted miscellaneous @@ -191,7 +191,7 @@ extract_currdev(void) { struct i386_devdesc new_currdev; - int major, biosdev = -1; + int biosdev = -1; /* Assume we are booting from a BIOS disk by default */ new_currdev.d_dev = &biosdisk; @@ -222,7 +222,6 @@ B_CONTROLLER(initial_bootdev) - 1; new_currdev.d_kind.biosdisk.partition = B_PARTITION(initial_bootdev); biosdev = initial_bootinfo->bi_bios_dev; - major = B_TYPE(initial_bootdev); /* * If we are booted by an old bootstrap, we have to guess at the BIOS ==== //depot/projects/uart/boot/ia64/common/copy.c#2 (text+ko) ==== @@ -25,18 +25,13 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/ia64/common/copy.c,v 1.8 2006/11/05 22:03:03 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/ia64/common/copy.c,v 1.9 2006/11/19 20:04:11 marcel Exp $"); #include #include #include "libia64.h" -#define LDR_LOG2_PGSZ 20 - -uint64_t *ia64_pgtbl; -uint32_t ia64_pgtblsz; - static void * va2pa(vm_offset_t va, size_t *len) { ==== //depot/projects/uart/boot/ia64/common/libia64.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/ia64/common/libia64.h,v 1.1 2006/11/05 22:03:03 marcel Exp $ + * $FreeBSD: src/sys/boot/ia64/common/libia64.h,v 1.2 2006/11/19 20:04:11 marcel Exp $ */ #ifndef _LIBIA64_H_ @@ -45,9 +45,6 @@ * and shared by all loader implementations. */ -extern uint64_t *ia64_pgtbl; -extern uint32_t ia64_pgtblsz; - extern int ia64_autoload(void); extern ssize_t ia64_copyin(const void *, vm_offset_t, size_t); ==== //depot/projects/uart/compat/linux/linux_emul.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<<