summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/include/pcpu.h
Commit message (Collapse)AuthorAgeFilesLines
* Remove unused fields.jake2003-03-181-5/+1
|
* Store the number of itlb and dtlb entries separately; they may be different.jake2002-08-151-0/+1
| | | | | Find the prom node for the boot cpu earlier and store it in the per-cpu area, so that cache_init can be called earlier.
* Convert the interrupt queue from an array to a linked list. Implementjake2002-05-251-1/+4
| | | | | intr_dequeue in asm so that it can easily be modified to do light weight context switching.
* Add support for starting secondary cpus in kernel, as opposed to relyingjake2002-03-041-0/+4
| | | | | | | | | | | | | | | on the loader to do it. Improve smp startup code to be less racy and to defer certain things until the right time. This almost boots single user on my dual ultra 60, it is still very fragile: SMP: AP CPU #1 Launched! Enter full pathname of shell or RETURN for /bin/sh: # ls Debugger("trapsig") Stopped at Debugger+0x1c: ta %xcc, 1 db> heh No such command db>
* Allocate tlb contexts on the fly in cpu_switch, instead of statically 1 to 1jake2002-03-041-0/+3
| | | | | | | | | | | | | with pmaps. When the context numbers wrap around we flush all user mappings from the tlb. This makes use of the array indexed by cpuid to allow a pmap to have a different context number on a different cpu. If the context numbers are then divided evenly among cpus such that none are shared, we can avoid sending tlb shootdown ipis in an smp system for non-shared pmaps. This also removes a limit of 8192 processes (pmaps) that could be active at any given time due to running out of tlb contexts. Inspired by: the brown book Crucial bugfix from: tmm
* Add a md field to pcpu for the upa module id.jake2002-01-081-3/+6
| | | | | | Remove the alt_stack field. Use the defines for the register variables declared in C, so that they don't get out of sync with the assembler.
* Overhaul the per-CPU support a bit:jhb2001-12-111-32/+16
| | | | | | | | | | | | | | | | | | | | | | | | | - The MI portions of struct globaldata have been consolidated into a MI struct pcpu. The MD per-CPU data are specified via a macro defined in machine/pcpu.h. A macro was chosen over a struct mdpcpu so that the interface would be cleaner (PCPU_GET(my_md_field) vs. PCPU_GET(md.md_my_md_field)). - All references to globaldata are changed to pcpu instead. In a UP kernel, this data was stored as global variables which is where the original name came from. In an SMP world this data is per-CPU and ideally private to each CPU outside of the context of debuggers. This also included combining machine/globaldata.h and machine/globals.h into machine/pcpu.h. - The pointer to the thread using the FPU on i386 was renamed from npxthread to fpcurthread to be identical with other architectures. - Make the show pcpu ddb command MI with a MD callout to display MD fields. - The globaldata_register() function was renamed to pcpu_init() and now init's MI fields of a struct pcpu in addition to registering it with the internal array and list. - A pcpu_destroy() function was added to remove a struct pcpu from the internal array and list. Tested on: alpha, i386 Reviewed by: peter, jake
* Include a whole interrupt queue in struct globaldata instead of just ajake2001-10-201-12/+12
| | | | pointer. Minor style.
* - If we ever do the per-cpu KTR stuff, the index won't be volatile as itjhb2001-09-181-1/+1
| | | | | | will be private to each CPU. - Re-style(9) the globaldata structures. There really needs to be a MI struct pcpu that has a MD struct mdpcpu member at some point.
* KSE Milestone 2julian2001-09-121-2/+2
| | | | | | | | | | | | | | Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
* Move the alternate global register stack to struct globaldata.jake2001-09-031-0/+6
|
* Add variables needed by hardware watchpoint support.jake2001-08-201-0/+6
| | | | Submitted by: tmm
* style(9) and make consistent across platformsobrien2001-08-161-14/+29
|
* Add fields that point to per-cpu interrupt data.jake2001-08-101-0/+3
|
* The author isn't a [UC] Regents. Correct the copyright language.obrien2001-08-091-2/+2
|
* Add floating point context switching code for sparc64.tmm2001-08-041-1/+0
| | | | Reviewed by: jake
* Flesh out the sparc64 port considerably. This contains:jake2001-07-311-1/+1
| | | | | | | | | - 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
* Add skeleton machine dependent headers and c files for a port of freebsdjake2001-07-311-0/+49
to a new architecture. This is the base of the sparc64 port, but contains limited machine dependent code, and can be used a base for ports. Included are: - standard machine dependent headers, tweaked for a 64 bit, big endian architecture, including empty versions of all the machine dependent structures - a machine independent atomic.h, which can be used until a port has support for interrupts and the operations really need to be atomic - stub versions of all the machine dependent functions, which panic when called and print out the name of the function that needs to be implemented. functions which are normally in assembly files are not included, but this should reduce the number of different undefined references on the first few compiles from hundreds to 5 or 6 Given minimal startup code and console support it should be trivial to make this compile and run the first few sysinits on almost any architecture. Requested by: alfred, imp, jhb
OpenPOWER on IntegriCloud