Find a file
Marcel Moolenaar 7f36189f8a o Put the syscall return registers in the context. Not only do we
need this for swapcontext(), KSE upcalls initiated from ast()
   also need to save them so that we properly return the syscall
   results after having had a context switch. Note that we don't
   use r11 in the kernel. However, the runtime specification has
   defined r8-r11 as return registers, so we put r11 in the context
   as well. I think deischen@ was trying to tell me that we should
   save the return registers before. I just wasn't ready for it :-)

o  The EPC syscall code has 2 return registers and 2 frame markers
   to save. The first (rp/pfs) belongs to the syscall stub itself.
   The second (iip/cfm) belongs to the caller of the syscall stub.
   We want to put the second in the context (note that iip and cfm
   relate to interrupts. They are only being misused by the syscall
   code, but are not part of a regular context).
   This way, when the context is switched to again, we return to
   the caller of setcontext(2) as one would expect.

o  Deal with dirty registers on the kernel stack. The getcontext()
   syscall will flush the RSE, so we don't expect any dirty registers
   in that case. However, in thread_userret() we also need to save
   the context in certain cases. When that happens, we are sure that
   there are dirty registers on the kernel stack.
   This implementation simply copies the registers, one at a time,
   from the kernel stack to the user stack. NAT collections are not
   dealt with. Hence we don't preserve NaT bits. A better solution
   needs to be found at some later time.
   We also don't deal with this in all cases in set_mcontext. No
   temporay solution is implemented because it's not a showstopper.
   The problem is that we need to ignore the dirty registers and we
   automaticly do that for at most 62 registers. When there are more
   than 62 dirty registers we have a memory "leak".

This commit is fundamental for KSE support.
2003-08-05 18:52:02 +00:00
bin Clarify that the 'state' information consists of characters, not 2003-08-05 10:31:28 +00:00
contrib - Correct the path to the dot.nsmbrc sample file. 2003-07-31 11:50:01 +00:00
crypto Very big makeover in the way telnet, telnetd and libtelnet are built. 2003-07-16 20:59:15 +00:00
etc Support for the Amharic locale. 2003-08-05 05:42:08 +00:00
games LANG->LC_ALL 2003-08-04 21:31:53 +00:00
gnu Added description for the libufs(3) library. 2003-08-05 10:29:50 +00:00
include Make C++ safe 2003-07-14 16:31:20 +00:00
kerberos5 Try a lot harder to get dependancies right. This involves some ugly 2003-07-27 16:49:10 +00:00
lib add support for using kqueue to watch bpf sockets. 2003-08-05 07:12:49 +00:00
libexec Make sure that a "make release" (more accurately the bit that makes 2003-07-24 17:19:15 +00:00
release Back out LC_ALL=C since tr here supposed to run under clean env -i 2003-08-05 05:35:56 +00:00
rescue When using crunchgen, blow away MAKEFLAGS. This fixes make -j <#> -P 2003-08-01 09:04:32 +00:00
sbin Don't reinvent the wheel: Use setmode(3) to interpret 2003-08-05 15:04:39 +00:00
secure Very big makeover in the way telnet, telnetd and libtelnet are built. 2003-07-16 20:59:15 +00:00
share Update screen(1)-related entries with more recent variants 2003-08-05 08:06:38 +00:00
sys o Put the syscall return registers in the context. Not only do we 2003-08-05 18:52:02 +00:00
tools gif -> png 2003-08-04 21:11:33 +00:00
usr.bin * Use sysctlbyname(3) to print statistics about the MFC and 2003-08-05 17:07:04 +00:00
usr.sbin introduced a flag bit "ND6_IFF_ACCEPT_RTADV" in the nd_ifinfo structure to 2003-08-05 14:57:11 +00:00
COPYRIGHT Update to add the July 22, 1999 addendum. 1999-09-05 21:33:47 +00:00
MAINTAINERS I'll maintain dhclient from now on. 2003-08-01 17:54:11 +00:00
Makefile The `mk' target is long dead. 2003-07-20 12:38:29 +00:00
Makefile.inc1 Don't lint(1) so early in the build. Its OK to keep this for the 2003-07-24 18:14:29 +00:00
README KerberosIV de-orbit burn continues. Disconnect from "make world". 2003-03-08 10:01:26 +00:00
UPDATING Note da(4) quirks being deprecated and the procedure for re-enabling them. 2003-07-29 04:40:33 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The
``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/user commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html