Home | History | Annotate | Download | only in include
History log of /src/sys/arch/sparc64/include/pte.h
RevisionDateAuthorComments
 1.29  07-Jan-2025  andvar s/bitfeilds/bitfields/ in comment.
 1.28  04-Nov-2016  macallan branches: 1.28.52;
add plumbing to support bus_space_mmap() with:
- write combining allowed via BUS_SPACE_MAP_PREFETCHABLE
- byte order translation via BUS_SPACE_MAP_LITTLE
 1.27  03-Apr-2015  palle branches: 1.27.2;
sun4v: There is no L-bit (Locked) in the sun4v tte
 1.26  03-Mar-2014  palle branches: 1.26.6;
sun4v: SUN4V_TLB_TSB_LOCK define should have the same LL (instead of UL) as the other defines
 1.25  21-Feb-2014  palle sun4v: Rename TLB_ defines to SUN4U_TLB_ so entries created using TSB_DATA() are properly setup for sun4u and sun4v. Relocate the cputyp variable from autoconf.c to locore.s and make it const in param.h so optimized code can be generated. Parts from OpenBSD. Optimization suggested by nakayama@. OK martin@, mrg@, nakayama@
 1.24  16-Dec-2013  palle Updates to pmap_bootstrap() for sun4v - parts from OpenBSD - OK martin@
 1.23  08-Dec-2013  palle Add support for running ofwboot on sun4v. Please note that the kernel on sun4v will be loaded properly but when the kernel takes over it will crash immediately since the kernel is not sun4v ready yet
 1.22  15-Jan-2010  nakayama branches: 1.22.12; 1.22.22; 1.22.26;
Fix typo in previous.
 1.21  05-Dec-2009  mrg - update the TLB_SOFT2_MASK and TLB_DIAG_MASK definitions for USIII. partly
from openbsd.
- rename TLB_DIAG_MASK to TLB_RESERVED_MASK. from openbsd.
- fix the TLB_PA_MASK definition to be correct. our old one was 4 bits
too wide.
- fix various errors in the #if 0 bitfield version of struct sun4u_tag_fields.

tested on U60 and SB2500.
 1.20  14-Mar-2008  nakayama branches: 1.20.4;
Complete per-CPU TSBs and MMU contexts changes.
 1.19  22-Feb-2008  martin Get rid of the IPI simple_lock.
 1.18  08-Sep-2006  mrg branches: 1.18.30; 1.18.50; 1.18.54;
make this idempotent.
 1.17  20-Feb-2006  cdi branches: 1.17.2; 1.17.14;
Use ANSI-style function definitions and declarations.
 1.16  11-Feb-2006  cdi ANSIfication: u_intN_t -> uintN_t, use ANSI function declarations/definitions
instead of K&R ones.
 1.15  11-Dec-2005  christos branches: 1.15.2; 1.15.4; 1.15.6;
merge ktrace-lwp.
 1.14  22-Feb-2005  martin branches: 1.14.4;
Cleanup: the PG_SZ macro was buggy (pointed out by Tim Newsham).
It was only used by (the also buggy/not ready for prime time) PMAP_PAGE_SIZE,
which in turn only was used in one place.

Get rid of all this and hardcode the result at the single place of use.
 1.13  14-Mar-2004  chs branches: 1.13.8; 1.13.10;
checkpoint of MP work from dennis and myself. includes cross-processor
interrupt framework, a sledgehammer TLB invalidation and misc MP fixes.
doesn't work at all yet.
 1.12  06-Jan-2003  wiz branches: 1.12.2;
writable, not writeable.
 1.11  22-Sep-2002  chs many improvements:
- use struct vm_page_md for attaching pv entries to struct vm_page
- change pseg_set()'s return value to indicate whether the spare page
was used as an L2 or L3 PTP.
- use a pool for pv entries instead of malloc().
- put PTPs on a list attached to the pmap so we can free them
more efficiently (by just walking the list) in pmap_destroy().
- use the new pmap_remove_all() interface to avoid flushing the cache and TLB
for each pmap_remove() that's done as we are tearing down an address space.
- in pmap_enter(), handle replacing an existing mapping more efficiently
than just calling pmap_remove() on it. also, skip flushing the
TSB and TLB if there was no previous mapping, since there can't be
anything we need to flush. also, preload the TSB if we're pre-setting
the mod/ref bits.
- allocate hardware contexts like the MIPS pmap:
allocate them all sequentially without reuse, then once we run out
just invalidate all user TLB entries and flush the entire L1 dcache.
- fix pmap_extract() for the case where the va is not page-aligned and
nothing is mapped there.
- fix calculation of TSB size. it was comparing physmem (which is
in units of pages) to constants that only make sense if they are
in units of bytes.
- avoid sleeping in pmap_enter(), instead let the caller do it.
- use pmap_kenter_pa() instead of pmap_enter() where appropriate.
- remove code to handle impossible cases in various functions.
- tweak asm code to pipeline a little better.
- remove many unnecessary spls and membars.
- lots of code cleanup.
- no doubt other stuff that I've forgotten.

