Author: attilio
Date: Tue Nov  9 01:57:56 2010
New Revision: 215026
URL: http://svn.freebsd.org/changeset/base/215026

Log:
  MFC r204309, r204313 and r204319 by nyan:
  Introduce the x86 subtree for code shared between amd64, i386 and pc98.
  
  Differently from the HEAD version, the headers are not moved around,
  in order to avoid breaking the KPI but it can be eventually done once the
  core mechanism of r214629 is MFCed.
  
  MFCing this patch does allow for simpler MFCs handling on i386/amd64
  specific code.
  
  Sponsored by:   Sandvine Incorporated

Added:
  stable/8/sys/amd64/amd64/atpic_vector.S
     - copied unchanged from r214988, stable/8/sys/amd64/isa/atpic_vector.S
  stable/8/sys/i386/i386/atpic_vector.s
     - copied unchanged from r214988, stable/8/sys/i386/isa/atpic_vector.s
  stable/8/sys/x86/bios/
  stable/8/sys/x86/bios/smbios.c
     - copied unchanged from r214988, stable/8/sys/i386/bios/smbios.c
  stable/8/sys/x86/bios/vpd.c
     - copied unchanged from r214988, stable/8/sys/i386/bios/vpd.c
  stable/8/sys/x86/cpufreq/
  stable/8/sys/x86/cpufreq/est.c
     - copied unchanged from r214988, stable/8/sys/i386/cpufreq/est.c
  stable/8/sys/x86/cpufreq/hwpstate.c
     - copied unchanged from r214988, stable/8/sys/i386/cpufreq/hwpstate.c
  stable/8/sys/x86/cpufreq/p4tcc.c
     - copied unchanged from r214988, stable/8/sys/i386/cpufreq/p4tcc.c
  stable/8/sys/x86/cpufreq/powernow.c
     - copied unchanged from r214988, stable/8/sys/i386/cpufreq/powernow.c
  stable/8/sys/x86/cpufreq/smist.c
     - copied unchanged from r214988, stable/8/sys/i386/cpufreq/smist.c
  stable/8/sys/x86/isa/
  stable/8/sys/x86/isa/atpic.c
     - copied, changed from r214988, stable/8/sys/i386/isa/atpic.c
  stable/8/sys/x86/isa/atrtc.c
     - copied unchanged from r214988, stable/8/sys/isa/atrtc.c
  stable/8/sys/x86/isa/clock.c
     - copied, changed from r214988, stable/8/sys/i386/isa/clock.c
  stable/8/sys/x86/isa/elcr.c
     - copied unchanged from r214988, stable/8/sys/i386/isa/elcr.c
  stable/8/sys/x86/isa/isa.c
     - copied, changed from r214988, stable/8/sys/i386/isa/isa.c
  stable/8/sys/x86/isa/isa_dma.c
     - copied, changed from r214988, stable/8/sys/i386/isa/isa_dma.c
  stable/8/sys/x86/isa/nmi.c
     - copied unchanged from r214988, stable/8/sys/i386/isa/nmi.c
Deleted:
  stable/8/sys/amd64/isa/atpic.c
  stable/8/sys/amd64/isa/atpic_vector.S
  stable/8/sys/amd64/isa/clock.c
  stable/8/sys/amd64/isa/elcr.c
  stable/8/sys/amd64/isa/isa.c
  stable/8/sys/amd64/isa/isa_dma.c
  stable/8/sys/amd64/isa/nmi.c
  stable/8/sys/i386/bios/smbios.c
  stable/8/sys/i386/bios/vpd.c
  stable/8/sys/i386/cpufreq/
  stable/8/sys/i386/isa/atpic.c
  stable/8/sys/i386/isa/atpic_vector.s
  stable/8/sys/i386/isa/clock.c
  stable/8/sys/i386/isa/elcr.c
  stable/8/sys/i386/isa/isa.c
  stable/8/sys/i386/isa/isa_dma.c
  stable/8/sys/i386/isa/nmi.c
  stable/8/sys/isa/atrtc.c
