summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/include/tsb.h
Commit message (Collapse)AuthorAgeFilesLines
* Convert the remainder of the low hanging fruits regarding includingmarius2007-01-191-5/+14
| | | | | | | | headers in .S directly rather than getting to their macros through genassym.c/assym.s so there are less headers genassym.c has to be kept in sync with. While at it fix some stytle(9) bugs (indentation, prototype format, sort headers, etc) and remove trailing whitespace.
* Use vm_paddr_t for physical addresses.jake2003-04-081-1/+1
|
* Add pmap support for user mappings of multiple page sizes (super pages).jake2002-08-181-3/+3
| | | | | This supports all hardware page sizes (8K, 64K, 512K, 4MB), but only 8k pages are actually used as of yet.
* Auto size available kernel virtual address space based on phsyical memoryjake2002-08-101-6/+3
| | | | | | | size. This avoids blowing out kva in kmeminit() on large memory machines (4 gigs or more). Reviewed by: tmm
* Bump TSB_PAGES_SHIFT to 4. Less sucks too much.jake2002-06-041-1/+1
|
* Merge the code in pv.c into pmap.c directly. Place all page mappings ontojake2002-05-291-1/+1
| | | | | | | | | | the pv lists in the vm_page, even unmanaged kernel mappings. This is so that the virtual cachability of these mappings can be tracked when a page is mapped to more than one virtual address. All virtually cachable mappings of a physical page must have the same virtual colour, or illegal alises can be created in the data cache. This is a bit tricky because we still have to recognize managed and unmanaged mappings, even though they are all on the pv lists.
* Update tsb_tte_enter prototype per tsb.c rev 1.20.jake2002-05-211-1/+1
|
* Minimal testing has shown that a 4 page tsb is a nice sweet spot for currentjake2002-02-271-1/+1
| | | | | | | | | | | | | | | work loads. It tapers off after that as gcc's working set generally just fits. compiling bin/csh: TSB_PAGES = 2 213.33 real 77.59 user 110.01 sys TSB_PAGES = 4 116.43 real 75.78 user 19.16 sys TSB_PAGES = 8 119.27 real 76.38 user 18.12 sys Testing by: tmm
* Wrap long lines.jake2002-02-271-1/+2
|
* Allow the user tsb to span multiple pages. Make the default 2 pages for nowjake2002-02-261-1/+3
| | | | | | | | | | | | | | | | until we do some testing to see what's best. This gives a massive reduction in system time for processes with a relatively large working set. The size of the tsb directly affects the rss size that a user process can keep mapped. When it starts to get full replacements occur and the process takes a lot of soft vm faults. Increasing the default from 1 page to 2 gives the following before and after numbers for compiling vfs_bio.c: before: 14.27 real 6.56 user 5.69 sys after: 8.57 real 6.11 user 1.62 sys This should make self hosted builds more tolerable.
* Adapt the tsb_foreach interface to take a source and a destination pmap sojake2002-02-231-2/+2
| | | | | | that it can be used for pmap_copy. Other consumers ignore the second pmap. Add statistics gathering for tsb_foreach. Implement pmap_copy.
* 1. Implement an optimization for pmap_remove() and pmap_protect(): if atmm2002-01-021-1/+8
| | | | | | | | | | | | | | substantial fraction of the number of entries of tte's in the tsb would need to be looked up, traverse the tsb instead. This is crucial in some places, e.g. when swapping out a process, where a certain pmap_remove() call would take very long time to complete without this. 2. Implement pmap_qenter_flags(), which will become used later 3. Reactivate the instruction cache flush done when mapping as executable. This is required e.g. when executing files via NFS, but is known to cause problems on UltraSPARC-IIe CPU's. If you have such a CPU, you will need to comment this call out for now. Submitted by: jake (3)
* Remove support for multi level tsbs, making this code much simpler andjake2001-12-291-129/+27
| | | | | | | | much less magic, fragile, broken. Use ttes rather than sttes. We still use the replacement scheme used by the original code, which is pretty cool. Many crucial bug fixes from: tmm
* Parameterize the size of the kernel virtual address space on KVA_PAGES.jake2001-10-201-11/+7
| | | | | | | | | | | Don't use a hard coded address constant for the virtual address of the kernel tsb. Allocate kernel virtual address space for the kernel tsb at runtime. Remove unused parameter to pmap_bootstrap. Adapt pmap.c to use KVA_PAGES. Map the message buffer too. Add some traces. Implement pmap_protect.
* Move the kernel to end of the first 4 gigabytes of address space, so thatjake2001-09-301-13/+3
| | | | | | | | one 4 meg page can map both the kernel and the openfirmware mappings. Add the openfirmware mappings to the kernel tsb so we can call the firmware on the kernel trap table and access kernel memory normally. Implement pmap_swapout_proc, pmap_swapin_proc, pmap_swapout_thread, pmap_swapin_thread, pmap_activate, pmap_page_exists, and pmap_phys_address.
* Fix macros for setting and extracting the context field in ttes andjake2001-08-061-29/+5
| | | | add macros for the fields in sfsr.
* Fix a bug translating virtual translation table entry addresses to physicaljake2001-08-031-4/+3
| | | | | | | addresses. It helps to use the physical address that the virtual address actually maps to (doh!). Comment out some code that crashes. Found independently by: tmm
* Flesh out the sparc64 port considerably. This contains:jake2001-07-311-0/+220
- mostly complete kernel pmap support, and tested but currently turned off userland pmap support - low level assembly language trap, context switching and support code - fully implemented atomic.h and supporting cpufunc.h - some support for kernel debugging with ddb - various header tweaks and filling out of machine dependent structures
OpenPOWER on IntegriCloud