freebsd-nq/sys/i386/include
Peter Wemm f1b665c8fe Revive backed out pmap related changes from Feb 2002. The highlights are:
- It actually works this time, honest!
- Fine grained TLB shootdowns for SMP on i386.  IPI's are very expensive,
  so try and optimize things where possible.
- Introduce ranged shootdowns that can be done as a single IPI.
- PG_G support for i386
- Specific-cpu targeted shootdowns.  For example, there is no sense in
  globally purging the TLB cache for where we are stealing a page from
  the local unshared process on the local cpu.  Use pm_active to track
  this.
- Add some instrumentation for the tlb shootdown code.
- Rip out SMP code from <machine/cpufunc.h>
- Try and fix some very bogus PG_G and PG_PS interactions that were bad
  enough to cause vm86 bios calls to break.  vm86 depended on our existing
  bugs and this was the cause of the VESA panics last time.
- Fix the silly one-line error that caused the 'panic: bad pte' last time.
- Fix a couple of other silly one-line errors that should have caused more
  pain than they did.

Some more work is needed:
- pmap_{zero,copy}_page[_idle].  These can be done without IPI's if we
  have a hook in cpu_switch.
- The IPI handlers need some cleanup.  I have a bogus %ds load that can
  be avoided.
- APTD handling is rather bogus and appears to be a large source of
  global TLB IPI shootdowns for no really good reason.

I see speedups of between 1.5% and ~4% on buildworlds in a while 1 loop.
I expect to see a bigger difference when there is significant pageout
activity or the system otherwise has memory shortages.

I have backed out a few optimizations that I had been using over the last
few days in order to be a little more conservative.  I'll revisit these
again over the next few days as the dust settles.

