freebsd-dev/sys/alpha/include
John Baldwin 9e438eb4f5 Add a new field 'md_kernnest' to the alpha machine dependent process
structure.  This field keeps track of how many levels deep we are nested
into the kernel.  The nesting level is bumped at the start of a trap,
interrupt, syscall, or exception and is decremented on return.  This is
used to detect the case when the kernel is returning back to a kernel
context in exception_return().  If we are returning to the kernel we need
to update the globaldata pointer register saved in the stack frame in case
we have switched CPU's between taking the initial interrupt that saved the
frame and returning.  If we don't do this fixup it is possible for a CPU to
use the wrong per-cpu data.  On UP systems this is not a problem, so the
code is conditional on SMP.

A count was used instead of simply checking the process status register in
the frame during exception_return() since there are critical sections at
the very start and end of a trap, exception, or interrupt from userland in
which we could trash the t7 register being used in userland.  The counter
is incremented after adn before these critical sections respectively so
that we will not overwrite the saved t7 register if we are interrupted
during one of these critical sections.
2001-04-24 21:06:53 +00:00
..
pc Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
_limits.h Move all VCS ids to a consistent location. 2000-12-28 18:21:32 +00:00
alpha_cpu.h Block out all interrupts, even machine checks, for critical_enter() 2001-04-21 21:44:39 +00:00
ansi.h Correct disordering which is corresponding to bde's fix to 2001-02-17 14:51:11 +00:00
asm.h Fix problems booting large kernels on alphas. The symptom is that the kernel 2000-10-16 20:15:43 +00:00
atomic.h - Fix memory barriers in atomic operations so that the barriers are always 2001-04-17 02:50:05 +00:00
bootinfo.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus_memio.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus_pio.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
bus.h The alpha architecture is 64 bits, so bus_addr_t && bus_size_t should really 2001-01-09 18:17:48 +00:00
bwx.h * Completely rewrite the alpha busspace to hide the implementation from 2000-08-28 21:48:13 +00:00
chipset.h * Completely rewrite the alpha busspace to hide the implementation from 2000-08-28 21:48:13 +00:00
clock.h Move DELAY() from <machine/clock.h> to <sys/systm.h> 2000-10-15 09:51:49 +00:00
clockvar.h Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
cpu.h Rename switch_trampoline() to fork_trampoline() on the alpha and ia64. 2001-02-22 16:56:53 +00:00
cpuconf.h Next phase in the PCI subsystem cleanup. 2000-12-08 22:11:23 +00:00
cpufunc.h Block out all interrupts, even machine checks, for critical_enter() 2001-04-21 21:44:39 +00:00
db_machdep.h Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
elf.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
endian.h Unbreak build on alpha. 2001-03-24 15:17:27 +00:00
exec.h Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
float.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
floatingpoint.h Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
fpu.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
frame.h * Move exception_return to exception.s which is a more logical home for it. 2001-02-02 10:20:30 +00:00
globaldata.h Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
globals.h - Remove compatibility macros for accessing per-cpu variables. 2001-01-11 14:46:26 +00:00
ieee.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ieeefp.h Finish moving all IEEE fp types to be the same on all arch's. 2000-05-10 19:41:40 +00:00
in_cksum.h Make in_cksum() a macro call to in_cksum_skip(), since it provides the 2000-05-06 18:18:32 +00:00
inst.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
intr.h Use the MI ithread helper functions in the alpha hardware interrupt code. 2001-02-09 17:53:23 +00:00
intrcnt.h Export intrnames and intrcnt as sysctls (hw.nintr, hw.intrnames and 2001-03-23 03:45:17 +00:00
ioctl_bt848.h Merge from i386: Add MSP ioctl 2000-10-27 07:07:24 +00:00
ioctl_fd.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
ioctl_meteor.h Add include files to alpha/include directory. 2000-04-15 08:07:56 +00:00
ipl.h Rename the IPI API from smp_ipi_* to ipi_* since the smp_ prefix is just 2001-04-11 17:06:02 +00:00
limits.h Move all VCS ids to a consistent location. 2000-12-28 18:21:32 +00:00
md_var.h Next phase in the PCI subsystem cleanup. 2000-12-08 22:11:23 +00:00
mutex.h Convert the protection of hte i8254 from critical_enter/exit like it is 2001-04-18 21:47:48 +00:00
pal.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
param.h Fix CMSG and ALIGN macro usage. 2000-11-08 16:59:25 +00:00
pcb.h - Add appropriate #ifndef/#define/#endif to protect against multiple 2001-04-17 02:51:28 +00:00
pcpu.h Rework the witness code to work with sx locks as well as mutexes. 2001-03-28 09:03:24 +00:00
pmap.h Move MAXCPU from machine/smp.h to machine/param.h to fix breakage 2000-09-23 12:18:06 +00:00
proc.h Add a new field 'md_kernnest' to the alpha machine dependent process 2001-04-24 21:06:53 +00:00
profile.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
prom.h Alpha 8200: Add prototype from promcnattach. 2000-03-18 08:00:51 +00:00
psl.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
pte.h Zap some latent problems hidden by differences between KERNEL and _KERNEL. 1999-11-22 15:14:56 +00:00
ptrace.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
reg.h Remove offensive language. 2000-06-25 09:30:53 +00:00
reloc.h Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
resource.h * Implement bus_set/get/delete_resource for pci. 1999-10-14 21:38:33 +00:00
rpb.h Recognize a few newer cpus (pca57, ev67 & ev68) and update systypes to 2001-03-30 22:04:08 +00:00
setjmp.h Work around a bug by adding struct tags. gcc-2.95 apparently gets the 2000-10-06 11:53:32 +00:00
sgmap.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
sigframe.h sigset_t change (part 3 of 5) 1999-09-29 15:06:27 +00:00
signal.h Make MINSIGSTKSZ machine dependent, and have the sigaltstack 2000-11-09 08:25:48 +00:00
smp.h Catch up to moving headers: 2000-10-20 07:58:15 +00:00
stdarg.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
swiz.h * Completely rewrite the alpha busspace to hide the implementation from 2000-08-28 21:48:13 +00:00
sysarch.h The kernel side of per-process unaligned access control (printing, fixing & 2000-01-16 07:07:33 +00:00
types.h - Add the new critical_t type used to save state inside of critical 2001-03-28 02:31:54 +00:00
ucontext.h Don't include <machine/frame.h>. 1999-10-08 09:09:13 +00:00
varargs.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
vmparam.h Make sysv-style shared memory tuneable params fully runtime adjustable 2000-03-30 07:17:05 +00:00