PERFORCE change 157361 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Sun Feb 8 03:43:06 PST 2009
http://perforce.freebsd.org/chv.cgi?CH=157361
Change 157361 by hselasky at hselasky_laptop001 on 2009/02/08 11:42:15
IFC @ 157360
Affected files ...
.. //depot/projects/usb/src/sys/amd64/amd64/exception.S#9 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#12 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#16 integrate
.. //depot/projects/usb/src/sys/amd64/conf/NOTES#14 integrate
.. //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#7 integrate
.. //depot/projects/usb/src/sys/amd64/include/legacyvar.h#3 integrate
.. //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#6 integrate
.. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#15 integrate
.. //depot/projects/usb/src/sys/arm/arm/dump_machdep.c#6 integrate
.. //depot/projects/usb/src/sys/arm/arm/elf_trampoline.c#10 integrate
.. //depot/projects/usb/src/sys/arm/arm/pmap.c#13 integrate
.. //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#8 integrate
.. //depot/projects/usb/src/sys/arm/conf/AVILA#11 integrate
.. //depot/projects/usb/src/sys/arm/conf/AVILA.hints#4 integrate
.. //depot/projects/usb/src/sys/arm/include/atomic.h#6 integrate
.. //depot/projects/usb/src/sys/arm/sa11x0/assabet_machdep.c#7 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#10 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#6 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#7 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#4 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#27 integrate
.. //depot/projects/usb/src/sys/conf/files#50 integrate
.. //depot/projects/usb/src/sys/conf/options#20 integrate
.. //depot/projects/usb/src/sys/conf/options.amd64#7 integrate
.. //depot/projects/usb/src/sys/conf/options.i386#9 integrate
.. //depot/projects/usb/src/sys/conf/options.ia64#3 integrate
.. //depot/projects/usb/src/sys/conf/options.mips#3 integrate
.. //depot/projects/usb/src/sys/conf/options.pc98#7 integrate
.. //depot/projects/usb/src/sys/crypto/via/padlock.c#8 integrate
.. //depot/projects/usb/src/sys/dev/acpi_support/acpi_panasonic.c#4 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_pcib_acpi.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ae/if_ae.c#3 integrate
.. //depot/projects/usb/src/sys/dev/agp/agp.c#5 integrate
.. //depot/projects/usb/src/sys/dev/an/if_an.c#7 integrate
.. //depot/projects/usb/src/sys/dev/an/if_anreg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#11 integrate
.. //depot/projects/usb/src/sys/dev/ata/atapi-cam.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ata/atapi-cd.c#8 integrate
.. //depot/projects/usb/src/sys/dev/ata/atapi-fd.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ata/atapi-tape.c#7 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212.h#3 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ath/if_ath.c#16 integrate
.. //depot/projects/usb/src/sys/dev/ath/if_athioctl.h#6 integrate
.. //depot/projects/usb/src/sys/dev/atkbdc/atkbdc_isa.c#3 integrate
.. //depot/projects/usb/src/sys/dev/bge/if_bge.c#14 integrate
.. //depot/projects/usb/src/sys/dev/bm/if_bm.c#6 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#9 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus_device.c#6 integrate
.. //depot/projects/usb/src/sys/dev/cfi/cfi_bus_ixp4xx.c#1 branch
.. //depot/projects/usb/src/sys/dev/cfi/cfi_core.c#2 integrate
.. //depot/projects/usb/src/sys/dev/cfi/cfi_dev.c#2 integrate
.. //depot/projects/usb/src/sys/dev/cfi/cfi_reg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/cfi/cfi_var.h#2 integrate
.. //depot/projects/usb/src/sys/dev/exca/exca.c#5 integrate
.. //depot/projects/usb/src/sys/dev/firewire/firewire.c#9 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwohci.c#6 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwohci_pci.c#6 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwohcivar.h#4 integrate
.. //depot/projects/usb/src/sys/dev/firewire/sbp.c#6 integrate
.. //depot/projects/usb/src/sys/dev/fxp/if_fxp.c#8 integrate
.. //depot/projects/usb/src/sys/dev/hifn/hifn7751.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ichsmb/ichsmb.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ipmi/ipmi_acpi.c#2 integrate
.. //depot/projects/usb/src/sys/dev/ipmi/ipmi_smbios.c#4 integrate
.. //depot/projects/usb/src/sys/dev/kbdmux/kbdmux.c#8 integrate
.. //depot/projects/usb/src/sys/dev/lmc/if_lmc.c#9 integrate
.. //depot/projects/usb/src/sys/dev/lmc/if_lmc.h#5 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmc.c#8 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmcreg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/my/if_my.c#6 integrate
.. //depot/projects/usb/src/sys/dev/nve/if_nve.c#7 integrate
.. //depot/projects/usb/src/sys/dev/pccard/card_if.m#2 integrate
.. //depot/projects/usb/src/sys/dev/pccard/pccard.c#5 integrate
.. //depot/projects/usb/src/sys/dev/pccard/pccard_cis.c#6 integrate
.. //depot/projects/usb/src/sys/dev/pccard/pccardvarp.h#4 integrate
.. //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#10 integrate
.. //depot/projects/usb/src/sys/dev/pccbb/pccbb_pci.c#8 integrate
.. //depot/projects/usb/src/sys/dev/pccbb/pccbbvar.h#7 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci_user.c#5 integrate
.. //depot/projects/usb/src/sys/dev/pci/pcireg.h#9 integrate
.. //depot/projects/usb/src/sys/dev/pcn/if_pcn.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppbconf.h#7 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppc.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppcvar.h#5 integrate
.. //depot/projects/usb/src/sys/dev/safe/safe.c#5 integrate
.. //depot/projects/usb/src/sys/dev/scc/scc_if.m#3 integrate
.. //depot/projects/usb/src/sys/dev/si/si.c#6 integrate
.. //depot/projects/usb/src/sys/dev/smbus/smb.c#5 integrate
.. //depot/projects/usb/src/sys/dev/snp/snp.c#10 integrate
.. //depot/projects/usb/src/sys/dev/sound/macio/aoa.c#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/macio/aoa.h#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/macio/davbus.c#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/macio/i2s.c#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/macio/snapper.c#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/macio/tumbler.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_rum.c#37 integrate
.. //depot/projects/usb/src/sys/dev/usb/if_urtw.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#42 integrate
.. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#31 integrate
.. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#28 integrate
.. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#28 integrate
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_error.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devid.h#28 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devtable.h#28 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_error.h#5 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_hid.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_mfunc.h#5 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_revision.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#25 integrate
.. //depot/projects/usb/src/sys/dev/xen/netback/netback.c#2 integrate
.. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#6 integrate
.. //depot/projects/usb/src/sys/fs/fifofs/fifo_vnops.c#9 integrate
.. //depot/projects/usb/src/sys/fs/udf/ecma167-udf.h#3 integrate
.. //depot/projects/usb/src/sys/fs/udf/udf.h#3 integrate
.. //depot/projects/usb/src/sys/fs/udf/udf_vfsops.c#8 integrate
.. //depot/projects/usb/src/sys/fs/udf/udf_vnops.c#10 integrate
.. //depot/projects/usb/src/sys/geom/geom_subr.c#9 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part_bsd.c#8 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part_mbr.c#6 integrate
.. //depot/projects/usb/src/sys/i386/conf/NOTES#16 integrate
.. //depot/projects/usb/src/sys/i386/i386/vm_machdep.c#11 integrate
.. //depot/projects/usb/src/sys/i386/xen/clock.c#4 integrate
.. //depot/projects/usb/src/sys/i386/xen/xen_machdep.c#7 integrate
.. //depot/projects/usb/src/sys/ia64/conf/NOTES#4 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/mca.c#3 integrate
.. //depot/projects/usb/src/sys/ia64/include/mca.h#2 integrate
.. //depot/projects/usb/src/sys/kern/kern_jail.c#16 integrate
.. //depot/projects/usb/src/sys/kern/kern_linker.c#12 integrate
.. //depot/projects/usb/src/sys/kern/kern_lock.c#11 integrate
.. //depot/projects/usb/src/sys/kern/kern_sysctl.c#11 integrate
.. //depot/projects/usb/src/sys/kern/subr_autoconf.c#5 integrate
.. //depot/projects/usb/src/sys/kern/subr_bus.c#16 integrate
.. //depot/projects/usb/src/sys/kern/subr_clist.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_devstat.c#2 integrate
.. //depot/projects/usb/src/sys/kern/subr_disk.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_firmware.c#8 integrate
.. //depot/projects/usb/src/sys/kern/subr_kobj.c#3 integrate
.. //depot/projects/usb/src/sys/kern/subr_prf.c#8 integrate
.. //depot/projects/usb/src/sys/kern/subr_prof.c#5 integrate
.. //depot/projects/usb/src/sys/kern/subr_rman.c#9 integrate
.. //depot/projects/usb/src/sys/kern/subr_rtc.c#3 integrate
.. //depot/projects/usb/src/sys/kern/subr_taskqueue.c#7 integrate
.. //depot/projects/usb/src/sys/kern/subr_witness.c#16 integrate
.. //depot/projects/usb/src/sys/kern/sys_generic.c#11 integrate
.. //depot/projects/usb/src/sys/kern/tty.c#16 integrate
.. //depot/projects/usb/src/sys/kern/tty_inq.c#2 integrate
.. //depot/projects/usb/src/sys/kern/tty_outq.c#2 integrate
.. //depot/projects/usb/src/sys/kern/uipc_socket.c#16 integrate
.. //depot/projects/usb/src/sys/kern/vfs_bio.c#13 integrate
.. //depot/projects/usb/src/sys/kern/vfs_init.c#4 integrate
.. //depot/projects/usb/src/sys/kern/vfs_mount.c#17 integrate
.. //depot/projects/usb/src/sys/kern/vfs_subr.c#17 integrate
.. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#16 integrate
.. //depot/projects/usb/src/sys/mips/mips/busdma_machdep.c#3 integrate
.. //depot/projects/usb/src/sys/modules/libalias/libalias/Makefile#3 integrate
.. //depot/projects/usb/src/sys/net/if.c#17 integrate
.. //depot/projects/usb/src/sys/net/if_ethersubr.c#14 integrate
.. //depot/projects/usb/src/sys/net/rtsock.c#18 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211.c#14 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211_crypto.h#8 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211_ddb.c#9 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211_scan_sta.c#8 integrate
.. //depot/projects/usb/src/sys/netatalk/ddp_usrreq.c#6 integrate
.. //depot/projects/usb/src/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c#6 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#17 integrate
.. //depot/projects/usb/src/sys/netinet/in_pcb.c#18 integrate
.. //depot/projects/usb/src/sys/netinet/ip_divert.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/ip_fw_nat.c#6 integrate
.. //depot/projects/usb/src/sys/netinet/ip_ipsec.c#10 integrate
.. //depot/projects/usb/src/sys/netinet/ip_output.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias.c#6 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias_db.c#9 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias_local.h#5 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias_sctp.c#1 branch
.. //depot/projects/usb/src/sys/netinet/libalias/alias_sctp.h#1 branch
.. //depot/projects/usb/src/sys/netinet/raw_ip.c#17 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_auth.c#9 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_constants.h#12 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_crc32.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_crc32.h#4 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_input.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#12 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_output.c#14 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#14 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_pcb.h#13 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_sysctl.c#10 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_uio.h#11 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.c#15 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.h#10 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_subr.c#17 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_usrreq.c#14 integrate
.. //depot/projects/usb/src/sys/netinet/udp_usrreq.c#17 integrate
.. //depot/projects/usb/src/sys/netinet6/frag6.c#12 integrate
.. //depot/projects/usb/src/sys/netinet6/in6.c#16 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_pcb.c#14 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_src.c#15 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_forward.c#12 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_input.c#16 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_ipsec.c#8 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_output.c#10 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_var.h#11 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6_rtr.c#12 integrate
.. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#16 integrate
.. //depot/projects/usb/src/sys/netinet6/sctp6_usrreq.c#11 integrate
.. //depot/projects/usb/src/sys/netinet6/udp6_usrreq.c#16 integrate
.. //depot/projects/usb/src/sys/netinet6/vinet6.h#5 integrate
.. //depot/projects/usb/src/sys/netipsec/ipsec.c#15 integrate
.. //depot/projects/usb/src/sys/netipsec/ipsec.h#12 integrate
.. //depot/projects/usb/src/sys/netipsec/ipsec6.h#6 integrate
.. //depot/projects/usb/src/sys/opencrypto/cryptosoft.c#7 integrate
.. //depot/projects/usb/src/sys/pc98/conf/NOTES#14 integrate
.. //depot/projects/usb/src/sys/rpc/clnt_rc.c#5 integrate
.. //depot/projects/usb/src/sys/security/audit/audit_pipe.c#12 integrate
.. //depot/projects/usb/src/sys/sys/cfictl.h#3 integrate
.. //depot/projects/usb/src/sys/sys/clist.h#4 integrate
.. //depot/projects/usb/src/sys/sys/conf.h#14 integrate
.. //depot/projects/usb/src/sys/sys/elf_common.h#10 integrate
.. //depot/projects/usb/src/sys/sys/jail.h#9 integrate
.. //depot/projects/usb/src/sys/sys/kobj.h#4 integrate
.. //depot/projects/usb/src/sys/sys/lockmgr.h#8 integrate
.. //depot/projects/usb/src/sys/sys/mount.h#14 integrate
.. //depot/projects/usb/src/sys/sys/pciio.h#3 integrate
.. //depot/projects/usb/src/sys/sys/sysctl.h#14 integrate
.. //depot/projects/usb/src/sys/sys/tty.h#8 integrate
.. //depot/projects/usb/src/sys/sys/ttyqueue.h#3 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_alloc.c#9 integrate
Differences ...
==== //depot/projects/usb/src/sys/amd64/amd64/exception.S#9 (text+ko) ====
@@ -31,7 +31,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.136 2009/01/14 14:20:08 kib Exp $
+ * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.137 2009/02/03 09:01:45 jkoshy Exp $
*/
#include "opt_atpic.h"
@@ -383,22 +383,24 @@
* NMI handling is special.
*
* First, NMIs do not respect the state of the processor's RFLAGS.IF
- * bit and the NMI handler may be invoked at any time, including when
- * the processor is in a critical section with RFLAGS.IF == 0. In
- * particular, this means that the processor's GS.base values could be
- * inconsistent on entry to the handler, and so we need to read
- * MSR_GSBASE to determine if a 'swapgs' is needed. We use '%ebx', a
- * C-preserved register, to remember whether to swap GS back on the
- * exit path.
+ * bit. The NMI handler may be entered at any time, including when
+ * the processor is in a critical section with RFLAGS.IF == 0.
+ * The processor's GS.base value could be invalid on entry to the
+ * handler.
*
* Second, the processor treats NMIs specially, blocking further NMIs
- * until an 'iretq' instruction is executed. We therefore need to
- * execute the NMI handler with interrupts disabled to prevent a
- * nested interrupt from executing an 'iretq' instruction and
- * inadvertently taking the processor out of NMI mode.
+ * until an 'iretq' instruction is executed. We thus need to execute
+ * the NMI handler with interrupts disabled, to prevent a nested interrupt
+ * from executing an 'iretq' instruction and inadvertently taking the
+ * processor out of NMI mode.
*
- * Third, the NMI handler runs on its own stack (tss_ist1), shared
- * with the double fault handler.
+ * Third, the NMI handler runs on its own stack (tss_ist2). The canonical
+ * GS.base value for the processor is stored just above the bottom of its
+ * NMI stack. For NMIs taken from kernel mode, the current value in
+ * the processor's GS.base is saved at entry to C-preserved register %r12,
+ * the canonical value for GS.base is then loaded into the processor, and
+ * the saved value is restored at exit time. For NMIs taken from user mode,
+ * the cheaper 'SWAPGS' instructions are used for swapping GS.base.
*/
IDTVEC(nmi)
@@ -423,12 +425,22 @@
movq %r15,TF_R15(%rsp)
xorl %ebx,%ebx
testb $SEL_RPL_MASK,TF_CS(%rsp)
- jnz nmi_needswapgs /* we came from userland */
+ jnz nmi_fromuserspace
+ /*
+ * We've interrupted the kernel. Preserve GS.base in %r12.
+ */
movl $MSR_GSBASE,%ecx
rdmsr
- cmpl $VM_MAXUSER_ADDRESS >> 32,%edx
- jae nmi_calltrap /* GS.base holds a kernel VA */
-nmi_needswapgs:
+ movq %rax,%r12
+ shlq $32,%rdx
+ orq %rdx,%r12
+ /* Retrieve and load the canonical value for GS.base. */
+ movq TF_SIZE(%rsp),%rdx
+ movl %edx,%eax
+ shrq $32,%rdx
+ wrmsr
+ jmp nmi_calltrap
+nmi_fromuserspace:
incl %ebx
swapgs
/* Note: this label is also used by ddb and gdb: */
@@ -439,14 +451,19 @@
MEXITCOUNT
#ifdef HWPMC_HOOKS
/*
- * Check if the current trap was from user mode and if so
- * whether the current thread needs a user call chain to be
- * captured. We are still in NMI mode at this point.
+ * Capture a userspace callchain if needed.
+ *
+ * - Check if the current trap was from user mode.
+ * - Check if the current thread is valid.
+ * - Check if the thread requires a user call chain to be
+ * captured.
+ *
+ * We are still in NMI mode at this point.
*/
- testb $SEL_RPL_MASK,TF_CS(%rsp)
- jz nocallchain
- movq PCPU(CURTHREAD),%rax /* curthread present? */
- orq %rax,%rax
+ testl %ebx,%ebx
+ jz nocallchain /* not from userspace */
+ movq PCPU(CURTHREAD),%rax
+ orq %rax,%rax /* curthread present? */
jz nocallchain
testl $TDP_CALLCHAIN,TD_PFLAGS(%rax) /* flagged for capture? */
jz nocallchain
@@ -498,8 +515,18 @@
nocallchain:
#endif
testl %ebx,%ebx
- jz nmi_restoreregs
+ jz nmi_kernelexit
swapgs
+ jmp nmi_restoreregs
+nmi_kernelexit:
+ /*
+ * Put back the preserved MSR_GSBASE value.
+ */
+ movl $MSR_GSBASE,%ecx
+ movq %r12,%rdx
+ movl %edx,%eax
+ shrq $32,%rdx
+ wrmsr
nmi_restoreregs:
movq TF_RDI(%rsp),%rdi
movq TF_RSI(%rsp),%rsi
==== //depot/projects/usb/src/sys/amd64/amd64/machdep.c#12 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.690 2008/09/08 09:59:05 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.691 2009/02/03 09:01:45 jkoshy Exp $");
#include "opt_atalk.h"
#include "opt_atpic.h"
@@ -809,6 +809,9 @@
static char dblfault_stack[PAGE_SIZE] __aligned(16);
+static char nmi0_stack[PAGE_SIZE] __aligned(16);
+CTASSERT(sizeof(struct nmi_pcpu) == 16);
+
struct amd64tss common_tss[MAXCPU];
/* software prototypes -- in more palatable form */
@@ -1291,6 +1294,7 @@
caddr_t kmdp;
int gsel_tss, x;
struct pcpu *pc;
+ struct nmi_pcpu *np;
u_int64_t msr;
char *env;
@@ -1365,7 +1369,7 @@
setidt(x, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0);
setidt(IDT_DE, &IDTVEC(div), SDT_SYSIGT, SEL_KPL, 0);
setidt(IDT_DB, &IDTVEC(dbg), SDT_SYSIGT, SEL_KPL, 0);
- setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 1);
+ setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 2);
setidt(IDT_BP, &IDTVEC(bpt), SDT_SYSIGT, SEL_UPL, 0);
setidt(IDT_OF, &IDTVEC(ofl), SDT_SYSIGT, SEL_KPL, 0);
setidt(IDT_BR, &IDTVEC(bnd), SDT_SYSIGT, SEL_KPL, 0);
@@ -1438,6 +1442,14 @@
/* doublefault stack space, runs on ist1 */
common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)];
+ /*
+ * NMI stack, runs on ist2. The pcpu pointer is stored just
+ * above the start of the ist2 stack.
+ */
+ np = ((struct nmi_pcpu *) &nmi0_stack[sizeof(nmi0_stack)]) - 1;
+ np->np_pcpu = (register_t) pc;
+ common_tss[0].tss_ist2 = (long) np;
+
/* Set the IO permission bitmap (empty due to tss seg limit) */
common_tss[0].tss_iobase = sizeof(struct amd64tss);
==== //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#16 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.296 2009/01/29 09:22:56 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.297 2009/02/03 09:01:45 jkoshy Exp $");
#include "opt_cpu.h"
#include "opt_kstack_pages.h"
@@ -92,6 +92,7 @@
/* Temporary holder for double fault stack */
char *doublefault_stack;
+char *nmi_stack;
/* Hotwire a 0->4MB V==P mapping */
extern pt_entry_t *KPTphys;
@@ -437,6 +438,7 @@
init_secondary(void)
{
struct pcpu *pc;
+ struct nmi_pcpu *np;
u_int64_t msr, cr0;
int cpu, gsel_tss, x;
struct region_descriptor ap_gdt;
@@ -450,6 +452,10 @@
common_tss[cpu].tss_iobase = sizeof(struct amd64tss);
common_tss[cpu].tss_ist1 = (long)&doublefault_stack[PAGE_SIZE];
+ /* The NMI stack runs on IST2. */
+ np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1;
+ common_tss[cpu].tss_ist2 = (long) np;
+
/* Prepare private GDT */
gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu];
ssdtosyssd(&gdt_segs[GPROC0_SEL],
@@ -474,6 +480,9 @@
pc->pc_rsp0 = 0;
pc->pc_gs32p = &gdt[NGDT * cpu + GUGS32_SEL];
+ /* Save the per-cpu pointer for use by the NMI handler. */
+ np->np_pcpu = (register_t) pc;
+
wrmsr(MSR_FSBASE, 0); /* User value */
wrmsr(MSR_GSBASE, (u_int64_t)pc);
wrmsr(MSR_KGSBASE, (u_int64_t)pc); /* XXX User value while we're in the kernel */
@@ -725,6 +734,7 @@
/* allocate and set up an idle stack data page */
bootstacks[cpu] = (void *)kmem_alloc(kernel_map, KSTACK_PAGES * PAGE_SIZE);
doublefault_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE);
+ nmi_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE);
bootSTK = (char *)bootstacks[cpu] + KSTACK_PAGES * PAGE_SIZE - 8;
bootAP = cpu;
==== //depot/projects/usb/src/sys/amd64/conf/NOTES#14 (text+ko) ====
@@ -4,7 +4,7 @@
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.83 2008/12/01 16:53:01 sam Exp $
+# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.86 2009/02/07 00:01:10 wkoszek Exp $
#
#
@@ -150,6 +150,11 @@
# AGP GART support
device agp
+#
+# AGP debugging.
+#
+options AGP_DEBUG
+
#####################################################################
# HARDWARE DEVICE CONFIGURATION
@@ -267,7 +272,6 @@
# nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source)
# nve: nVidia nForce MCP on-board Ethernet Networking
# ral: Ralink Technology IEEE 802.11 wireless adapter
-# ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter
# wpi: Intel 3945ABG Wireless LAN controller
device ed
@@ -277,10 +281,9 @@
device iwi
device iwn
device ipw
-device nfe # nVidia nForce MCP on-board Ethernet Networking
-device nve # nVidia nForce MCP on-board Ethernet Networking
+device nfe
+device nve
device ral
-device ural
device wpi
device ath # Atheros pci/cardbus NIC's
@@ -356,9 +359,11 @@
# Miscellaneous hardware:
#
# ipmi: Intelligent Platform Management Interface
+# pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724)
# smbios: DMI/SMBIOS entry point
# vpd: Vital Product Data kernel interface
# asmc: Apple System Management Controller
+# si: Specialix International SI/XIO or SX intelligent serial card
# Notes on the Specialix SI/XIO driver:
# The host card is memory, not IO mapped.
@@ -367,13 +372,14 @@
# The cards can use an IRQ of 11, 12 or 15.
device ipmi
-# Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724)
device pbio
hint.pbio.0.at="isa"
hint.pbio.0.port="0x360"
device smbios
device vpd
device asmc
+#device si
+
#
# Laptop/Notebook options:
#
==== //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#7 (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/amd64/include/intr_machdep.h,v 1.20 2009/01/29 09:22:56 jeff Exp $
+ * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.21 2009/02/03 09:01:45 jkoshy Exp $
*/
#ifndef __MACHINE_INTR_MACHDEP_H__
@@ -120,6 +120,15 @@
struct trapframe;
+/*
+ * The following data structure holds per-cpu data, and is placed just
+ * above the top of the space used for the NMI stack.
+ */
+struct nmi_pcpu {
+ register_t np_pcpu;
+ register_t __padding; /* pad to 16 bytes */
+};
+
extern struct mtx icu_lock;
extern int elcr_found;
==== //depot/projects/usb/src/sys/amd64/include/legacyvar.h#3 (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/amd64/include/legacyvar.h,v 1.8 2007/09/30 11:05:13 marius Exp $
+ * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.9 2009/02/08 07:03:34 imp Exp $
*/
#ifndef _MACHINE_LEGACYVAR_H_
@@ -43,12 +43,12 @@
#undef LEGACY_ACCESSOR
int legacy_pcib_maxslots(device_t dev);
-uint32_t legacy_pcib_read_config(device_t dev, int bus, int slot, int func,
- int reg, int bytes);
+uint32_t legacy_pcib_read_config(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, int bytes);
int legacy_pcib_read_ivar(device_t dev, device_t child, int which,
uintptr_t *result);
-void legacy_pcib_write_config(device_t dev, int bus, int slot, int func,
- int reg, u_int32_t data, int bytes);
+void legacy_pcib_write_config(device_t dev, u_int bus, u_int slot,
+ u_int func, u_int reg, uint32_t data, int bytes);
int legacy_pcib_write_ivar(device_t dev, device_t child, int which,
uintptr_t value);
struct resource *legacy_pcib_alloc_resource(device_t dev, device_t child,
==== //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#6 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.122 2007/09/30 11:05:13 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.123 2009/02/08 07:02:42 imp Exp $");
#include "opt_cpu.h"
@@ -55,9 +55,9 @@
/* read configuration space register */
-u_int32_t
-legacy_pcib_read_config(device_t dev, int bus, int slot, int func,
- int reg, int bytes)
+uint32_t
+legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func,
+ u_int reg, int bytes)
{
return(pci_cfgregread(bus, slot, func, reg, bytes));
}
@@ -65,8 +65,8 @@
/* write configuration space register */
void
-legacy_pcib_write_config(device_t dev, int bus, int slot, int func,
- int reg, u_int32_t data, int bytes)
+legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func,
+ u_int reg, uint32_t data, int bytes)
{
pci_cfgregwrite(bus, slot, func, reg, data, bytes);
}
==== //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#15 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.41 2009/01/30 07:01:32 thompsa Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.42 2009/02/04 01:14:06 cognet Exp $");
/*
* ARM bus dma support routines
@@ -1168,7 +1168,7 @@
STAILQ_FOREACH(bpage, &map->bpages, links) {
if ((vm_offset_t)buf >= bpage->datavaddr &&
- (vm_offset_t)buf + len < bpage->datavaddr +
+ (vm_offset_t)buf + len <= bpage->datavaddr +
bpage->datacount)
return (1);
}
==== //depot/projects/usb/src/sys/arm/arm/dump_machdep.c#6 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/dump_machdep.c,v 1.6 2008/11/06 16:20:27 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/dump_machdep.c,v 1.7 2009/02/02 20:09:14 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -158,14 +158,12 @@
{
struct dumperinfo *di = (struct dumperinfo*)arg;
vm_paddr_t pa;
- vm_offset_t va;
uint32_t pgs;
size_t counter, sz, chunk;
int c, error;
error = 0; /* catch case in which chunk size is 0 */
counter = 0;
- va = 0;
pgs = mdp->md_size / PAGE_SIZE;
pa = mdp->md_start;
==== //depot/projects/usb/src/sys/arm/arm/elf_trampoline.c#10 (text+ko) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.23 2009/01/09 10:45:04 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.24 2009/02/02 20:09:14 cognet Exp $");
#include <machine/asm.h>
#include <sys/param.h>
#include <sys/elf32.h>
@@ -404,11 +404,11 @@
int symtabindex = -1;
int symstrindex = -1;
vm_offset_t lastaddr = 0;
- Elf_Addr ssym = 0, esym = 0;
+ Elf_Addr ssym = 0;
Elf_Dyn *dp;
eh = (Elf32_Ehdr *)kstart;
- ssym = esym = 0;
+ ssym = 0;
entry_point = (void*)eh->e_entry;
memcpy(phdr, (void *)(kstart + eh->e_phoff ),
eh->e_phnum * sizeof(phdr[0]));
==== //depot/projects/usb/src/sys/arm/arm/pmap.c#13 (text+ko) ====
@@ -147,7 +147,7 @@
#include "opt_vm.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.106 2008/11/06 16:28:28 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.107 2009/02/02 20:09:14 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -3102,7 +3102,7 @@
pmap_remove_all(vm_page_t m)
{
pv_entry_t pv;
- pt_entry_t *ptep, pte;
+ pt_entry_t *ptep;
struct l2_bucket *l2b;
boolean_t flush = FALSE;
pmap_t curpm;
@@ -3130,7 +3130,6 @@
l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va);
KASSERT(l2b != NULL, ("No l2 bucket"));
ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
- pte = *ptep;
*ptep = 0;
PTE_SYNC_CURRENT(pv->pv_pmap, ptep);
pmap_free_l2_bucket(pv->pv_pmap, l2b, 1);
==== //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#8 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.37 2008/08/04 14:47:49 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.38 2009/02/02 20:09:14 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -108,14 +108,13 @@
cpu_fork(register struct thread *td1, register struct proc *p2,
struct thread *td2, int flags)
{
- struct pcb *pcb1, *pcb2;
+ struct pcb *pcb2;
struct trapframe *tf;
struct switchframe *sf;
struct mdproc *mdp2;
if ((flags & RFPROC) == 0)
return;
- pcb1 = td1->td_pcb;
pcb2 = (struct pcb *)(td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE) - 1;
#ifdef __XSCALE__
#ifndef CPU_XSCALE_CORE3
==== //depot/projects/usb/src/sys/arm/conf/AVILA#11 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/arm/conf/AVILA,v 1.21 2008/12/27 17:22:17 bz Exp $
+# $FreeBSD: src/sys/arm/conf/AVILA,v 1.22 2009/02/03 19:16:04 sam Exp $
ident AVILA
@@ -66,13 +66,15 @@
device pci
device uart
+device ixpwdog # watchdog timer
+device cfi # flash support
+
# I2C Bus
device iicbus
device iicbb
device iic
device ixpiic # I2C bus glue
-device ixpwdog # watchdog timer
device ds1672 # DS1672 on I2C bus
device ad7418 # AD7418 on I2C bus
==== //depot/projects/usb/src/sys/arm/conf/AVILA.hints#4 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/arm/conf/AVILA.hints,v 1.4 2008/12/20 03:26:09 sam Exp $
+# $FreeBSD: src/sys/arm/conf/AVILA.hints,v 1.5 2009/02/03 19:16:04 sam Exp $
#
# Device wiring for the Gateworks Avila 2384.
@@ -29,6 +29,10 @@
hint.npe.1.mii="B"
hint.npe.1.phy=1
+# FLASH
+hint.cfi.0.at="ixp0"
+hint.cfi.0.addr=0x50000000
+
# CF IDE controller
hint.ata_avila.0.at="ixp0"
==== //depot/projects/usb/src/sys/arm/include/atomic.h#6 (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.25 2008/11/22 05:55:56 kmacy Exp $
+ * $FreeBSD: src/sys/arm/include/atomic.h,v 1.26 2009/02/03 19:06:12 sam Exp $
*/
#ifndef _MACHINE_ATOMIC_H_
@@ -344,7 +344,8 @@
#define atomic_clear_ptr atomic_clear_32
#define atomic_set_ptr atomic_set_32
-#define atomic_cmpset_ptr atomic_cmpset_32
+#define atomic_cmpset_ptr(dst, old, new) \
+ atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new))
#define atomic_cmpset_rel_ptr atomic_cmpset_ptr
#define atomic_cmpset_acq_ptr atomic_cmpset_ptr
#define atomic_store_ptr atomic_store_32
==== //depot/projects/usb/src/sys/arm/sa11x0/assabet_machdep.c#7 (text+ko) ====
@@ -47,7 +47,7 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.26 2008/12/01 10:16:25 stas Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.28 2009/02/02 20:24:29 cognet Exp $");
#include "opt_md.h"
@@ -210,12 +210,10 @@
struct pv_addr md_addr;
struct pv_addr md_bla;
int loop;
- u_int kerneldatasize, symbolsize;
u_int l1pagetable;
vm_offset_t freemempos;
vm_offset_t lastalloced;
vm_offset_t lastaddr;
- vm_size_t pt_size;
uint32_t memsize = 32 * 1024 * 1024;
sa1110_uart_vaddr = SACOM1_VBASE;
@@ -232,8 +230,6 @@
physical_end = lastaddr;
physical_freestart = (((vm_offset_t)physical_end) + PAGE_MASK) & ~PAGE_MASK;
md_addr.pv_va = md_addr.pv_pa = MDROOT_ADDR;
- kerneldatasize = (u_int32_t)&end - (u_int32_t)KERNVIRTADDR;
- symbolsize = 0;
freemempos = (vm_offset_t)round_page(physical_freestart);
memset((void *)freemempos, 0, 256*1024);
/* Define a macro to simplify memory allocation */
@@ -265,14 +261,12 @@
}
}
- valloc_pages(systempage, 1);
-
/*
* Allocate a page for the system page mapped to V0x00000000
* This page will just contain the system vectors and can be
* shared by all processes.
*/
- pt_size = round_page(freemempos) - physical_freestart;
+ valloc_pages(systempage, 1);
/* Allocate stacks for all modes */
valloc_pages(irqstack, IRQ_STACK_SIZE);
==== //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#10 (text+ko) ====
@@ -48,7 +48,7 @@
#include "opt_msgbuf.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.14 2008/12/20 03:26:09 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.15 2009/02/03 19:16:04 sam Exp $");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
@@ -154,6 +154,10 @@
{ IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE,
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
+ /* CFI Flash on the Expansion Bus */
+ { IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE,
+ IXP425_EXP_BUS_CS0_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
+
/* IXP425 PCI Configuration */
{ IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE,
VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, },
==== //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#6 (text+ko) ====
@@ -1,4 +1,4 @@
-#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.7 2008/12/23 17:40:02 sam Exp $
+#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.8 2009/02/03 19:16:04 sam Exp $
arm/arm/bus_space_generic.c standard
arm/arm/cpufunc_asm_xscale.S standard
arm/arm/irq_dispatch.S standard
@@ -15,6 +15,7 @@
arm/xscale/ixp425/uart_bus_ixp425.c optional uart
arm/xscale/ixp425/ixp425_a4x_space.c optional uart
arm/xscale/ixp425/ixp425_a4x_io.S optional uart
+dev/cfi/cfi_bus_ixp4xx.c optional cfi
dev/uart/uart_dev_ns8250.c optional uart
#
# NPE-based Ethernet support (requires qmgr also).
==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#7 (text+ko) ====
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.12 2008/12/23 04:48:27 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.13 2009/02/03 19:16:04 sam Exp $");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
@@ -329,6 +329,8 @@
{ IXP425_IO_HWBASE, IXP425_IO_SIZE, IXP425_IO_VBASE },
{ IXP425_PCI_HWBASE, IXP425_PCI_SIZE, IXP425_PCI_VBASE },
{ IXP425_PCI_MEM_HWBASE,IXP425_PCI_MEM_SIZE, IXP425_PCI_MEM_VBASE },
+ { IXP425_EXP_BUS_CS0_HWBASE, IXP425_EXP_BUS_CS0_SIZE,
+ IXP425_EXP_BUS_CS0_VBASE },
/* NB: needed only for uart_cpu_getdev */
{ IXP425_UART0_HWBASE, IXP425_REG_SIZE, IXP425_UART0_VBASE },
{ IXP425_UART1_HWBASE, IXP425_REG_SIZE, IXP425_UART1_VBASE },
==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#4 (text+ko) ====
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425reg.h,v 1.4 2008/12/23 04:48:27 sam Exp $
+ * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425reg.h,v 1.5 2009/02/03 19:16:04 sam Exp $
*
*/
@@ -76,6 +76,10 @@
* Global cache clean area
* FF00 0000 ---------------------------
*
+ * FE00 0000 ---------------------------
+ * 16M CFI Flash (on ext bus)
+ * FD00 0000 ---------------------------
+ *
* FC00 0000 ---------------------------
* PCI Data (memory space)
* F800 0000 --------------------------- IXP425_PCI_MEM_VBASE
@@ -649,6 +653,9 @@
#define IXP425_EXP_BUS_CSx_VBASE(i) \
(IXP425_MAC_B_VBASE + (i)*IXP425_MAC_B_SIZE)
+#define IXP425_EXP_BUS_CS0_HWBASE IXP425_EXP_BUS_CSx_HWBASE(0)
+#define IXP425_EXP_BUS_CS0_VBASE 0xFD000000UL
+#define IXP425_EXP_BUS_CS0_SIZE 0x01000000 /* NB: 16M */
#define IXP425_EXP_BUS_CS1_HWBASE IXP425_EXP_BUS_CSx_HWBASE(1)
#define IXP425_EXP_BUS_CS1_VBASE IXP425_EXP_BUS_CSx_VBASE(1)
#define IXP425_EXP_BUS_CS1_SIZE 0x1000
@@ -663,7 +670,6 @@
#define IXP425_EXP_BUS_CS4_SIZE 0x1000
/* NB: not mapped (yet) */
-#define IXP425_EXP_BUS_CS0_HWBASE IXP425_EXP_BUS_CSx_HWBASE(0)
#define IXP425_EXP_BUS_CS5_HWBASE IXP425_EXP_BUS_CSx_HWBASE(5)
#define IXP425_EXP_BUS_CS6_HWBASE IXP425_EXP_BUS_CSx_HWBASE(6)
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list