New option:  DISABLE_PG_G - In case I missed something.
2002-07-12 07:56:11 +00:00
..
pc Fixed to draw mouse cursor. The syscons driver for PC98 uses different 2001-12-14 15:27:15 +00:00
_inttypes.h Since printf(3) now supports the `j' conversion specifier, use that 2002-06-30 05:48:03 +00:00
_limits.h o Add new header <sys/stdint.h>. 2001-11-02 18:05:43 +00:00
ansi.h Move __offsetof() macro from <machine/ansi.h> to <sys/cdefs.h>. It's 2002-07-08 16:43:35 +00:00
apic.h Introduce a standard name for the lock protecting an interrupt controller 2001-12-20 23:48:31 +00:00
apicreg.h Introduce a standard name for the lock protecting an interrupt controller 2001-12-20 23:48:31 +00:00
apm_bios.h Remove __P. 2002-03-20 05:48:58 +00:00
apm_segments.h
asc_ioctl.h
asm.h ASM versions of __FBSDID. 2002-03-23 02:01:27 +00:00
asmacros.h Silence preprocessor warning, No need to use CONCAT with "," and "word". 2002-06-01 20:22:33 +00:00
atomic.h Make MPLOCKED work again in asm files and stringify it explicitly 2002-02-28 06:17:05 +00:00
bootinfo.h
bus_at386.h Add stubs for bus_space_unmap() and bus_space_free(). They are needed to 2002-02-18 13:43:19 +00:00
bus_dma.h - Moved the bus_dma declarations from bus_{at386,pc98}.h into bus_dma.h. 2001-10-06 16:27:21 +00:00
bus_memio.h
bus_pc98.h Remove unneeded ## for GCC 3.1 2002-05-21 12:50:20 +00:00
bus_pio.h
bus.h Add the following functions/macros to support byte order conversions and 2002-02-27 17:16:18 +00:00
cdk.h
clock.h Remove __P. 2002-03-20 05:48:58 +00:00
comstats.h
cpu.h Remove __P. 2002-03-20 05:48:58 +00:00
cpufunc.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
cputypes.h
critical.h Remove the critmode sysctl - the new method for critical_enter/exit (already 2002-07-10 20:15:58 +00:00
cronyx.h
db_machdep.h Fill out some gaps in ia64 DDB support. This involves generalising DDB's 2001-09-15 11:06:07 +00:00
dvcfg.h Remove __P. 2002-03-20 05:48:58 +00:00
elf.h Move the definition of ElfN_Hashelt to common headers. The only platform 2002-05-30 08:32:18 +00:00
endian.h Add manifest constants: _LITTLE_ENDIAN, _BIG_ENDIAN, _PDP_ENDIAN, and 2002-04-10 14:39:14 +00:00
exec.h
float.h
floatingpoint.h Fixed the return value of fpsetmask(). The API requires inversion of the 2002-06-01 17:39:46 +00:00
frame.h Remove __P. 2002-03-20 05:48:58 +00:00
gsc.h
i4b_cause.h Clean up the i4b kernel part: remove unmaintained #if(def)s for NetBSD, 2002-03-17 09:33:15 +00:00
i4b_debug.h Clean up the i4b kernel part: remove unmaintained #if(def)s for NetBSD, 2002-03-17 09:33:15 +00:00
i4b_ioctl.h Add support for Q.931 subaddresses. 2002-03-26 15:13:54 +00:00
i4b_rbch_ioctl.h Clean up the i4b kernel part: remove unmaintained #if(def)s for NetBSD, 2002-03-17 09:33:15 +00:00
i4b_tel_ioctl.h Clean up the i4b kernel part: remove unmaintained #if(def)s for NetBSD, 2002-03-17 09:33:15 +00:00
i4b_trace.h Clean up the i4b kernel part: remove unmaintained #if(def)s for NetBSD, 2002-03-17 09:33:15 +00:00
ieeefp.h
if_wl_wavelan.h Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
iic.h
in_cksum.h Fix several bugs in the i386 asm statements used to speed up Internet 2002-06-22 22:35:53 +00:00
ioctl_bt848.h Fix typo in comments 2000-10-31 14:30:29 +00:00
ioctl_ctx.h
ioctl_meteor.h
kse.h Add files that are new for KSE. 2002-06-29 07:04:59 +00:00
legacyvar.h
limits.h o Add new header <sys/stdint.h>. 2001-11-02 18:05:43 +00:00
md_var.h GC various bits and pieces of USERCONFIG from all over the place. 2002-04-09 11:18:46 +00:00
mpapic.h Remove the old APIC I/O higher level IPI API in favor of the newer MI 2001-04-10 22:18:21 +00:00
mptable.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
mtpr.h
mutex.h GC #if 0'd assembly mutex micro operations. If someone wants to bring 2002-03-28 15:14:23 +00:00
nexusvar.h
npx.h Remove __P. 2002-03-20 05:48:58 +00:00
param.h Move MI stuff out of MD param.h files. 2002-05-14 20:35:29 +00:00
pcaudioio.h
pcb_ext.h Remove __P. 2002-03-20 05:48:58 +00:00
pcb.h Compromise for critical*()/cpu_critical*() recommit. Cleanup the interrupt 2002-03-27 05:39:23 +00:00
pci_cfgreg.h Detect a certain type of PCIBIOS brain damage. For some reason, 2001-08-21 03:10:55 +00:00
pcpu.h Compromise for critical*()/cpu_critical*() recommit. Cleanup the interrupt 2002-03-27 05:39:23 +00:00
pcvt_ioctl.h
pecoff_machdep.h Add PECOFF (WIN32 Execution file format) support. 2000-12-20 12:51:08 +00:00
perfmon.h Remove __P. 2002-03-20 05:48:58 +00:00
physio_proc.h Remove __P. 2002-03-20 05:48:58 +00:00
pmap.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
privatespace.h Overhaul the per-CPU support a bit: 2001-12-11 23:33:44 +00:00
proc.h Remove the critmode sysctl - the new method for critical_enter/exit (already 2002-07-10 20:15:58 +00:00
profile.h Stylify (mainly line up macro EOL-continuation \'s), and add a dummy 2002-04-21 10:49:00 +00:00
psl.h Allow bit 21 of EFLAGS register (PSL_ID) be changed in the use-mode without 2001-11-15 23:01:29 +00:00
ptrace.h Move the definition of PT_[GS]ET{,DB,FP}REGS from the MD ptrace.h to the 2002-03-16 00:25:53 +00:00
reg.h Remove __P. 2002-03-20 05:48:58 +00:00
reloc.h
resource.h
runq.h Move the "- 1" into the RQB_FFS(mask) macro itself so that 2002-06-20 06:21:20 +00:00
segments.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-23 15:09:35 +00:00
setjmp.h
sigframe.h Use struct __ucontext in prototypes and associated functions instead of 2002-02-17 17:40:34 +00:00
signal.h Use struct __ucontext in prototypes and associated functions instead of 2002-02-17 17:40:34 +00:00
smb.h
smp.h Revive backed out pmap related changes from Feb 2002. The highlights are: 2002-07-12 07:56:11 +00:00
smptests.h Remove #define APIC_INTR_HIGHPRI_CLOCK - this is no longer used 2002-07-08 09:14:01 +00:00
speaker.h
specialreg.h Add additional cpuid feature flags and put into a canonical format. 2002-06-22 23:00:33 +00:00
spigot.h
stdarg.h I reorganized a little bit too much in the backwards case. 2002-05-10 03:24:06 +00:00
sysarch.h Remove __P. 2002-03-20 05:48:58 +00:00
trap.h Activate SSE/SIMD. This is the extra context switching support that 2001-07-12 06:32:51 +00:00
tss.h Declare or #define per-cpu globals in <machine/globals.h> in all cases. 2000-10-27 08:30:59 +00:00
types.h Remove label_t and physadr, which seem to have never been used in 2002-07-10 15:47:59 +00:00
ucontext.h Use a spare slot in the machine context for a flags word to indicate 2002-01-10 02:32:30 +00:00
varargs.h Gcc 3.1 varargs support. 2002-05-10 02:02:54 +00:00
vm86.h Remove __P. 2002-03-20 05:48:58 +00:00
vmparam.h
wtio.h