the result of all this is that a fork+exit microbenchmark is 34% faster
and a fork+exec+exit microbenchmark is 28% faster.
 1.10  20-Mar-2002  eeh Add PTE_WIRED bit to keep track of wired pages.
 1.9  04-Dec-2001  darrenr defopt "options SUN4*", put #define for each of SUN4, SUN4C, SUN4M and SUN4U
into opt_arch_sparc.h and include this wherever they are used.
 1.8  30-Aug-2001  mrg branches: 1.8.6;
add some sun4/sun4c/sun4m compat code so we can build 32 bit kvm. (these files are not even vaguely syncable.)
 1.7  31-Jul-2001  eeh Dump some enums that make lint unhappy and we never really use anyway.
 1.6  21-Jun-2001  eeh branches: 1.6.2;
Allow multiple 4MB pages for both kernel text and kernel data.

Note: DEBUG checks will not allow accesses to the hole between
text and data segments, so you may need to update programs that
use libkvm before relocating the start of kernel data.
 1.5  05-Jun-1999  eeh Make pbrobeget() and probeset() work for 64-bit values as well. To do this
the arguments are changed so the address is first and the ASI second so we
can have the address in %o0:%o1 and not worry about unused registers.

Also a bit of copyright cleanup.
 1.4  30-May-1999  eeh Make pmap_enter() handle little-endian mappings properly.
 1.3  05-Sep-1998  eeh branches: 1.3.8;
It slices. It dices. It does everything except exec a sparc32_compat init.
 1.2  13-Aug-1998  eeh Merge paddr_t changes into the main branch.
 1.1  20-Jun-1998  eeh branches: 1.1.1;
Initial revision
 1.1.1.1  20-Jun-1998  eeh branches: 1.1.1.1.2;
Import of sparc64.
 1.1.1.1.2.1  30-Jul-1998  eeh Split vm_offset_t and vm_size_t into paddr_t, psize_t, vaddr_t, and vsize_t.
 1.3.8.1  21-Jun-1999  thorpej Sync w/ -current.
 1.6.2.5  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.6.2.4  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.6.2.3  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.6.2.2  13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.6.2.1  03-Aug-2001  lukem update to -current
 1.8.6.5  07-Jan-2003  thorpej Sync with HEAD.
 1.8.6.4  18-Oct-2002  nathanw Catch up to -current.
 1.8.6.3  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.8.6.2  08-Jan-2002  nathanw Catch up to -current.
 1.8.6.1  30-Aug-2001  nathanw file pte.h was added on branch nathanw_sa on 2002-01-08 00:28:00 +0000
 1.12.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.12.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.12.2.1  03-Aug-2004  skrll Sync with HEAD
 1.13.10.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.13.8.1  29-Apr-2005  kent sync with -current
 1.14.4.4  17-Mar-2008  yamt sync with head.
 1.14.4.3  27-Feb-2008  yamt sync with head.
 1.14.4.2  30-Dec-2006  yamt sync with head.
 1.14.4.1  21-Jun-2006  yamt sync with head.
 1.15.6.1  22-Apr-2006  simonb Sync with head.
 1.15.4.1  09-Sep-2006  rpaulo sync with head
 1.15.2.2  01-Mar-2006  yamt sync with head.
 1.15.2.1  18-Feb-2006  yamt sync with head.
 1.17.14.1  18-Nov-2006  ad Sync with head.
 1.17.2.1  14-Sep-2006  yamt sync with head.
 1.18.54.1  03-Apr-2008  mjf Sync with HEAD.
 1.18.50.1  24-Mar-2008  keiichi sync with head.
 1.18.30.1  23-Mar-2008  matt sync with HEAD
 1.20.4.1  11-Mar-2010  yamt sync with head
 1.22.26.1  18-May-2014  rmind sync with head
 1.22.22.2  03-Dec-2017  jdolecek update from HEAD
 1.22.22.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.22.12.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.26.6.2  05-Dec-2016  skrll Sync with HEAD
 1.26.6.1  06-Apr-2015  skrll Sync with HEAD
 1.27.2.1  04-Nov-2016  pgoyette Sync with HEAD
 1.28.52.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed