Home | History | Annotate | Download | only in include
History log of /src/sys/arch/i386/include/cpufunc.h
RevisionDateAuthorComments
 1.40  17-Oct-2007  garbled Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.39  26-Sep-2007  ad x86 changes for pcc and LKMs.

- Replace most inline assembly with proper functions. As a side effect
this reduces the size of amd64 GENERIC by about 120kB, and i386 by a
smaller amount. Nearly all of the inlines did something slow, or something
that does not need to be fast.
- Make curcpu() and curlwp functions proper, unless __GNUC__ && _KERNEL.
In that case make them inlines. Makes curlwp LKM and preemption safe.
- Make bus_space and bus_dma more LKM friendly.
- Share a few more files between the ports.
- Other minor changes.
 1.38  04-Mar-2007  christos branches: 1.38.2; 1.38.10; 1.38.18; 1.38.20; 1.38.22;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.37  09-Feb-2007  ad branches: 1.37.2;
Merge newlock2 to head.
 1.36  14-Jan-2007  ad .. but only if _KERNEL is defined.
 1.35  14-Jan-2007  ad On second thought, implement x86_pause() as a regular function. The small
delay from the call is useful for spinlock backoff.
 1.34  01-Jan-2007  ad Report on and where possible, try to work around some of the known errata
for Athlon 64 and Opteron processors. Tested briefly by cube@ and elad@.
 1.33  26-Aug-2006  ad branches: 1.33.2;
Add x86_sfence(), x86_mfence().
 1.32  19-Aug-2006  dsl Change the 'asm' pattern for lidt so that gcc4 knows it references memory
and doesn't optimise out the assignments to the descriptor memory area.
i386 kernels now build with -Os (and -O3) applied to machdep.c
 1.31  28-Dec-2005  perry branches: 1.31.4; 1.31.8; 1.31.18;
inline -> __inline
 1.30  26-Dec-2005  perry u_intN_t -> uintN_t
 1.29  24-Dec-2005  perry Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.28  14-Jan-2004  yamt branches: 1.28.14; 1.28.16;
issue memory read barrier for BUS_DMASYNC_POSTREAD operation.
PR/21665 from Stephan Uphoff.
 1.27  27-Oct-2003  junyoung Nuke __P().
 1.26  26-Jun-2003  drochner branches: 1.26.2;
make cpu_feature unsigned, just like ci_feature_flags
 1.25  08-May-2003  fvdl Move x86_pause() out of ifdef _KERNEL.
 1.24  08-May-2003  fvdl Add x86_pause() inline function, containing the "pause" instruction
for i386, and nothing for amd64. Sprinkle it in various spinloops,
as recommended by Intel.
 1.23  04-Mar-2003  fvdl Define read_psl and write_psl as aliases for read_eflags and write_eflags.
 1.22  01-Oct-2002  fvdl Merge Bill Sommerfeld's i386 MP branch. This code has some known
caveats, but works quite well in a lot of MP cases, and all
UP cases that I have tested. Parts of this will hopefully be
reworked in the not-too-distant future.
 1.21  03-Jul-2002  yamt add KSTACK_CHECK_DR0.
 1.20  31-Jul-2001  thorpej branches: 1.20.2; 1.20.14;
Set up function pointers for copyin/copyout in preparation for
adding optimized versions for various CPU classes/models.

Split the 386 version of copyout into a separate routine, and
add a 486 version that doesn't have the class/page-writeability
check.
 1.19  28-Mar-2000  thorpej branches: 1.19.8; 1.19.10;
The assembler understands rdmsr, wrmsr, rdtsc, and rdpmc, so there's
no need to use .byte.
 1.18  28-Mar-2000  thorpej Add functions to read the TSC and Performance Counters.
 1.17  24-Mar-2000  thorpej Add some MSR-related calls. From FreeBSD.
 1.16  15-Aug-1998  mycroft branches: 1.16.12;
Assign my copyrights to TNF.
 1.15  15-Aug-1998  mycroft Make copyright notices with my name consistent.
 1.14  26-Feb-1998  perry define kernel only inline static functions only #ifdef _KERNEL
 1.13  25-Feb-1998  perry add /* LINTLIBRARY */ to supress lots of "unused function" warnings
from lint.
 1.12  05-Feb-1998  drochner provide pushfl/popfl to C code
 1.11  09-Sep-1997  mycroft Remove some vestiges of BDB.
 1.10  05-Sep-1997  chuck add invlpg, and rcr4/lcr4
 1.9  05-Jul-1997  thorpej branches: 1.9.2;