Modified:
  stable/8/sys/amd64/amd64/exception.S
  stable/8/sys/conf/files.amd64
  stable/8/sys/conf/files.i386
  stable/8/sys/conf/files.pc98
  stable/8/sys/i386/i386/exception.s
  stable/8/sys/modules/bios/smbios/Makefile
  stable/8/sys/modules/bios/vpd/Makefile
  stable/8/sys/modules/cpufreq/Makefile
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Copied: stable/8/sys/amd64/amd64/atpic_vector.S (from r214988, 
stable/8/sys/amd64/isa/atpic_vector.S)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/8/sys/amd64/amd64/atpic_vector.S     Tue Nov  9 01:57:56 2010        
(r215026, copy of r214988, stable/8/sys/amd64/isa/atpic_vector.S)
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 1989, 1990 William F. Jolitz.
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     from: vector.s, 386BSD 0.1 unknown origin
+ * $FreeBSD$
+ */
+
+/*
+ * Interrupt entry points for external interrupts triggered by the 8259A
+ * master and slave interrupt controllers.
+ */
+
+#include <machine/asmacros.h>
+
+#include "assym.s"
+
+/*
+ * Macros for interrupt entry, call to handler, and exit.
+ */
+#define        INTR(irq_num, vec_name) \
+       .text ;                                                         \
+       SUPERALIGN_TEXT ;                                               \
+IDTVEC(vec_name) ;                                                     \
+       PUSH_FRAME ;                                                    \
+       FAKE_MCOUNT(TF_RIP(%rsp)) ;                                     \
+       movq    %rsp, %rsi      ;                                       \
+       movl    $irq_num, %edi;         /* pass the IRQ */              \
+       call    atpic_handle_intr ;                                     \
+       MEXITCOUNT ;                                                    \
+       jmp     doreti
+
+       INTR(0, atpic_intr0)
+       INTR(1, atpic_intr1)
+       INTR(2, atpic_intr2)
+       INTR(3, atpic_intr3)
+       INTR(4, atpic_intr4)
+       INTR(5, atpic_intr5)
+       INTR(6, atpic_intr6)
+       INTR(7, atpic_intr7)
+       INTR(8, atpic_intr8)
+       INTR(9, atpic_intr9)
+       INTR(10, atpic_intr10)
+       INTR(11, atpic_intr11)
+       INTR(12, atpic_intr12)
+       INTR(13, atpic_intr13)
+       INTR(14, atpic_intr14)
+       INTR(15, atpic_intr15)

Modified: stable/8/sys/amd64/amd64/exception.S
==============================================================================
--- stable/8/sys/amd64/amd64/exception.S        Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/amd64/amd64/exception.S        Tue Nov  9 01:57:56 2010        
(r215026)
@@ -600,7 +600,7 @@ MCOUNT_LABEL(bintr)
        .text
        SUPERALIGN_TEXT
 
-#include <amd64/isa/atpic_vector.S>
+#include <amd64/amd64/atpic_vector.S>
 #endif
 
        .text

Modified: stable/8/sys/conf/files.amd64
==============================================================================
--- stable/8/sys/conf/files.amd64       Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/conf/files.amd64       Tue Nov  9 01:57:56 2010        
(r215026)
@@ -140,13 +140,6 @@ amd64/amd64/tsc.c          standard
 amd64/amd64/uio_machdep.c      standard
 amd64/amd64/uma_machdep.c      standard
 amd64/amd64/vm_machdep.c       standard
-amd64/isa/atpic.c              optional        atpic isa
-#amd64/isa/atpic_vector.S      optional        atpic isa
-amd64/isa/clock.c              standard
-amd64/isa/elcr.c               standard
-amd64/isa/isa.c                        standard
-amd64/isa/isa_dma.c            standard
-amd64/isa/nmi.c                        standard
 amd64/pci/pci_bus.c            optional        pci
 amd64/pci/pci_cfgreg.c         optional        pci
 crypto/blowfish/bf_enc.c       optional        crypto | ipsec 
@@ -239,7 +232,6 @@ dev/syscons/scvtb.c         optional        sc
 dev/syscons/teken/teken.c      optional sc
 dev/uart/uart_cpu_amd64.c      optional        uart
 dev/wpi/if_wpi.c               optional        wpi
-isa/atrtc.c                    standard
 isa/syscons_isa.c              optional        sc
 isa/vga_isa.c                  optional        vga
 kern/link_elf_obj.c            standard
@@ -299,12 +291,6 @@ compat/ndis/subr_ntoskrnl.c        optional        ndi
 compat/ndis/subr_pe.c          optional        ndisapi pci
 compat/ndis/subr_usbd.c                optional        ndisapi pci
 compat/ndis/winx64_wrap.S      optional        ndisapi pci
-i386/bios/smbios.c             optional        smbios
-i386/bios/vpd.c                        optional        vpd
-i386/cpufreq/powernow.c                optional        cpufreq
-i386/cpufreq/est.c             optional        cpufreq
-i386/cpufreq/hwpstate.c                optional        cpufreq
-i386/cpufreq/p4tcc.c           optional        cpufreq
 #
 libkern/memmove.c              standard
 libkern/memset.c               standard
@@ -316,4 +302,17 @@ contrib/x86emu/x86emu.c            optional x86bio
 #
 # x86 shared code between IA32, AMD64 and PC98 architectures
 #
