summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
Commit message (Collapse)AuthorAgeFilesLines
* Modify the cache handling code to assume 2 virtual colours, which is muchjake2002-08-011-23/+95
| | | | | simpler and easier to get right. Add comments. Add more statistic gathering on cacheable and uncacheable mappings.
* Add some statistic gathering for cache flushes.jake2002-07-311-2/+41
|
* These file are no longer used (moved to userland and/or merged intojake2002-07-315-689/+0
| | | | pmap.c).
* These were repo-copied to have a .S extension.jake2002-07-316-4398/+0
|
* Add definitions for statistical and high-resolution profiling. The callingjake2002-07-303-66/+91
| | | | | | | | conventions for _mcount and __cyg_profile_func_enter are different, so statistical profiling kernels build and link but don't actually work. IWBNI one could tell gcc to only generate calls to the former. Define uintfptr_t properly for userland, but not for the kernel (I hope).
* The data cache on UltraSPARC III is not directly mapped, so don't assertjake2002-07-301-2/+0
| | | | | | that. This breaks assumptions made by some of the cache flushing code, but UltraSPARC III has different methods for invalidating cache lines anyway.
* Panic if the data cache has too many virtual colors (more than 2).jake2002-07-301-0/+2
|
* Use _ALIGN_DATA and _ALIGN_TEXT.jake2002-07-302-4/+4
|
* Create a new header <machine/_stdint.h> for storing MD parts ofmike2002-07-294-231/+171
| | | | | | | | | <stdint.h>. Previously, parts were defined in <machine/ansi.h> and <machine/limits.h>. This resulted in two problems: (1) Defining macros in <machine/ansi.h> gets in the way of that header only defining types. (2) Defining C99 limits in <machine/limits.h> adds pollution to <limits.h>.
* Add routines needed for high resolution profiling.jake2002-07-291-0/+83
|
* Add a symbol for btext.jake2002-07-292-0/+2
|
* Remove a stale comment.jake2002-07-292-8/+0
|
* Use _ALIGN_TEXT. Implement __cyg_profile_func_enter andjake2002-07-292-20/+138
| | | | __cyg_profile_func_exit for GUPROF.
* Add _ALIGN_DATA and _ALIGN_TEXT macros.jake2002-07-291-1/+9
|
* Remove some stuff that snuck in last commit.jake2002-07-291-5/+0
|
* Fix a bug introduced in previous commit. Due to the interaction of thejake2002-07-281-2/+2
| | | | | | direct physical mappings with virtual page colour, we need to flush the data cache when a page changes colour. I missed one case which broke pipes.
* Revert the previous delta; uintfptr_t needs to be available tomike2002-07-281-0/+1
| | | | | | | | | userland for libc/gmon to compile, so the typedef in <machine/types.h> isn't good enough. This is really ugly since we end up with the actual value which uintfptr_t is typedef'd from, in multiple places. This is bug for bug compatible with the other FreeBSD architectures. Noticed by: sparc64 tinderbox
* Add declarations for btext and etext.jake2002-07-281-0/+3
|
* uintfptr_t has moved to machine/types.h.jake2002-07-271-1/+0
|
* Implement a direct mapped address region, like alpha and ia64. Thisjake2002-07-276-42/+182
| | | | | | | | | | | | | | | basically maps all of physical memory 1:1 to a range of virtual addresses outside of normal kva. The advantage of doing this instead of accessing phsyical addresses directly is that memory accesses will go through the data cache, and will participate in the normal cache coherency algorithm for invalidating lines in our own and in other cpus' data caches. So we don't have to flush the cache manually or send IPIs to do so on other cpus. Also, since the mappings never change, we don't have to flush them from the tlb manually. This makes pmap_copy_page and pmap_zero_page MP safe, allowing the idle zero proc to run outside of giant. Inspired by: ia64
* Catch up to rev 1.339 of src/sys/conf/options (PCI_ENABLE_IO_MODES ismike2002-07-271-1/+0
| | | | now a sysctl and is enabled by default).
* Remove the tlb argument to tlb_page_demap (itlb or dtlb), in order to betterjake2002-07-269-60/+21
| | | | match the pmap_invalidate api.
* Set interrupt clear pointer for SBus slots to point to correct spot.mjacob2002-07-251-2/+2
|
* de-count pcipeter2002-07-231-1/+1
|
* Add explicit unit count on 'device pci' for ahc/ahdpeter2002-07-211-1/+1
|
* Infrastructure tweaks to allow having both an Elf32 and an Elf64 executablepeter2002-07-201-0/+40
| | | | | | | | | | | | | | | handler in the kernel at the same time. Also, allow for the exec_new_vmspace() code to build a different sized vmspace depending on the executable environment. This is a big help for execing i386 binaries on ia64. The ELF exec code grows the ability to map partial pages when there is a page size difference, eg: emulating 4K pages on 8K or 16K hardware pages. Flesh out the i386 emulation support for ia64. At this point, the only binary that I know of that fails is cvsup, because the cvsup runtime tries to execute code in pages not marked executable. Obtained from: dfr (mostly, many tweaks from me).
* Various comment and minor style fixes. No actual content changes.jhb2002-07-161-16/+12
| | | | Inspired by: bde
* When multiple IOMMUs are present in a system, use a single TSB for alltmm2002-07-164-224/+160
| | | | | | | | | | | of them, and couple them by always performing all operations on all present IOMMUs. This is required because with the current API there is no way to determine on which bus a busdma operation is performed. While being there, clean up the iommu code a bit. This should be a step in the direction of allow some of larger machines to work; tests have shown that there still seem to be problems left.
* Add new UltraSPARC-III VIS II instructions.tmm2002-07-161-0/+9
|
* Add new LSU bits for UltraSPARC-III.tmm2002-07-161-0/+16
|
* Add ASI definitions of UltraSPARC-III (Cu) processors, and add sometmm2002-07-161-8/+102
| | | | previously missing US-I and II ones.
* o Lock page queue accesses by vm_page_wire().alc2002-07-141-0/+2
|
* Try both upa-portid and portid properties when finding the module id of ajake2002-07-141-1/+2
| | | | secondary cpu. Its called portid on UltraSPARCIII machines.
* Remove debug code.jake2002-07-143-256/+2
|
* o Complete the locking of page queue accesses by vm_page_unwire().alc2002-07-131-0/+4
| | | | | | o Assert that the page queues lock is held in vm_page_unwire(). o Make vm_page_lock_queues() and vm_page_unlock_queues() visible to kernel loadable modules.
* Add additional cred_free_thread() calls that I had missed the first time.mini2002-07-131-0/+6
| | | | Pointed out by: jhb
* Use a fixed address for KERNBASE, so it doesn't change if the size of KVAjake2002-07-131-26/+6
| | | | | is increased. Its confusing for all the kernel addresses to change, and doesn't serve much purpose as far as conserving address space.
* Identify UltraSPARC-III and UltraSPARC-III+ cpus.jake2002-07-132-3/+15
|
* Set the thread state of the newly chosen to run thread to TDS_RUNNING injhb2002-07-123-8/+0
| | | | | | | | choosethread() in MI C code instead of doing it in in assembly in all the various cpu_switch() functions. This fixes problems on ia64 and sparc64. Reviewed by: julian, peter, benno Tested on: i386, alpha, sparc64
* When sending cache flushing IPIs, don't try to IPI the triggering CPUtmm2002-07-121-4/+4
| | | | | | | | | | itself; this causes undefined behaviour on UltraSPARCs. In particular, the interrupt packet data words will not necessarily be delivered correctly, which would result in a crash. This bug also caused the cache-flushing work to be done twice on the triggering CPU (when it did not cause crashes). Reviewed by: jake
* thread_exit() requires PROC_LOCK to be held, so lock it.jhb2002-07-111-1/+2
|
* Remove label_t and physadr, which seem to have never been used inmike2002-07-101-10/+0
| | | | | | FreeBSD. Submitted by: bde
* Move __offsetof() macro from <machine/ansi.h> to <sys/cdefs.h>. It'smike2002-07-081-5/+0
| | | | | | hardly MD, since all our platforms share the same macro. It's not really compiler dependent either, but this helps in reducing <machine/ansi.h> to only type definitions.
* Add a special page zero entry point intended to be called via the singlepeter2002-07-081-0/+16
| | | | | | | | | | | | | | | threaded VM pagezero kthread outside of Giant. For some platforms, this is really easy since it can just use the direct mapped region. For others, IPI sending is involved or there are other issues, so grab Giant when needed. We still have preemption issues to deal with, but Alan Cox has an interesting suggestion on how to minimize the problem on x86. Use Luigi's hack for preserving the (lack of) priority. Turn the idle zeroing back on since it can now actually do something useful outside of Giant in many cases.
* Collect all the (now equivalent) pmap_new_proc/pmap_dispose_proc/peter2002-07-071-148/+0
| | | | | | | | | | | | | pmap_swapin_proc/pmap_swapout_proc functions from the MD pmap code and use a single equivalent MI version. There are other cleanups needed still. While here, use the UMA zone hooks to keep a cache of preinitialized proc structures handy, just like the thread system does. This eliminates one dependency on 'struct proc' being persistent even after being freed. There are some comments about things that can be factored out into ctor/dtor functions if it is worth it. For now they are mostly just doing statistics to get a feel of how it is working.
* Fix (s/proc/thread/) some typos in two panic messages.peter2002-07-071-2/+2
|
* Back out proc part of last commit. UMA manages the thread cache only, andpeter2002-07-051-8/+22
| | | | | | | | | we just have to deal with the kstack when told to. We do not have a UMA-managed cache for the proc struct and its associated upage yet. So, go back to the old lazy mechanism. Note that if UMA destroys pages that used to contain proc structures, we'll lose the corresponding upage forever. (zones never did this - once a page was allocated, it stayed attached to the proc zone forever)
* Take a shot at implementing changes from i386/pmap.c rev 1.328-1.331.peter2002-07-051-49/+22
|
* Since printf(3) now supports the `j' conversion specifier, use thatmike2002-06-301-11/+11
| | | | | | | when printing intmax_t and uintmax_t. Forgotten by: mike Noticed by: bde
* Remove ALT_BREAK_TO_DEBUGGER. This was inconsistent (both in formrwatson2002-06-301-1/+0
| | | | | | | | | and function) with existing configuration choices. Arguably if ALT_BREAK_TO_DEBUGGER was present, so should have been BREAK_TO_DEBUGGER. Regardless, it broke the option sort order in these kernel configuration files. Requested by: bde
OpenPOWER on IntegriCloud