PERFORCE change 84378 for review
John Baldwin
jhb at FreeBSD.org
Tue Sep 27 11:47:04 PDT 2005
http://perforce.freebsd.org/chv.cgi?CH=84378
Change 84378 by jhb at jhb_slimer on 2005/09/27 18:46:44
IFC @84370.
Affected files ...
.. //depot/projects/smpng/sys/alpha/alpha/sgmap.c#5 integrate
.. //depot/projects/smpng/sys/alpha/conf/GENERIC#50 integrate
.. //depot/projects/smpng/sys/alpha/include/atomic.h#32 integrate
.. //depot/projects/smpng/sys/alpha/isa/isa.c#14 integrate
.. //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#23 integrate
.. //depot/projects/smpng/sys/alpha/pci/apecs.c#16 integrate
.. //depot/projects/smpng/sys/alpha/pci/cia.c#20 integrate
.. //depot/projects/smpng/sys/alpha/pci/pcibus.c#8 integrate
.. //depot/projects/smpng/sys/alpha/pci/t2.c#22 integrate
.. //depot/projects/smpng/sys/alpha/pci/tsunami.c#17 integrate
.. //depot/projects/smpng/sys/alpha/pci/tsunami_pci.c#7 integrate
.. //depot/projects/smpng/sys/alpha/tlsb/dwlpx.c#17 integrate
.. //depot/projects/smpng/sys/amd64/amd64/elf_machdep.c#9 integrate
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#43 integrate
.. //depot/projects/smpng/sys/amd64/amd64/nexus.c#17 integrate
.. //depot/projects/smpng/sys/amd64/amd64/trap.c#32 integrate
.. //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#11 integrate
.. //depot/projects/smpng/sys/amd64/include/atomic.h#28 integrate
.. //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#8 integrate
.. //depot/projects/smpng/sys/arm/arm/nexus.c#6 integrate
.. //depot/projects/smpng/sys/arm/include/atomic.h#18 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0.c#5 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0_irqhandler.c#5 integrate
.. //depot/projects/smpng/sys/arm/sa11x0/sa11x0_var.h#2 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321_pci.c#5 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321var.h#3 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq80321.c#7 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/obio.c#3 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/obiovar.h#3 integrate
.. //depot/projects/smpng/sys/boot/common/help.common#19 integrate
.. //depot/projects/smpng/sys/boot/common/loader.8#38 integrate
.. //depot/projects/smpng/sys/boot/efi/libefi/bootinfo.c#10 integrate
.. //depot/projects/smpng/sys/boot/forth/loader.conf#38 integrate
.. //depot/projects/smpng/sys/boot/i386/boot2/boot2.c#27 integrate
.. //depot/projects/smpng/sys/boot/i386/libi386/bootinfo.c#11 integrate
.. //depot/projects/smpng/sys/boot/i386/libi386/libi386.h#9 integrate
.. //depot/projects/smpng/sys/boot/i386/loader/main.c#11 integrate
.. //depot/projects/smpng/sys/boot/ia64/ski/bootinfo.c#3 integrate
.. //depot/projects/smpng/sys/boot/powerpc/loader/metadata.c#6 integrate
.. //depot/projects/smpng/sys/boot/sparc64/loader/metadata.c#15 integrate
.. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_proto.h#20 integrate
.. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscall.h#20 integrate
.. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscalls.c#20 integrate
.. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_sysent.c#20 integrate
.. //depot/projects/smpng/sys/compat/freebsd32/syscalls.master#20 integrate
.. //depot/projects/smpng/sys/conf/NOTES#104 integrate
.. //depot/projects/smpng/sys/conf/files#150 integrate
.. //depot/projects/smpng/sys/conf/files.pc98#76 integrate
.. //depot/projects/smpng/sys/conf/options#106 integrate
.. //depot/projects/smpng/sys/dev/adlink/adlink.c#12 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/ahd_pci.c#18 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.c#25 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_osm.c#19 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx_osm.c#17 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx_pci.c#18 integrate
.. //depot/projects/smpng/sys/dev/an/if_an.c#47 integrate
.. //depot/projects/smpng/sys/dev/an/if_an_pccard.c#17 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-card.c#28 integrate
.. //depot/projects/smpng/sys/dev/cardbus/cardbus.c#26 integrate
.. //depot/projects/smpng/sys/dev/cp/if_cp.c#16 integrate
.. //depot/projects/smpng/sys/dev/ctau/if_ct.c#17 integrate
.. //depot/projects/smpng/sys/dev/cx/if_cx.c#21 integrate
.. //depot/projects/smpng/sys/dev/ed/if_ed.c#35 integrate
.. //depot/projects/smpng/sys/dev/ed/if_ed_pccard.c#34 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.h#27 integrate
.. //depot/projects/smpng/sys/dev/exca/exca.c#15 integrate
.. //depot/projects/smpng/sys/dev/fe/if_fe.c#22 integrate
.. //depot/projects/smpng/sys/dev/fe/if_fe_pccard.c#16 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#66 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxpvar.h#18 integrate
.. //depot/projects/smpng/sys/dev/ieee488/pcii.c#3 integrate
.. //depot/projects/smpng/sys/dev/ieee488/tnt4882.c#2 integrate
.. //depot/projects/smpng/sys/dev/ieee488/upd7210.c#6 integrate
.. //depot/projects/smpng/sys/dev/ieee488/upd7210.h#5 integrate
.. //depot/projects/smpng/sys/dev/if_ndis/if_ndis.c#32 integrate
.. //depot/projects/smpng/sys/dev/ips/ips.c#13 integrate
.. //depot/projects/smpng/sys/dev/ips/ips.h#12 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_commands.c#11 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_disk.c#8 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_ioctl.c#7 integrate
.. //depot/projects/smpng/sys/dev/ixgb/if_ixgb.h#7 integrate
.. //depot/projects/smpng/sys/dev/pccard/card_if.m#16 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard.c#40 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccarddevs#51 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccardvar.h#26 integrate
.. //depot/projects/smpng/sys/dev/pccbb/pccbb.c#51 integrate
.. //depot/projects/smpng/sys/dev/puc/puc.c#23 integrate
.. //depot/projects/smpng/sys/dev/ral/if_ral_pccard.c#4 integrate
.. //depot/projects/smpng/sys/dev/ray/if_ray.c#23 integrate
.. //depot/projects/smpng/sys/dev/sio/sio.c#55 integrate
.. //depot/projects/smpng/sys/dev/sn/if_snreg.h#4 integrate
.. //depot/projects/smpng/sys/dev/snc/if_snc_pccard.c#9 integrate
.. //depot/projects/smpng/sys/dev/stg/tmc18c30_pccard.c#16 integrate
.. //depot/projects/smpng/sys/dev/uart/uart_bus_pccard.c#5 integrate
.. //depot/projects/smpng/sys/dev/usb/ehcivar.h#9 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cdce.c#6 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cdcereg.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb/slhci_pccard.c#2 integrate
.. //depot/projects/smpng/sys/dev/usb/uvscom.c#17 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#36 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wivar.h#22 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs.h#17 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_rule.c#14 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vfsops.c#26 integrate
.. //depot/projects/smpng/sys/fs/fifofs/fifo_vnops.c#37 integrate
.. //depot/projects/smpng/sys/i386/include/atomic.h#45 integrate
.. //depot/projects/smpng/sys/i386/isa/isa.c#11 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_signal.c#3 integrate
.. //depot/projects/smpng/sys/ia64/include/atomic.h#12 integrate
.. //depot/projects/smpng/sys/kern/init_sysent.c#59 integrate
.. //depot/projects/smpng/sys/kern/kern_environment.c#19 integrate
.. //depot/projects/smpng/sys/kern/kern_proc.c#76 integrate
.. //depot/projects/smpng/sys/kern/kern_prot.c#90 integrate
.. //depot/projects/smpng/sys/kern/kern_resource.c#55 integrate
.. //depot/projects/smpng/sys/kern/kern_shutdown.c#61 integrate
.. //depot/projects/smpng/sys/kern/sched_ule.c#62 integrate
.. //depot/projects/smpng/sys/kern/subr_bus.c#55 integrate
.. //depot/projects/smpng/sys/kern/subr_pcpu.c#7 integrate
.. //depot/projects/smpng/sys/kern/subr_prf.c#42 integrate
.. //depot/projects/smpng/sys/kern/subr_rman.c#22 integrate
.. //depot/projects/smpng/sys/kern/subr_witness.c#139 integrate
.. //depot/projects/smpng/sys/kern/syscalls.c#59 integrate
.. //depot/projects/smpng/sys/kern/syscalls.master#61 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#49 integrate
.. //depot/projects/smpng/sys/kern/vfs_export.c#20 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#93 integrate
.. //depot/projects/smpng/sys/modules/Makefile#106 integrate
.. //depot/projects/smpng/sys/modules/agp/Makefile#10 integrate
.. //depot/projects/smpng/sys/modules/ath/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ath_rate_amrr/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ath_rate_onoe/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ath_rate_sample/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/aue/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/axe/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/bfe/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/bge/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/bridge/Makefile#5 delete
.. //depot/projects/smpng/sys/modules/cdce/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/cue/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/dc/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/de/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/dummynet/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/em/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/fxp/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/hifn/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/if_ndis/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/ipw/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/iwi/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ixgb/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/kue/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/lge/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ncv/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/ndis/Makefile#6 integrate
.. //depot/projects/smpng/sys/modules/nge/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/nsp/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/pcn/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ral/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/re/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/rl/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/rue/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/safe/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/sf/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/sis/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/sk/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/snc/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/ste/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/stg/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/ti/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/tl/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/tx/Makefile#6 integrate
.. //depot/projects/smpng/sys/modules/txp/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/ubsec/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/udav/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/ural/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/vge/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/vr/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/vx/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/wb/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/xl/Makefile#2 integrate
.. //depot/projects/smpng/sys/net/bridge.c#40 delete
.. //depot/projects/smpng/sys/net/bridge.h#10 delete
.. //depot/projects/smpng/sys/net/if_bridge.c#10 integrate
.. //depot/projects/smpng/sys/net/if_ethersubr.c#64 integrate
.. //depot/projects/smpng/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c#11 integrate
.. //depot/projects/smpng/sys/netgraph/ng_ether.c#26 integrate
.. //depot/projects/smpng/sys/netinet/if_ether.c#40 integrate
.. //depot/projects/smpng/sys/netinet/in.h#33 integrate
.. //depot/projects/smpng/sys/netinet/in_pcb.h#38 integrate
.. //depot/projects/smpng/sys/netinet/ip_dummynet.c#41 integrate
.. //depot/projects/smpng/sys/netinet/ip_dummynet.h#19 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#60 integrate
.. //depot/projects/smpng/sys/netinet/ip_output.c#77 integrate
.. //depot/projects/smpng/sys/netinet/raw_ip.c#52 integrate
.. //depot/projects/smpng/sys/netinet/udp_usrreq.c#59 integrate
.. //depot/projects/smpng/sys/netipsec/ipsec_mbuf.c#9 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsock.c#23 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#27 integrate
.. //depot/projects/smpng/sys/pc98/conf/GENERIC#57 integrate
.. //depot/projects/smpng/sys/pc98/conf/GENERIC.hints#13 integrate
.. //depot/projects/smpng/sys/pc98/conf/NOTES#42 integrate
.. //depot/projects/smpng/sys/pccard/mecia.c#6 delete
.. //depot/projects/smpng/sys/pccard/pccard.c#25 delete
.. //depot/projects/smpng/sys/pccard/pccard_beep.c#4 delete
.. //depot/projects/smpng/sys/pccard/pccard_nbk.c#15 delete
.. //depot/projects/smpng/sys/pccard/pcic.c#27 delete
.. //depot/projects/smpng/sys/pccard/pcic_isa.c#12 delete
.. //depot/projects/smpng/sys/pccard/pcic_pci.c#33 delete
.. //depot/projects/smpng/sys/pci/if_sis.c#54 integrate
.. //depot/projects/smpng/sys/pci/if_sisreg.h#17 integrate
.. //depot/projects/smpng/sys/pci/if_wb.c#33 integrate
.. //depot/projects/smpng/sys/powerpc/include/atomic.h#17 integrate
.. //depot/projects/smpng/sys/sparc64/include/atomic.h#15 integrate
.. //depot/projects/smpng/sys/sys/bus.h#25 integrate
.. //depot/projects/smpng/sys/sys/proc.h#150 integrate
.. //depot/projects/smpng/sys/sys/refcount.h#1 branch
.. //depot/projects/smpng/sys/sys/resourcevar.h#25 integrate
.. //depot/projects/smpng/sys/sys/rman.h#13 integrate
.. //depot/projects/smpng/sys/sys/syscall.h#58 integrate
.. //depot/projects/smpng/sys/sys/syscall.mk#58 integrate
.. //depot/projects/smpng/sys/sys/sysproto.h#60 integrate
.. //depot/projects/smpng/sys/sys/types.h#30 integrate
.. //depot/projects/smpng/sys/sys/ucred.h#27 integrate
.. //depot/projects/smpng/sys/tools/bus_macro.sh#1 branch
.. //depot/projects/smpng/sys/ufs/ufs/ufs_inode.c#22 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#53 integrate
Differences ...
==== //depot/projects/smpng/sys/alpha/alpha/sgmap.c#5 (text+ko) ====
@@ -25,9 +25,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/sgmap.c,v 1.7 2004/07/01 15:07:26 gallatin Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/sgmap.c,v 1.8 2005/09/25 20:12:29 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
==== //depot/projects/smpng/sys/alpha/conf/GENERIC#50 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.187 2005/07/14 15:39:04 kensmith Exp $
+# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.188 2005/09/24 16:47:34 wilko Exp $
machine alpha
cpu EV4
@@ -86,6 +86,9 @@
# To make an SMP kernel, the next line is needed
options SMP # Symmetric MultiProcessor Kernel
+# Alpha's do not appear to react well to probing high EISA slots
+options EISA_SLOTS=2
+
# Standard busses
device isa
device eisa
==== //depot/projects/smpng/sys/alpha/include/atomic.h#32 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/alpha/include/atomic.h,v 1.23 2005/09/15 19:31:22 jhb Exp $
+ * $FreeBSD: src/sys/alpha/include/atomic.h,v 1.24 2005/09/27 17:39:09 jhb Exp $
*/
#ifndef _MACHINE_ATOMIC_H_
@@ -365,6 +365,27 @@
return (atomic_cmpset_64(p, cmpval, newval));
}
+/*
+ * Atomically add the value of v to the integer pointed to by p and return
+ * the previous value of *p.
+ */
+static __inline u_int
+atomic_fetchadd_32(volatile u_int32_t *p, u_int32_t v)
+{
+ u_int32_t value, temp;
+
+#ifdef __GNUCLIKE_ASM
+ __asm __volatile (
+ "1:\tldl_l %0, %1\n\t" /* load old value */
+ "addl %0, %3, %2\n\t" /* calculate new value */
+ "stl_c %2, %1\n\t" /* attempt to store */
+ "beq %2, 1b\n" /* spin if failed */
+ : "=&r" (value), "=m" (*p), "=r" (temp)
+ : "r" (v), "m" (*p));
+#endif
+ return (value);
+}
+
/* Operations on chars. */
#define atomic_set_char atomic_set_8
#define atomic_set_acq_char atomic_set_acq_8
@@ -412,6 +433,7 @@
#define atomic_load_acq_int atomic_load_acq_32
#define atomic_store_rel_int atomic_store_rel_32
#define atomic_readandclear_int atomic_readandclear_32
+#define atomic_fetchadd_int atomic_fetchadd_32
/* Operations on longs. */
#define atomic_set_long atomic_set_64
==== //depot/projects/smpng/sys/alpha/isa/isa.c#14 (text+ko) ====
@@ -25,9 +25,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/isa/isa.c,v 1.36 2004/07/01 15:07:26 gallatin Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/isa/isa.c,v 1.37 2005/09/25 19:34:54 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -359,28 +358,28 @@
return ENOMEM;
ii->intr = intr;
ii->arg = arg;
- ii->irq = irq->r_start;
+ ii->irq = rman_get_start(irq);
error = alpha_setup_intr(
device_get_nameunit(child ? child : dev),
- 0x800 + (irq->r_start << 4),
+ 0x800 + (ii->irq << 4),
((flags & INTR_FAST) ? isa_handle_fast_intr :
isa_handle_intr), ii, flags, &ii->ih,
- &intrcnt[INTRCNT_ISA_IRQ + irq->r_start],
+ &intrcnt[INTRCNT_ISA_IRQ + ii->irq],
isa_disable_intr, isa_enable_intr);
if (error) {
free(ii, M_DEVBUF);
return error;
}
mtx_lock_spin(&icu_lock);
- isa_intr_enable(irq->r_start);
+ isa_intr_enable(ii->irq);
mtx_unlock_spin(&icu_lock);
*cookiep = ii;
if (child)
device_printf(child, "interrupting at ISA irq %d\n",
- (int)irq->r_start);
+ (int)ii->irq);
return 0;
}
@@ -406,11 +405,10 @@
if (num_handlers == 1) {
mtx_lock_spin(&icu_lock);
- isa_intr_disable(irq->r_start);
+ isa_intr_disable(ii->irq);
mtx_unlock_spin(&icu_lock);
if (platform.isa_teardown_intr) {
- platform.isa_teardown_intr(dev, child, irq,
- cookie);
+ platform.isa_teardown_intr(dev, child, irq, cookie);
return 0;
}
==== //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#23 (text+ko) ====
@@ -25,9 +25,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.31 2005/09/19 13:50:07 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.32 2005/09/25 20:12:29 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -430,7 +429,7 @@
struct mcpcia_softc *sc = MCPCIA_SOFTC(dev);
int mid, birq, irq, error, h;
- irq = ir->r_start;
+ irq = rman_get_start(ir);
mid = mcbus_get_mid(dev);
error = rman_activate_resource(ir);
@@ -469,7 +468,7 @@
struct mcpcia_softc *sc = MCPCIA_SOFTC(dev);
mtx_lock_spin(&icu_lock);
- mcpcia_disable_intr(sc, i->r_start);
+ mcpcia_disable_intr(sc, rman_get_start(i));
mtx_unlock_spin(&icu_lock);
alpha_teardown_intr(c);
return (rman_deactivate_resource(i));
==== //depot/projects/smpng/sys/alpha/pci/apecs.c#16 (text+ko) ====
@@ -55,9 +55,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/apecs.c,v 1.28 2005/09/19 13:50:07 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/apecs.c,v 1.29 2005/09/25 19:48:51 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -338,8 +337,9 @@
struct resource *irq, int flags,
driver_intr_t *intr, void *arg, void **cookiep)
{
- int error;
+ int error, start;
+ start = rman_get_start(irq);
/*
* the avanti routes interrupts through the isa interrupt
* controller, so we need to special case it
@@ -353,19 +353,19 @@
return error;
error = alpha_setup_intr(device_get_nameunit(child ? child : dev),
- 0x900 + (irq->r_start << 4), intr, arg, flags, cookiep,
- &intrcnt[INTRCNT_EB64PLUS_IRQ + irq->r_start],
+ 0x900 + (start << 4), intr, arg, flags, cookiep,
+ &intrcnt[INTRCNT_EB64PLUS_IRQ + start],
apecs_disable_intr, apecs_enable_intr);
if (error)
return error;
/* Enable PCI interrupt */
mtx_lock_spin(&icu_lock);
- platform.pci_intr_enable(irq->r_start);
+ platform.pci_intr_enable(start);
mtx_unlock_spin(&icu_lock);
- device_printf(child, "interrupting at APECS irq %d\n",
- (int) irq->r_start);
+ device_printf(child, "interrupting at APECS irq %d\n", start);
+
return 0;
==== //depot/projects/smpng/sys/alpha/pci/cia.c#20 (text+ko) ====
@@ -87,11 +87,10 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/cia.c,v 1.45 2005/09/19 13:50:07 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/cia.c,v 1.46 2005/09/25 20:12:29 phk Exp $");
#include "opt_cpu.h"
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -545,27 +544,27 @@
struct resource *irq, int flags,
driver_intr_t *intr, void *arg, void **cookiep)
{
- int error;
+ int error, start;
error = rman_activate_resource(irq);
if (error)
return error;
+ start = rman_get_start(irq);
error = alpha_setup_intr(
device_get_nameunit(child ? child : dev),
- 0x900 + (irq->r_start << 4), intr, arg, flags, cookiep,
- &intrcnt[INTRCNT_EB164_IRQ + irq->r_start],
+ 0x900 + (start << 4), intr, arg, flags, cookiep,
+ &intrcnt[INTRCNT_EB164_IRQ + start],
cia_disable_intr, cia_enable_intr);
if (error)
return error;
/* Enable PCI interrupt */
mtx_lock_spin(&icu_lock);
- platform.pci_intr_enable(irq->r_start);
+ platform.pci_intr_enable(start);
mtx_unlock_spin(&icu_lock);
- device_printf(child, "interrupting at CIA irq %d\n",
- (int) irq->r_start);
+ device_printf(child, "interrupting at CIA irq %d\n", start);
return 0;
}
==== //depot/projects/smpng/sys/alpha/pci/pcibus.c#8 (text+ko) ====
@@ -25,11 +25,10 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/pcibus.c,v 1.36 2005/01/05 20:05:52 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/pcibus.c,v 1.37 2005/09/25 20:12:29 phk Exp $");
#include "opt_isa.h"
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -160,7 +159,7 @@
* XXX - If we aren't the resource manager for this IRQ, assume that
* it is actually handled by the ISA PIC.
*/
- if(irq->r_rm != &irq_rman)
+ if (!rman_is_region_manager(irq, &irq_rman))
return isa_setup_intr(dev, child, irq, flags, intr, arg,
cookiep);
else
@@ -178,7 +177,7 @@
* XXX - If we aren't the resource manager for this IRQ, assume that
* it is actually handled by the ISA PIC.
*/
- if(irq->r_rm != &irq_rman)
+ if (!rman_is_region_manager(irq, &irq_rman))
return isa_teardown_intr(dev, child, irq, cookie);
else
#endif
@@ -224,6 +223,7 @@
struct rman *rm;
struct resource *rv;
void *va;
+ int rstart;
switch (type) {
case SYS_RES_IRQ:
@@ -252,17 +252,18 @@
if (rv == 0)
return 0;
+ rstart = rman_get_start(rv);
rman_set_bustag(rv, ALPHAPCI_GET_BUSTAG(bus, type));
- rman_set_bushandle(rv, rv->r_start);
+ rman_set_bushandle(rv, rstart);
switch (type) {
case SYS_RES_MEMORY:
va = 0;
if (flags & PCI_RF_DENSE)
- va = ALPHAPCI_CVT_DENSE(bus, rv->r_start);
+ va = ALPHAPCI_CVT_DENSE(bus, rstart);
else if (flags & PCI_RF_BWX)
- va = ALPHAPCI_CVT_BWX(bus, rv->r_start);
+ va = ALPHAPCI_CVT_BWX(bus, rstart);
else
- va = (void *)ALPHA_PHYS_TO_K0SEG(rv->r_start);
+ va = (void *)ALPHA_PHYS_TO_K0SEG(rstart);
rman_set_virtual(rv, va);
break;
==== //depot/projects/smpng/sys/alpha/pci/t2.c#22 (text+ko) ====
@@ -51,9 +51,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/t2.c,v 1.23 2005/09/19 13:50:07 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/t2.c,v 1.24 2005/09/25 20:12:29 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -536,12 +535,12 @@
struct resource *irq, int flags,
void *intr, void *arg, void **cookiep)
{
- int error, vector, stdio_irq;
+ int error, vector, stdio_irq, start;
const char *name;
device_t bus, parent;
name = device_get_nameunit(dev);
- stdio_irq = irq->r_start;
+ start = stdio_irq = rman_get_start(irq);
if (strncmp(name, "eisa", 4) == 0) {
if ((stdio_irq != 6 ) && (stdio_irq != 3 )) {
stdio_irq =
@@ -568,7 +567,7 @@
error = alpha_setup_intr(device_get_nameunit(child ? child : dev),
vector, intr, arg, flags, cookiep,
- &intrcnt[irq->r_start], t2_disable_vec, t2_enable_vec);
+ &intrcnt[start], t2_disable_vec, t2_enable_vec);
if (error)
return error;
@@ -579,7 +578,7 @@
if (bootverbose != 0)
device_printf(child,
"interrupting at T2 irq %d (stdio irq %d)\n",
- (int) irq->r_start, stdio_irq);
+ start, stdio_irq);
return 0;
}
@@ -589,7 +588,7 @@
{
int mask;
- mask = irq_to_mask[irq->r_start];
+ mask = irq_to_mask[rman_get_start(irq)];
/* Disable interrupt */
==== //depot/projects/smpng/sys/alpha/pci/tsunami.c#17 (text+ko) ====
@@ -25,11 +25,10 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/tsunami.c,v 1.25 2005/09/19 13:50:07 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/tsunami.c,v 1.26 2005/09/25 20:12:29 phk Exp $");
#include "opt_cpu.h"
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -337,26 +336,27 @@
struct resource *irq, int flags,
driver_intr_t *intr, void *arg, void **cookiep)
{
- int error;
+ int error, start;
error = rman_activate_resource(irq);
if (error)
return error;
+ start = rman_get_start(irq);
+
error = alpha_setup_intr(device_get_nameunit(child ? child : dev),
- 0x900 + (irq->r_start << 4), intr, arg, flags, cookiep,
- &intrcnt[INTRCNT_EB164_IRQ + irq->r_start],
+ 0x900 + (start << 4), intr, arg, flags, cookiep,
+ &intrcnt[INTRCNT_EB164_IRQ + start],
tsunami_disable_intr_vec, tsunami_enable_intr_vec);
if (error)
return error;
/* Enable PCI interrupt */
mtx_lock_spin(&icu_lock);
- platform.pci_intr_enable(irq->r_start);
+ platform.pci_intr_enable(start);
mtx_unlock_spin(&icu_lock);
- device_printf(child, "interrupting at TSUNAMI irq %d\n",
- (int) irq->r_start);
+ device_printf(child, "interrupting at TSUNAMI irq %d\n", start);
return 0;
}
==== //depot/projects/smpng/sys/alpha/pci/tsunami_pci.c#7 (text+ko) ====
@@ -25,9 +25,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/pci/tsunami_pci.c,v 1.17 2004/07/01 15:07:27 gallatin Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/pci/tsunami_pci.c,v 1.18 2005/09/25 20:12:29 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
==== //depot/projects/smpng/sys/alpha/tlsb/dwlpx.c#17 (text+ko) ====
@@ -56,9 +56,8 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/tlsb/dwlpx.c,v 1.29 2005/09/19 13:50:07 ticso Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/tlsb/dwlpx.c,v 1.30 2005/09/25 20:12:30 phk Exp $");
-#define __RMAN_RESOURCE_VISIBLE
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
==== //depot/projects/smpng/sys/amd64/amd64/elf_machdep.c#9 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.22 2004/08/11 02:35:04 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.23 2005/09/27 18:18:23 peter Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -195,6 +195,7 @@
break;
case R_X86_64_GLOB_DAT: /* S */
+ case R_X86_64_JMP_SLOT: /* XXX need addend + offset */
addr = lookup(lf, symidx, 1);
if (addr == 0)
return -1;
==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#43 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.638 2005/06/29 22:28:45 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.640 2005/09/27 18:15:57 peter Exp $");
#include "opt_atalk.h"
#include "opt_atpic.h"
@@ -189,8 +189,8 @@
#ifdef PERFMON
perfmon_init();
#endif
- printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)Maxmem),
- ptoa((uintmax_t)Maxmem) / 1048576);
+ printf("usable memory = %ju (%ju MB)\n", ptoa((uintmax_t)physmem),
+ ptoa((uintmax_t)physmem) / 1048576);
realmem = Maxmem;
/*
* Display any holes after the first chunk of extended memory.
@@ -1726,11 +1726,15 @@
* check for undefined settings. Setting these bit patterns
* result in undefined behaviour and can lead to an unexpected
* 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)
return (EINVAL);
+ if ((dbregs->dr[6] & 0xffffffff00000000ul) != 0 ||
+ (dbregs->dr[7] & 0xffffffff00000000ul) != 0)
+ return (EINVAL);
pcb = td->td_pcb;
==== //depot/projects/smpng/sys/amd64/amd64/nexus.c#17 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.66 2005/03/18 11:57:43 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/nexus.c,v 1.67 2005/09/25 20:03:41 phk Exp $");
/*
* This code implements a `root nexus' for Intel Architecture
@@ -41,7 +41,6 @@
* and I/O memory address space.
*/
-#define __RMAN_RESOURCE_VISIBLE
#include "opt_isa.h"
#include <sys/param.h>
==== //depot/projects/smpng/sys/amd64/amd64/trap.c#32 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.291 2005/09/19 16:51:40 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.292 2005/09/27 18:13:07 peter Exp $");
/*
* AMD64 Trap and System call handling
@@ -220,9 +220,9 @@
type);
/*
* We shouldn't enable interrupts while in a critical
- * section.
+ * section or servicing an NMI.
*/
- if (td->td_critnest == 0)
+ if (type != T_NMI && td->td_critnest == 0)
enable_intr();
}
}
==== //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#11 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.10 2004/04/05 23:55:14 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.11 2005/09/27 18:04:20 peter Exp $");
#include "opt_compat.h"
@@ -92,38 +92,14 @@
static void
ia32_get_fpcontext(struct thread *td, struct ia32_mcontext *mcp)
{
- struct savefpu *addr;
- /*
- * XXX mc_fpstate might be misaligned, since its declaration is not
- * unportabilized using __attribute__((aligned(16))) like the
- * declaration of struct savemm, and anyway, alignment doesn't work
- * for auto variables since we don't use gcc's pessimal stack
- * alignment. Work around this by abusing the spare fields after
- * mcp->mc_fpstate.
- *
- * XXX unpessimize most cases by only aligning when fxsave might be
- * called, although this requires knowing too much about
- * fpugetregs()'s internals.
- */
- addr = (struct savefpu *)&mcp->mc_fpstate;
- if (td == PCPU_GET(fpcurthread) && ((uintptr_t)(void *)addr & 0xF)) {
- do
- addr = (void *)((char *)addr + 4);
- while ((uintptr_t)(void *)addr & 0xF);
- }
- mcp->mc_ownedfp = fpugetregs(td, addr);
- if (addr != (struct savefpu *)&mcp->mc_fpstate) {
- bcopy(addr, &mcp->mc_fpstate, sizeof(mcp->mc_fpstate));
- bzero(&mcp->mc_spare2, sizeof(mcp->mc_spare2));
- }
+ mcp->mc_ownedfp = fpugetregs(td, (struct savefpu *)&mcp->mc_fpstate);
mcp->mc_fpformat = fpuformat();
}
static int
ia32_set_fpcontext(struct thread *td, const struct ia32_mcontext *mcp)
{
- struct savefpu *addr;
if (mcp->mc_fpformat == _MC_FPFMT_NODEV)
return (0);
@@ -134,31 +110,180 @@
fpstate_drop(td);
else if (mcp->mc_ownedfp == _MC_FPOWNED_FPU ||
mcp->mc_ownedfp == _MC_FPOWNED_PCB) {
- /* XXX align as above. */
- addr = (struct savefpu *)&mcp->mc_fpstate;
- if (td == PCPU_GET(fpcurthread) &&
- ((uintptr_t)(void *)addr & 0xF)) {
- do
- addr = (void *)((char *)addr + 4);
- while ((uintptr_t)(void *)addr & 0xF);
- bcopy(&mcp->mc_fpstate, addr, sizeof(mcp->mc_fpstate));
- }
/*
* XXX we violate the dubious requirement that fpusetregs()
* be called with interrupts disabled.
*/
- fpusetregs(td, addr);
- /*
- * Don't bother putting things back where they were in the
- * misaligned case, since we know that the caller won't use
- * them again.
- */
+ fpusetregs(td, (struct savefpu *)&mcp->mc_fpstate);
} else
return (EINVAL);
return (0);
}
/*
+ * Get machine context.
+ */
+static int
+ia32_get_mcontext(struct thread *td, struct ia32_mcontext *mcp, int flags)
+{
+ struct trapframe *tp;
+
+ tp = td->td_frame;
+
+ PROC_LOCK(curthread->td_proc);
+ mcp->mc_onstack = sigonstack(tp->tf_rsp);
+ PROC_UNLOCK(curthread->td_proc);
+ mcp->mc_gs = td->td_pcb->pcb_gs;
+ mcp->mc_fs = td->td_pcb->pcb_fs;
+ mcp->mc_es = td->td_pcb->pcb_es;
+ mcp->mc_ds = td->td_pcb->pcb_ds;
+ mcp->mc_edi = tp->tf_rdi;
+ mcp->mc_esi = tp->tf_rsi;
+ mcp->mc_ebp = tp->tf_rbp;
+ mcp->mc_isp = tp->tf_rsp;
+ if (flags & GET_MC_CLEAR_RET) {
+ mcp->mc_eax = 0;
+ mcp->mc_edx = 0;
+ } else {
+ mcp->mc_eax = tp->tf_rax;
+ mcp->mc_edx = tp->tf_rdx;
+ }
+ mcp->mc_ebx = tp->tf_rbx;
+ mcp->mc_ecx = tp->tf_rcx;
+ mcp->mc_eip = tp->tf_rip;
+ mcp->mc_cs = tp->tf_cs;
+ mcp->mc_eflags = tp->tf_rflags;
+ mcp->mc_esp = tp->tf_rsp;
+ mcp->mc_ss = tp->tf_ss;
+ mcp->mc_len = sizeof(*mcp);
+ ia32_get_fpcontext(td, mcp);
+ return (0);
+}
+
+/*
+ * Set machine context.
+ *
+ * However, we don't set any but the user modifiable flags, and we won't
+ * touch the cs selector.
+ */
+static int
+ia32_set_mcontext(struct thread *td, const struct ia32_mcontext *mcp)
+{
+ struct trapframe *tp;
+ long rflags;
+ int ret;
+
+ tp = td->td_frame;
+ if (mcp->mc_len != sizeof(*mcp))
+ return (EINVAL);
+ rflags = (mcp->mc_eflags & PSL_USERCHANGE) |
+ (tp->tf_rflags & ~PSL_USERCHANGE);
+ ret = ia32_set_fpcontext(td, mcp);
+ if (ret != 0)
+ return (ret);
+#if 0 /* XXX deal with load_fs() and friends */
+ tp->tf_fs = mcp->mc_fs;
+ tp->tf_es = mcp->mc_es;
+ tp->tf_ds = mcp->mc_ds;
+#endif
+ tp->tf_rdi = mcp->mc_edi;
+ tp->tf_rsi = mcp->mc_esi;
+ tp->tf_rbp = mcp->mc_ebp;
+ tp->tf_rbx = mcp->mc_ebx;
+ tp->tf_rdx = mcp->mc_edx;
+ tp->tf_rcx = mcp->mc_ecx;
+ tp->tf_rax = mcp->mc_eax;
+ /* trapno, err */
+ tp->tf_rip = mcp->mc_eip;
+ tp->tf_rflags = rflags;
+ tp->tf_rsp = mcp->mc_esp;
+ tp->tf_ss = mcp->mc_ss;
+#if 0 /* XXX deal with load_gs() and friends */
+ td->td_pcb->pcb_gs = mcp->mc_gs;
+#endif
+ td->td_pcb->pcb_flags |= PCB_FULLCTX;
+ return (0);
+}
+
+/*
+ * The first two fields of a ucontext_t are the signal mask and
+ * the machine context. The next field is uc_link; we want to
+ * avoid destroying the link when copying out contexts.
+ */
+#define UC_COPY_SIZE offsetof(struct ia32_ucontext, uc_link)
+
+int
+freebsd32_getcontext(struct thread *td, struct freebsd32_getcontext_args *uap)
+{
+ struct ia32_ucontext uc;
+ int ret;
+
+ if (uap->ucp == NULL)
+ ret = EINVAL;
+ else {
+ ia32_get_mcontext(td, &uc.uc_mcontext, GET_MC_CLEAR_RET);
+ PROC_LOCK(td->td_proc);
+ uc.uc_sigmask = td->td_sigmask;
+ PROC_UNLOCK(td->td_proc);
+ ret = copyout(&uc, uap->ucp, UC_COPY_SIZE);
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list