+x86/bios/smbios.c              optional        smbios
+x86/bios/vpd.c                 optional        vpd
+x86/cpufreq/powernow.c         optional        cpufreq
+x86/cpufreq/est.c              optional        cpufreq
+x86/cpufreq/hwpstate.c         optional        cpufreq
+x86/cpufreq/p4tcc.c            optional        cpufreq
+x86/isa/atpic.c                        optional        atpic isa
+x86/isa/atrtc.c                        standard
+x86/isa/clock.c                        standard
+x86/isa/elcr.c                 standard
+x86/isa/isa.c                  standard
+x86/isa/isa_dma.c              standard
+x86/isa/nmi.c                  standard
 x86/pci/qpi.c                  standard

Modified: stable/8/sys/conf/files.i386
==============================================================================
--- stable/8/sys/conf/files.i386        Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/conf/files.i386        Tue Nov  9 01:57:56 2010        
(r215026)
@@ -246,13 +246,6 @@ i386/bios/apm.c                    optional apm
 i386/bios/mca_machdep.c                optional mca
 i386/bios/smapi.c              optional smapi
 i386/bios/smapi_bios.S         optional smapi
-i386/bios/smbios.c             optional smbios
-i386/bios/vpd.c                        optional vpd
-i386/cpufreq/est.c             optional cpufreq
-i386/cpufreq/hwpstate.c                optional cpufreq
-i386/cpufreq/p4tcc.c           optional cpufreq
-i386/cpufreq/powernow.c                optional cpufreq
-i386/cpufreq/smist.c           optional cpufreq
 #i386/i386/apic_vector.s               optional apic
 i386/i386/atomic.c             standard                \
        compile-with    "${CC} -c ${CFLAGS} 
