summaryrefslogtreecommitdiffstats
path: root/sys/i386/include/asnames.h
Commit message (Collapse)AuthorAgeFilesLines
* Major update to the way synchronization is done in the kernel. Highlightsjasone2000-09-071-5/+19
| | | | | | | | | | | | | | | include: * Mutual exclusion is used instead of spl*(). See mutex(9). (Note: The alpha port is still in transition and currently uses both.) * Per-CPU idle processes. * Interrupts are run in their own separate kernel threads and can be preempted (i386 only). Partially contributed by: BSDi (BSD/OS) Submissions by (at least): cp, dfr, dillon, grog, jake, jhb, sheldonh
* Commit major SMP cleanups and move the BGL (big giant lock) in thedillon2000-03-281-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | syscall path inward. A system call may select whether it needs the MP lock or not (the default being that it does need it). A great deal of conditional SMP code for various deadended experiments has been removed. 'cil' and 'cml' have been removed entirely, and the locking around the cpl has been removed. The conditional separately-locked fast-interrupt code has been removed, meaning that interrupts must hold the CPL now (but they pretty much had to anyway). Another reason for doing this is that the original separate-lock for interrupts just doesn't apply to the interrupt thread mechanism being contemplated. Modifications to the cpl may now ONLY occur while holding the MP lock. For example, if an otherwise MP safe syscall needs to mess with the cpl, it must hold the MP lock for the duration and must (as usual) save/restore the cpl in a nested fashion. This is precursor work for the real meat coming later: avoiding having to hold the MP lock for common syscalls and I/O's and interrupt threads. It is expected that the spl mechanisms and new interrupt threading mechanisms will be able to run in tandem, allowing a slow piecemeal transition to occur. This patch should result in a moderate performance improvement due to the considerable amount of code that has been removed from the critical path, especially the simplification of the spl*() calls. The real performance gains will come later. Approved by: jkh Reviewed by: current, bde (exception.s) Some work taken from: luoqi's patch
* oszsigcode -> szosigcodemarcel1999-12-041-1/+1
| | | | Pointed out by: bde
* Optimize two cases in the MP locking code. First, it is not necessarydillon1999-11-191-0/+2
| | | | | | | | | | | | | | | to use a locked cmpexg when unlocking a lock that we already hold, since nobody else can touch the lock while we hold it. Second, it is not necessary to use a locked cmpexg when locking a lock that we already hold, for the same reason. These changes will allow MP locks to be used recursively without impacting performance. Modify two procedures that are called only by assembly and are already NOPROF entries to pass a critical argument in %edx instead of on the stack, removing a significant amount of code from the critical path as a consequence. Reviewed by: Alfred Perlstein <bright@wintelcom.net>, Peter Wemm <peter@netplex.com.au>
* Add a per-signal flag to mark handlers registered with osigaction, so weluoqi1999-10-111-0/+1
| | | | | | | | | | | | | | | can provide the correct context to each signal handler. Fix broken sigsuspend(): don't use p_oldsigmask as a flag, use SAS_OLDMASK as we did before the linuxthreads support merge (submitted by bde). Move ps_sigstk from to p_sigacts to the main proc structure since signal stack should not be shared among threads. Move SAS_OLDMASK and SAS_ALTSTACK flags from sigacts::ps_flags to proc::p_flag. Move PS_NOCLDSTOP and PS_NOCLDWAIT flags from proc::p_flag to procsig::ps_flag. Reviewed by: marcel, jdp, bde
* Invoke smp_rendezvous_action() using the a.out compatible asnames.hmsmith1999-09-101-0/+1
| | | | technique (bleagh).
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Update for MI switch code, and trim a heap of unused (I believe) entries.peter1999-08-191-56/+3
|
* Major update to the kernel's BIOS-calling ability.msmith1999-07-291-1/+2
| | | | | | | | | - Add support for calling 32-bit code in other segments - Add support for calling 16-bit protected mode code Update APM to use this facility. Submitted by: jlemon
* Implement an all-CPU shootdown-style rendezvous facility. This allowsmsmith1999-07-201-1/+2
| | | | | | | | | | | the caller to specify a function to be guarded between an entry and exit barrier, as well as pre- and post-barrier functions. The primary use for this function is synchronised update of per-cpu private data. The implementation is almost (but not quite) MI; with a better mechanism for masking per-CPU interrupts it could probably be hoisted. Reviewed by: peter (partially)
* Go back to the old (icu.s rev.1.7 1993) way of keeping the AST-pendingbde1999-07-101-1/+2
| | | | | | | bit separate from ipending, since this is simpler and/or necessary for SMP and may even be better for UP. Reviewed by: alc, luoqi, tegge
* Unbreak VESA on SMP.luoqi1999-05-121-1/+2
|
* s/main/mi_startup/ for the kernel entry point so that egcs doesn't getpeter1999-05-091-2/+2
| | | | | | | | upset about it (and generate things like __main() calls that are reserved for main()). Renaming was phk's suggestion, but I'd already thought about it too. (phk liked my suggested name tada() but I decided against it :-) Reviewed by: phk
* Fixed profiling of elf kernels. Made high resolution profiling compilebde1999-05-061-1/+5
| | | | | | | | | | | | for elf kernels (it is broken for all kernels due to lack of egcs support). Renaming of many assembler labels is avoided by declaring by declaring the labels that need to be visible to gprof as having type "function" and depending on the elf version of gprof being zealous about discarding the others. A few type declarations are still missing, mainly for SMP. PR: 9413 Submitted by: Assar Westerlund <assar@sics.se> (initial parts)
* Enable vmspace sharing on SMP. Major changes are,luoqi1999-04-281-27/+38
| | | | | | | | | | | | | | | | | - %fs register is added to trapframe and saved/restored upon kernel entry/exit. - Per-cpu pages are no longer mapped at the same virtual address. - Each cpu now has a separate gdt selector table. A new segment selector is added to point to per-cpu pages, per-cpu global variables are now accessed through this new selector (%fs). The selectors in gdt table are rearranged for cache line optimization. - fask_vfork is now on as default for both UP and SMP. - Some aio code cleanup. Reviewed by: Alan Cox <alc@cs.rice.edu> John Dyson <dyson@iquest.net> Julian Elischer <julian@whistel.com> Bruce Evans <bde@zeta.org.au> David Greenman <dg@root.com>
* Bring the 'new-bus' to the i386. This extensively changes the way thepeter1999-04-161-2/+2
| | | | | | | | | | | | | | | | | | i386 platform boots, it is no longer ISA-centric, and is fully dynamic. Most old drivers compile and run without modification via 'compatability shims' to enable a smoother transition. eisa, isapnp and pccard* are not yet using the new resource manager. Once fully converted, all drivers will be loadable, including PCI and ISA. (Some other changes appear to have snuck in, including a port of Soren's ATA driver to the Alpha. Soren, back this out if you need to.) This is a checkpoint of work-in-progress, but is quite functional. The bulk of the work was done over the last few years by Doug Rabson and Garrett Wollman. Approved by: core
* Fixed my recent breakage of the ELF case.bde1999-02-251-1/+2
|
* Added a per-cpu variable `switchticks' for use in scheduling.bde1999-02-221-1/+2
|
* Added underscores to some names in svr4_locore.s so that it compilesbde1999-02-061-3/+6
| | | | | | | | | | | | | | with -aout. Added translation back to elf names in asnames.h as usual. The elf names were inconsistent in the aout case even internally because a macro adds an underscore to just one of them. Removed commented out code for a previous life of `svr4_esigcode'. Didn't add an underscore to `svr4_esigcode' since it is correct for aout although wrong for elf, like most internal names in assembler files. These names should be in a different namespace so that gprof can ignore them. Fixed some disorder in asnames.h.
* Moved pc98_system_parameter from .text to .data to make ELF kernelkato1999-01-301-1/+2
| | | | work.
* Two new C symbols were added to apm_setup.s but not put intojdp1998-10-031-1/+3
| | | | asnames.h. That broke builds of ELF kernels. *Whap*.
* Fix breakage of ELF kernel builds caused by the addition of anjdp1998-09-191-1/+2
| | | | | assembly language reference to a C symbol without the addition of the corresponding entry in asnames.h.
* Make ELF kernels build again.jdp1998-08-161-1/+2
|
* Implemented dynamic registration of software interrupt handlers. Notbde1998-08-111-1/+4
| | | | | | used yet. Use dummy SWI handlers to avoid some checks for null pointers.
* For SMP, use prv_PPAGE1/prv_PMAP1 instead of PADDR1/PMAP1.tegge1998-05-171-1/+3
| | | | | get_ptbase and pmap_pte_quick no longer generates IPIs. This should reduce the number of IPIs during heavy paging.
* s/nanoruntime/nanouptime/gphk1998-05-171-3/+3
| | | | | | s/microruntime/microuptime/g Reviewed by: bde
* Add a couple of missing symbols referred to in asm code.peter1998-04-221-1/+5
|
* some missing symbolspeter1998-04-061-2/+9
|
* Time changes mark 2:phk1998-04-041-2/+1
| | | | | | | | | | | | | | | | | * Figure out UTC relative to boottime. Four new functions provide time relative to boottime. * move "runtime" into struct proc. This helps fix the calcru() problem in SMP. * kill mono_time. * add timespec{add|sub|cmp} macros to time.h. (XXX: These may change!) * nanosleep, select & poll takes long sleeps one day at a time Reviewed by: bde Tested by: ache and others
* Fix recent breakage when compiling under elf.peter1998-03-041-1/+5
| | | | | | | _Xforward_irq -> Xforward_irq _apic_isrbit_location -> apic_isrbit_location _cpu_num_to_apic_id -> cpu_num_to_apic_id _invltlb_ok -> invltlb_ok
* re-sort back into orderpeter1998-01-261-8/+8
|
* Add missing definition for swi_vmpeter1998-01-261-1/+2
|
* wash, sort and put in order various nits from the i586_ctr -> tscphk1997-12-281-4/+4
| | | | | | commit. Pointed out by: bde
* Rename "i586_ctr" to "tsc" (both upper and lower case instances).phk1997-12-261-4/+4
| | | | | | Fix a couple of printfs too. Warning: This changes the names of a couple of kernel options!
* Add missing references to Xcpuast, get_isrlock and checkstate_probed_cpuspeter1997-12-181-1/+4
|
* The improvements to clock statistics by Tor Eggefsmp1997-12-081-1/+8
| | | | | | | Wrappered and enabled by the define BETTER_CLOCK (on by default in smpyests.h) Reviewed by: smp@csn.net Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no>
* oops, I seem to have forgotten to commit this. redirect _cam_imask topeter1997-09-291-1/+2
| | | | cam_imask when compiling under elf.
* Implement the parts needed for VM86 under SMP.peter1997-09-211-1/+2
|
* Patch up some more undefined symbols when compiling under ELF.peter1997-09-131-1/+7
|
* Add missing redirection for _inside_intr -> inside_intrpeter1997-09-081-1/+2
|
* Add redirection for new _clock_lock symbolpeter1997-09-051-1/+2
|
* Update to include recently added names that are shared between the C andpeter1997-08-301-1/+38
| | | | asm parts of the kernel. This is to re-enable ELF compile support.
* Preliminary support for per-cpu data pages.peter1997-06-221-7/+4
| | | | | | | | | | | | | | | | This eliminates a lot of #ifdef SMP type code. Things like _curproc reside in a data page that is unique on each cpu, eliminating the expensive macros like: #define curproc (SMPcurproc[cpunumber()]) There are some unresolved bootstrap and address space sharing issues at present, but Steve is waiting on this for other work. There is still some strictly temporary code present that isn't exactly pretty. This is part of a larger change that has run into some bumps, this part is standalone so it should be safe. The temporary code goes away when the full idle cpu support is finished. Reviewed by: fsmp, dyson
* Removed global hwisrs, replacing it with vec (formerly static to icu.s).fsmp1997-05-251-2/+2
|
* Add new C global names also referenced from assembly language.jdp1997-05-211-1/+59
| | | | These mostly came from the addition of SMP support.
* Make the necessary changes so that an ELF kernel can be built. Ijdp1997-04-221-0/+251
have successfully built, booted, and run a number of different ELF kernel configurations, including GENERIC. LINT also builds and links cleanly, though I have not tried to boot it. The impact on developers is virtually nil, except for two things. All linker sets that might possibly be present in the kernel must be listed in "sys/i386/i386/setdefs.h". And all C symbols that are also referenced from assembly language code must be listed in "sys/i386/include/asnames.h". It so happens that failure to do these things will have no impact on the a.out kernel. But it will break the build of the ELF kernel. The ELF bootloader works, but it is not ready to commit quite yet.
OpenPOWER on IntegriCloud