Add a breakpoint() inline, used by DDB and KGDB.
 1.8  27-Oct-1994  cgd new RCS ID format.
 1.7  09-Oct-1994  mycroft #include cpufunc.h from pmap.h.
 1.6  09-Oct-1994  mycroft Eliminate register restrictions where possible.
 1.5  28-Jan-1994  jtc branches: 1.5.2; 1.5.4;
Fix spelling error in Copyright notice
 1.4  03-Jan-1994  mycroft Inline all the [lr]cr[023]() `functions' in cpufunc.h.
 1.3  20-Dec-1993  mycroft Remove some things which should not be here.
 1.2  02-Aug-1993  mycroft branches: 1.2.2;
Add RCS identifiers, remove some completely useless RCS logs and patchkit
headers, and a few other insignificant changes.
 1.1  06-Jun-1993  cgd incorporate Bruce Evans' interrupt changes, as hacked by Rod grimes,
for patchkit patch 158. it appears to work well.
 1.2.2.3  11-Oct-1993  mycroft Move {disable,enable}_intr() to psl.h, and inline all of {in,out}{,s}[bwl] in
pio.h.
 1.2.2.2  10-Oct-1993  mycroft Change an `unsigned int' to `u_int'.
 1.2.2.1  10-Oct-1993  mycroft Add inline versions of lidt(), lldt(), ltr(), tlbflush(), lcr0(), rcro(),
rcr2(), lcr3(), and rcr3().
 1.5.4.1  11-Oct-1994  mycroft Update from trunk.
 1.5.2.2  01-Feb-1994  mycroft Remove *_intr().
 1.5.2.1  28-Jan-1994  mycroft file cpufunc.h was added on branch magnum on 1994-02-01 18:39:24 +0000
 1.9.2.2  16-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.9.2.1  06-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.16.12.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.19.10.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.19.10.2  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.19.10.1  03-Aug-2001  lukem update to -current
 1.19.8.3  18-Oct-2002  nathanw Catch up to -current.
 1.19.8.2  01-Aug-2002  nathanw Catch up to -current.
 1.19.8.1  24-Aug-2001  nathanw Catch up with -current.
 1.20.14.1  16-Jul-2002  gehenna catch up with -current.
 1.20.2.3  19-Aug-2002  sommerfeld merged with -current as of today.
rearranged gdt init to deal with KVM86 changes; however, KVM86 has no
chance of working yet; good thing it's not part of GENERIC
 1.20.2.2  22-Sep-2001  sommerfeld Move tlbflushg to cpufunc.h
 1.20.2.1  31-Jul-2001  sommerfeld file cpufunc.h was added on branch sommerfeld_i386mp_1 on 2001-09-22 23:07:34 +0000
 1.26.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.26.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.26.2.1  03-Aug-2004  skrll Sync with HEAD
 1.28.16.5  27-Oct-2007  yamt sync with head.
 1.28.16.4  03-Sep-2007  yamt sync with head.
 1.28.16.3  26-Feb-2007  yamt sync with head.
 1.28.16.2  30-Dec-2006  yamt sync with head.
 1.28.16.1  21-Jun-2006  yamt sync with head.
 1.28.14.1  28-Sep-2008  jdc Pull up revisions:
sys/arch/amd64/include/cpufunc.h patch
sys/arch/i386/include/cpufunc.h patch
sys/arch/x86/x86/bus_dma.c 1.45 via patch
requested by bouyer in ticket 1945.
 1.31.18.1  27-Aug-2006  riz Pull up following revision(s) (requested by dsl in ticket #67):
sys/arch/i386/include/cpufunc.h: revision 1.32
Change the 'asm' pattern for lidt so that gcc4 knows it references memory
and doesn't optimise out the assignments to the descriptor memory area.
i386 kernels now build with -Os (and -O3) applied to machdep.c
 1.31.8.1  03-Sep-2006  yamt sync with head.
 1.31.4.1  09-Sep-2006  rpaulo sync with head
 1.33.2.4  01-Feb-2007  ad Sync with head.
 1.33.2.3  27-Jan-2007  ad If running on a PPro or later, at boot patch in versions of spllower() and
similar that use cmpxchg8b instead of cli/sti. Cuts the clock cycles for
splx() by a factor of ~6 on the P4, and ~3 on the PIII when bracketed by
serializing instructions (and hopefully more when not).
 1.33.2.2  25-Jan-2007  ad Add x86_flush(): flush pipelines by doing a far return.
 1.33.2.1  12-Jan-2007  ad Sync with head.
 1.37.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.38.22.1  06-Oct-2007  yamt sync with head.
 1.38.20.1  06-Nov-2007  matt sync with HEAD
 1.38.18.1  02-Oct-2007  joerg Sync with HEAD.
 1.38.10.1  03-Oct-2007  garbled Sync with HEAD
 1.38.2.1  09-Oct-2007  ad Sync with head.

RSS XML Feed