${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
@@ -331,17 +324,10 @@ i386/ibcs2/ibcs2_util.c           optional ibcs2
 i386/ibcs2/ibcs2_xenix.c       optional ibcs2
 i386/ibcs2/ibcs2_xenix_sysent.c        optional ibcs2
 i386/ibcs2/imgact_coff.c       optional ibcs2
-i386/isa/atpic.c               optional atpic  
-#i386/isa/atpic_vector.s               standard
-i386/isa/clock.c               optional native
 i386/xen/clock.c               optional xen
 i386/xen/xen_clock_util.c      optional xen
 i386/xen/xen_rtc.c             optional xen
-i386/isa/elcr.c                        standard
 i386/isa/elink.c               optional ep | ie
-i386/isa/isa.c                 optional isa
-i386/isa/isa_dma.c             optional isa
-i386/isa/nmi.c                 standard
 i386/isa/npx.c                 optional npx
 i386/isa/pmtimer.c             optional pmtimer
 i386/isa/prof_machdep.c                optional profiling-routine
@@ -364,7 +350,6 @@ i386/svr4/svr4_locore.s             optional compat
        warning "COMPAT_SVR4 is broken and should be avoided"
 i386/svr4/svr4_machdep.c       optional compat_svr4
 #
-isa/atrtc.c                    optional atpic
 isa/syscons_isa.c              optional sc
 isa/vga_isa.c                  optional vga
 kern/imgact_aout.c             optional compat_aout
@@ -391,4 +376,18 @@ contrib/x86emu/x86emu.c            optional x86bio
 #
 # x86 shared code between IA32, AMD64 and PC98 architectures
 #
+x86/bios/smbios.c              optional smbios
+x86/bios/vpd.c                 optional vpd
+x86/cpufreq/est.c              optional cpufreq
+x86/cpufreq/hwpstate.c         optional cpufreq
+x86/cpufreq/p4tcc.c            optional cpufreq
+x86/cpufreq/powernow.c         optional cpufreq
+x86/cpufreq/smist.c            optional cpufreq
+x86/isa/atpic.c                        optional atpic  
+x86/isa/atrtc.c                        optional atpic
+x86/isa/clock.c                        optional native
+x86/isa/elcr.c                 standard
+x86/isa/isa.c                  optional isa
+x86/isa/isa_dma.c              optional isa
+x86/isa/nmi.c                  standard
 x86/pci/qpi.c                  standard

Modified: stable/8/sys/conf/files.pc98
==============================================================================
--- stable/8/sys/conf/files.pc98        Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/conf/files.pc98        Tue Nov  9 01:57:56 2010        
(r215026)
@@ -195,10 +195,7 @@ i386/ibcs2/ibcs2_util.c            optional ibcs2
 i386/ibcs2/ibcs2_xenix.c       optional ibcs2
 i386/ibcs2/ibcs2_xenix_sysent.c        optional ibcs2
 i386/ibcs2/imgact_coff.c       optional ibcs2
-i386/isa/atpic.c               optional atpic  
-#i386/isa/atpic_vector.s               standard
 i386/isa/elink.c               optional ep | ie
-i386/isa/isa.c                 optional isa
 i386/isa/npx.c                 optional npx
 i386/isa/pmtimer.c             optional pmtimer
 i386/isa/prof_machdep.c                optional profiling-routine
@@ -256,3 +253,8 @@ pc98/pc98/canbus.c          optional canbus
 pc98/pc98/canbus_if.m          optional canbus
 pc98/pc98/machdep.c            standard
 pc98/pc98/pc98_machdep.c       standard
+#
+# x86 shared code between IA32, AMD64 and PC98 architectures
+#
+x86/isa/atpic.c                        optional atpic  
+x86/isa/isa.c                  optional isa

Copied: stable/8/sys/i386/i386/atpic_vector.s (from r214988, 
stable/8/sys/i386/isa/atpic_vector.s)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/8/sys/i386/i386/atpic_vector.s       Tue Nov  9 01:57:56 2010        
(r215026, copy of r214988, stable/8/sys/i386/isa/atpic_vector.s)
@@ -0,0 +1,78 @@
+/*-
+ * Copyright (c) 1989, 1990 William F. Jolitz.
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     from: vector.s, 386BSD 0.1 unknown origin
+ * $FreeBSD$
+ */
+
+/*
+ * Interrupt entry points for external interrupts triggered by the 8259A
+ * master and slave interrupt controllers.
+ */
+
+#include <machine/asmacros.h>
+
+#include "assym.s"
+
+/*
+ * Macros for interrupt entry, call to handler, and exit.
+ */
+#define        INTR(irq_num, vec_name) \
+       .text ;                                                         \
+       SUPERALIGN_TEXT ;                                               \
+IDTVEC(vec_name) ;                                                     \
+       PUSH_FRAME ;                                                    \
+       SET_KERNEL_SREGS ;                                              \
+       cld ;                                                           \
+;                                                                      \
+       FAKE_MCOUNT(TF_EIP(%esp)) ;                                     \
+       pushl   %esp            ;                                       \
+       pushl   $irq_num;       /* pass the IRQ */                      \
+       call    atpic_handle_intr ;                                     \
+       addl    $8, %esp ;      /* discard the parameters */            \
+;                                                                      \
+       MEXITCOUNT ;                                                    \
+       jmp     doreti
+
+       INTR(0, atpic_intr0)
+       INTR(1, atpic_intr1)
+       INTR(2, atpic_intr2)
+       INTR(3, atpic_intr3)
+       INTR(4, atpic_intr4)
+       INTR(5, atpic_intr5)
+       INTR(6, atpic_intr6)
+       INTR(7, atpic_intr7)
+       INTR(8, atpic_intr8)
+       INTR(9, atpic_intr9)
+       INTR(10, atpic_intr10)
+       INTR(11, atpic_intr11)
+       INTR(12, atpic_intr12)
+       INTR(13, atpic_intr13)
+       INTR(14, atpic_intr14)
+       INTR(15, atpic_intr15)

Modified: stable/8/sys/i386/i386/exception.s
==============================================================================
--- stable/8/sys/i386/i386/exception.s  Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/i386/i386/exception.s  Tue Nov  9 01:57:56 2010        
(r215026)
@@ -297,7 +297,7 @@ ENTRY(fork_trampoline)
        SUPERALIGN_TEXT
 MCOUNT_LABEL(bintr)
 
-#include <i386/isa/atpic_vector.s>
+#include <i386/i386/atpic_vector.s>
 
 #ifdef DEV_APIC
        .data

Modified: stable/8/sys/modules/bios/smbios/Makefile
==============================================================================
--- stable/8/sys/modules/bios/smbios/Makefile   Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/modules/bios/smbios/Makefile   Tue Nov  9 01:57:56 2010        
(r215026)
@@ -1,7 +1,7 @@
 # $FreeBSD$
 #
 
-.PATH:  ${.CURDIR}/../../../i386/bios
+.PATH:  ${.CURDIR}/../../../x86/bios
 
 KMOD=  smbios
 SRCS=  smbios.c \

Modified: stable/8/sys/modules/bios/vpd/Makefile
==============================================================================
--- stable/8/sys/modules/bios/vpd/Makefile      Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/modules/bios/vpd/Makefile      Tue Nov  9 01:57:56 2010        
(r215026)
@@ -1,7 +1,7 @@
 # $FreeBSD$
 #
 
-.PATH:  ${.CURDIR}/../../../i386/bios
+.PATH:  ${.CURDIR}/../../../x86/bios
 
 KMOD=  vpd
 SRCS=  vpd.c \

Modified: stable/8/sys/modules/cpufreq/Makefile
==============================================================================
--- stable/8/sys/modules/cpufreq/Makefile       Tue Nov  9 01:52:09 2010        
(r215025)
+++ stable/8/sys/modules/cpufreq/Makefile       Tue Nov  9 01:57:56 2010        
(r215026)
@@ -8,7 +8,7 @@ SRCS=   ichss.c
 SRCS+= bus_if.h cpufreq_if.h device_if.h pci_if.h
 
 .if ${MACHINE} == "i386" || ${MACHINE} == "amd64"
-.PATH: ${.CURDIR}/../../i386/cpufreq
+.PATH: ${.CURDIR}/../../x86/cpufreq
 
 SRCS+= acpi_if.h opt_acpi.h
 SRCS+= est.c hwpstate.c p4tcc.c powernow.c

Copied: stable/8/sys/x86/bios/smbios.c (from r214988, 
stable/8/sys/i386/bios/smbios.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/8/sys/x86/bios/smbios.c      Tue Nov  9 01:57:56 2010        
(r215026, copy of r214988, stable/8/sys/i386/bios/smbios.c)
@@ -0,0 +1,277 @@
+/*-
+ * Copyright (c) 2003 Matthew N. Dodd <win...@jurai.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/socket.h>
+
+#include <sys/module.h>
+#include <sys/bus.h>
+
+#include <machine/bus.h>
+#include <machine/resource.h>
+#include <sys/rman.h>
+
+#include <vm/vm.h>
+#include <vm/vm_param.h>
+#include <vm/pmap.h>
+#include <machine/md_var.h>
+#include <machine/pc/bios.h>
+
+/*
+ * System Management BIOS Reference Specification, v2.4 Final
+ * http://www.dmtf.org/standards/published_documents/DSP0134.pdf
+ */
+
+/*
+ * SMBIOS Entry Point Structure
+ */
+struct smbios_eps {
+       u_int8_t        Anchor[4];              /* '_SM_' */
+       u_int8_t        Checksum;
+       u_int8_t        Length;
+
+       u_int8_t        SMBIOS_Major;
+       u_int8_t        SMBIOS_Minor;
+       u_int16_t       Max_Size;
+       u_int8_t        Revision;
+       u_int8_t        Formatted_Area[5];
+
+       u_int8_t        Intermediate_Anchor[5]; /* '_DMI_' */
+       u_int8_t        Intermediate_Checksum;
+
+       u_int16_t       Structure_Table_Length;
+       u_int32_t       Structure_Table_Address;
+       u_int16_t       Structure_Count;
+
+       u_int8_t        SMBIOS_BCD_Revision;
+} __packed;
+
+struct smbios_softc {
+       device_t                dev;
+       struct resource *       res;
+       int                     rid;
+
+       struct smbios_eps *     eps;
+};
+
+#define        SMBIOS_START    0xf0000
+#define        SMBIOS_STEP     0x10
+#define        SMBIOS_OFF      0
+#define        SMBIOS_LEN      4
+#define        SMBIOS_SIG      "_SM_"
+
+#define        RES2EPS(res)    ((struct smbios_eps *)rman_get_virtual(res))
+#define        ADDR2EPS(addr)  ((struct smbios_eps *)BIOS_PADDRTOVADDR(addr))
+
+static devclass_t      smbios_devclass;
+
+static void    smbios_identify (driver_t *, device_t);
+static int     smbios_probe    (device_t);
+static int     smbios_attach   (device_t);
+static int     smbios_detach   (device_t);
+static int     smbios_modevent (module_t, int, void *);
+
+static int     smbios_cksum    (struct smbios_eps *);
+
+static void
+smbios_identify (driver_t *driver, device_t parent)
+{
+       device_t child;
+       u_int32_t addr;
+       int length;
+       int rid;
+
+       if (!device_is_alive(parent))
+               return;
+
+       addr = bios_sigsearch(SMBIOS_START, SMBIOS_SIG, SMBIOS_LEN,
+                             SMBIOS_STEP, SMBIOS_OFF);
+       if (addr != 0) {
+               rid = 0;
+               length = ADDR2EPS(addr)->Length;
+
+               if (length != 0x1f) {
+                       u_int8_t major, minor;
+
+                       major = ADDR2EPS(addr)->SMBIOS_Major;
+                       minor = ADDR2EPS(addr)->SMBIOS_Minor;
+
+                       /* SMBIOS v2.1 implementation might use 0x1e. */
+                       if (length == 0x1e && major == 2 && minor == 1)
+                               length = 0x1f;
+                       else
+                               return;
+               }
+
+               child = BUS_ADD_CHILD(parent, 5, "smbios", -1);
+               device_set_driver(child, driver);
+               bus_set_resource(child, SYS_RES_MEMORY, rid, addr, length);
+               device_set_desc(child, "System Management BIOS");
+       }
+
+       return;
+}
+
+static int
+smbios_probe (device_t dev)
+{
+       struct resource *res;
+       int rid;
+       int error;
+
+       error = 0;
+       rid = 0;
+       res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
+       if (res == NULL) {
+               device_printf(dev, "Unable to allocate memory resource.\n");
+               error = ENOMEM;
+               goto bad;
+       }
+
+       if (smbios_cksum(RES2EPS(res))) {
+               device_printf(dev, "SMBIOS checksum failed.\n");
+               error = ENXIO;
+               goto bad;
+       }
+
+bad:
+       if (res)
+               bus_release_resource(dev, SYS_RES_MEMORY, rid, res);
+       return (error);
+}
+
+static int
+smbios_attach (device_t dev)
+{
+       struct smbios_softc *sc;
+       int error;
+
+       sc = device_get_softc(dev);
+       error = 0;
+
+       sc->dev = dev;
+       sc->rid = 0;
+       sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->rid,
+               RF_ACTIVE);
+       if (sc->res == NULL) {
+               device_printf(dev, "Unable to allocate memory resource.\n");
+               error = ENOMEM;
+               goto bad;
+       }
+       sc->eps = RES2EPS(sc->res);
+
+       device_printf(dev, "Version: %u.%u",
+               sc->eps->SMBIOS_Major, sc->eps->SMBIOS_Minor);
+       if (bcd2bin(sc->eps->SMBIOS_BCD_Revision))
+               printf(", BCD Revision: %u.%u",
+                       bcd2bin(sc->eps->SMBIOS_BCD_Revision >> 4),
+                       bcd2bin(sc->eps->SMBIOS_BCD_Revision & 0x0f));
+       printf("\n");
+
+       return (0);
+bad:
+       if (sc->res)
+               bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
+       return (error);
+}
+
+static int
+smbios_detach (device_t dev)
+{
+       struct smbios_softc *sc;
+
+       sc = device_get_softc(dev);
+
+       if (sc->res)
+               bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
+
+       return (0);
+}
+
+static int
+smbios_modevent (mod, what, arg)
+        module_t        mod;
+        int             what;
+        void *          arg;
+{
+       device_t *      devs;
+       int             count;
+       int             i;
+
+       switch (what) {
+       case MOD_LOAD:
+               break;
+       case MOD_UNLOAD:
+               devclass_get_devices(smbios_devclass, &devs, &count);
+               for (i = 0; i < count; i++) {
+                       device_delete_child(device_get_parent(devs[i]), 
devs[i]);
+               }
+               break;
+       default:
+               break;
+       }
+
+       return (0);
+}
+
+static device_method_t smbios_methods[] = {
+       /* Device interface */
+       DEVMETHOD(device_identify,      smbios_identify),
+       DEVMETHOD(device_probe,         smbios_probe),
+       DEVMETHOD(device_attach,        smbios_attach),
+       DEVMETHOD(device_detach,        smbios_detach),
+       { 0, 0 }
+};
+
+static driver_t smbios_driver = {
+       "smbios",
+       smbios_methods,
+       sizeof(struct smbios_softc),
+};
+
+DRIVER_MODULE(smbios, nexus, smbios_driver, smbios_devclass, smbios_modevent, 
0);
+MODULE_VERSION(smbios, 1);
+
+static int
+smbios_cksum (struct smbios_eps *e)
+{
+       u_int8_t *ptr;
+       u_int8_t cksum;
+       int i;
+
+       ptr = (u_int8_t *)e;
+       cksum = 0;
+       for (i = 0; i < e->Length; i++) {
+               cksum += ptr[i];
+       }
+
+       return (cksum);
+}

Copied: stable/8/sys/x86/bios/vpd.c (from r214988, stable/8/sys/i386/bios/vpd.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/8/sys/x86/bios/vpd.c Tue Nov  9 01:57:56 2010        (r215026, copy 
of r214988, stable/8/sys/i386/bios/vpd.c)
@@ -0,0 +1,297 @@
+/*-
+ * Copyright (c) 2003 Matthew N. Dodd <win...@jurai.net>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * VPD decoder for IBM systems (Thinkpads)
+ * http://www-1.ibm.com/support/docview.wss?uid=psg1MIGR-45120
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+
+#include <sys/module.h>
+#include <sys/bus.h>
+
+#include <machine/bus.h>
+#include <machine/resource.h>
+#include <sys/rman.h>
+
+#include <vm/vm.h>
+#include <vm/vm_param.h>
+#include <vm/pmap.h>
+#include <machine/md_var.h>
+#include <machine/pc/bios.h>
+
+/*
+ * Vital Product Data
+ */
+struct vpd {
+       u_int16_t       Header;                 /* 0x55AA */
+       u_int8_t        Signature[3];           /* Always 'VPD' */
+       u_int8_t        Length;                 /* Sructure Length */
+
+       u_int8_t        Reserved[7];            /* Reserved */
+
+       u_int8_t        BuildID[9];             /* BIOS Build ID */
+       u_int8_t        BoxSerial[7];           /* Box Serial Number */
+       u_int8_t        PlanarSerial[11];       /* Motherboard Serial Number */
+       u_int8_t        MachType[7];            /* Machine Type/Model */
+       u_int8_t        Checksum;               /* Checksum */
+} __packed;
+
+struct vpd_softc {
+       device_t                dev;
+       struct resource *       res;
+       int                     rid;
+
+       struct vpd *            vpd;
+
+       struct sysctl_ctx_list  ctx;
+
+       char            BuildID[10];
+       char            BoxSerial[8];
+       char            PlanarSerial[12];
+       char            MachineType[5];
+       char            MachineModel[4];
+};
+
+#define        VPD_START       0xf0000
+#define        VPD_STEP        0x10
+#define        VPD_OFF         2
+#define        VPD_LEN         3
+#define        VPD_SIG         "VPD"
+
+#define        RES2VPD(res)    ((struct vpd *)rman_get_virtual(res))
+#define        ADDR2VPD(addr)  ((struct vpd *)BIOS_PADDRTOVADDR(addr))
+
+static devclass_t vpd_devclass;
+
+static void    vpd_identify    (driver_t *, device_t);
+static int     vpd_probe       (device_t);
+static int     vpd_attach      (device_t);
+static int     vpd_detach      (device_t);
+static int     vpd_modevent    (module_t, int, void *);
+
+static int     vpd_cksum       (struct vpd *);
+
+SYSCTL_NODE(_hw, OID_AUTO, vpd, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd, OID_AUTO, machine, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd_machine, OID_AUTO, type, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd_machine, OID_AUTO, model, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd, OID_AUTO, build_id, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd, OID_AUTO, serial, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd_serial, OID_AUTO, box, CTLFLAG_RD, NULL, NULL);
+SYSCTL_NODE(_hw_vpd_serial, OID_AUTO, planar, CTLFLAG_RD, NULL, NULL);
+
+static void
+vpd_identify (driver_t *driver, device_t parent)
+{
+       device_t child;
+       u_int32_t addr;
+       int length;
+       int rid;
+
+       if (!device_is_alive(parent))
+               return;
+
+       addr = bios_sigsearch(VPD_START, VPD_SIG, VPD_LEN, VPD_STEP, VPD_OFF);
+       if (addr != 0) {
+               rid = 0;
+               length = ADDR2VPD(addr)->Length;
+
+               child = BUS_ADD_CHILD(parent, 5, "vpd", -1);
+               device_set_driver(child, driver);
+               bus_set_resource(child, SYS_RES_MEMORY, rid, addr, length);
+               device_set_desc(child, "Vital Product Data Area");
+       }
+               
+       return;
+}
+
+static int
+vpd_probe (device_t dev)
+{
+       struct resource *res;
+       int rid;
+       int error;
+
+       error = 0;
+       rid = 0;
+       res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE);
+       if (res == NULL) {
+               device_printf(dev, "Unable to allocate memory resource.\n");
+               error = ENOMEM;
+               goto bad;
+       }
+
+       if (vpd_cksum(RES2VPD(res)))
+               device_printf(dev, "VPD checksum failed.  BIOS update may be 
required.\n");
+
+bad:
+       if (res)
+               bus_release_resource(dev, SYS_RES_MEMORY, rid, res);
+       return (error);
+}
+
+static int
+vpd_attach (device_t dev)
+{
+       struct vpd_softc *sc;
+       char unit[4];
+       int error;
+
+       sc = device_get_softc(dev);
+       error = 0;
+
+       sc->dev = dev;
+       sc->rid = 0;
+       sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->rid,
+               RF_ACTIVE);
+       if (sc->res == NULL) {
+               device_printf(dev, "Unable to allocate memory resource.\n");
+               error = ENOMEM;
+               goto bad;
+       }
+       sc->vpd = RES2VPD(sc->res);
+
+       snprintf(unit, sizeof(unit), "%d", device_get_unit(sc->dev));
+       snprintf(sc->MachineType, 5, "%.4s", sc->vpd->MachType);
+       snprintf(sc->MachineModel, 4, "%.3s", sc->vpd->MachType+4);
+       snprintf(sc->BuildID, 10, "%.9s", sc->vpd->BuildID);
+       snprintf(sc->BoxSerial, 8, "%.7s", sc->vpd->BoxSerial);
+       snprintf(sc->PlanarSerial, 12, "%.11s", sc->vpd->PlanarSerial);
+
+       sysctl_ctx_init(&sc->ctx);
+       SYSCTL_ADD_STRING(&sc->ctx,
+               SYSCTL_STATIC_CHILDREN(_hw_vpd_machine_type), OID_AUTO,
+               unit, CTLFLAG_RD|CTLFLAG_DYN, sc->MachineType, 0, NULL);
+       SYSCTL_ADD_STRING(&sc->ctx,
+               SYSCTL_STATIC_CHILDREN(_hw_vpd_machine_model), OID_AUTO,
+               unit, CTLFLAG_RD|CTLFLAG_DYN, sc->MachineModel, 0, NULL);
+       SYSCTL_ADD_STRING(&sc->ctx,
+               SYSCTL_STATIC_CHILDREN(_hw_vpd_build_id), OID_AUTO,
+               unit, CTLFLAG_RD|CTLFLAG_DYN, sc->BuildID, 0, NULL);
+       SYSCTL_ADD_STRING(&sc->ctx,
+               SYSCTL_STATIC_CHILDREN(_hw_vpd_serial_box), OID_AUTO,
+               unit, CTLFLAG_RD|CTLFLAG_DYN, sc->BoxSerial, 0, NULL);
+       SYSCTL_ADD_STRING(&sc->ctx,
+               SYSCTL_STATIC_CHILDREN(_hw_vpd_serial_planar), OID_AUTO,
+               unit, CTLFLAG_RD|CTLFLAG_DYN, sc->PlanarSerial, 0, NULL);
+
+       device_printf(dev, "Machine Type: %.4s, Model: %.3s, Build ID: %.9s\n",
+               sc->MachineType, sc->MachineModel, sc->BuildID);
+       device_printf(dev, "Box Serial: %.7s, Planar Serial: %.11s\n",
+               sc->BoxSerial, sc->PlanarSerial);
+               
+       return (0);
+bad:
+       if (sc->res)
+               bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
+       return (error);
+}
+
+static int
+vpd_detach (device_t dev)
+{
+       struct vpd_softc *sc;
+
+       sc = device_get_softc(dev);
+
+       if (sc->res)
+               bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
+
+       sysctl_ctx_free(&sc->ctx);
+
+       return (0);
+}
+
+static int
+vpd_modevent (mod, what, arg)
+        module_t        mod;
+        int             what;
+        void *          arg;
+{
+       device_t *      devs;
+       int             count;
+       int             i;
+
+       switch (what) {
+       case MOD_LOAD:
+               break;
+       case MOD_UNLOAD:
+               devclass_get_devices(vpd_devclass, &devs, &count);
+               for (i = 0; i < count; i++) {
+                       device_delete_child(device_get_parent(devs[i]), 
devs[i]);
+               }
+               break;
+       default:
+               break;
+       }
+
+       return (0);
+}
+
+static device_method_t vpd_methods[] = {
+       /* Device interface */
+       DEVMETHOD(device_identify,      vpd_identify),
+       DEVMETHOD(device_probe,         vpd_probe),
+       DEVMETHOD(device_attach,        vpd_attach),
+       DEVMETHOD(device_detach,        vpd_detach),
+       { 0, 0 }
+};
+
+static driver_t vpd_driver = {
+       "vpd",
+       vpd_methods,
+       sizeof(struct vpd_softc),
+};
+
+DRIVER_MODULE(vpd, nexus, vpd_driver, vpd_devclass, vpd_modevent, 0);
+MODULE_VERSION(vpd, 1);
+
+/*
+ * Perform a checksum over the VPD structure, starting with
+ * the BuildID.  (Jean Delvare <kh...@linux-fr.org>)
+ */
+static int
+vpd_cksum (struct vpd *v)
+{
+       u_int8_t *ptr;
+       u_int8_t cksum;
+       int i;
+
+       ptr = (u_int8_t *)v;
+       cksum = 0;
+       for (i = offsetof(struct vpd, BuildID); i < v->Length ; i++)
+               cksum += ptr[i];
+       return (cksum);
+}

Copied: stable/8/sys/x86/cpufreq/est.c (from r214988, 
stable/8/sys/i386/cpufreq/est.c)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/8/sys/x86/cpufreq/est.c      Tue Nov  9 01:57:56 2010        
(r215026, copy of r214988, stable/8/sys/i386/cpufreq/est.c)
@@ -0,0 +1,1401 @@
+/*-
+ * Copyright (c) 2004 Colin Percival
+ * Copyright (c) 2005 Nate Lawson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted providing that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR``AS IS'' AND ANY EXPRESS OR 
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/bus.h>
+#include <sys/cpu.h>
+#include <sys/kernel.h>
+#include <sys/malloc.h>
+#include <sys/module.h>
+#include <sys/smp.h>
+#include <sys/systm.h>
+
+#include "cpufreq_if.h"
+#include <machine/clock.h>
+#include <machine/cputypes.h>
+#include <machine/md_var.h>
+#include <machine/specialreg.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+
+#include <dev/acpica/acpivar.h>
+#include "acpi_if.h"
+
+/* Status/control registers (from the IA-32 System Programming Guide). */
+#define MSR_PERF_STATUS                0x198
+#define MSR_PERF_CTL           0x199
+
+/* Register and bit for enabling SpeedStep. */
+#define MSR_MISC_ENABLE                0x1a0
+#define MSR_SS_ENABLE          (1<<16)
+
+/* Frequency and MSR control values. */
+typedef struct {
+       uint16_t        freq;
+       uint16_t        volts;
+       uint16_t        id16;
+       int             power;
+} freq_info;
+
+/* Identifying characteristics of a processor and supported frequencies. */

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to