freebsd-dev/sys/mips/include
Neel Natu 49396cced3 Fix a problem seen when a new process was returning to userland
through fork_trampoline.

This was caused because we were clearing the SR_INT_IE and setting
SR_EXL bits of the status register at the same time. This meant
that if an interrupt happened while this MTC0 was making its way
through the pipeline the exception processing would see the
status register with SR_EXL bit set. This in turn would mean that
the COP_0_EXC_PC would not be updated so the return from exception
would be to an incorrect address.

It is easy to verify this fix by a program that forks in a loop
and the child just exits:

	while (1) {
	pid_t pid = vfork();
	if (pid == 0)
	       _exit(0);
	if (pid != -1)
	       waitpid(pid, NULL, 0);
	}

Also remove two instances where we set SR_EXL bit gratuitously in exception.S.

Approved by: imp (mentor)
2010-01-26 02:26:04 +00:00
..
_align.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
_bus_octeon.h
_bus.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
_inttypes.h
_limits.h
_stdint.h
_types.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
archtype.h
asm.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
asmacros.h
atomic.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
bootinfo.h
bswap.h
bus_dma.h
bus.h Fix mis-merge from projects/mips... the diff didn't apply correctly 2010-01-10 20:22:05 +00:00
cache_mipsNN.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
cache_r4k.h
cache.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
cdefs.h
clock.h
clockvar.h
cpu.h Remove Sibyte specific code from locore.S that sets the k0seg coherency. 2010-01-23 03:19:13 +00:00
cpufunc.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
cpuinfo.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
cpuregs.h Fix a problem seen when a new process was returning to userland 2010-01-26 02:26:04 +00:00
cputypes.h
db_machdep.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
defs.h
elf.h - Copy symbol-related tables (.symtab and .strtab) to the end of 2010-01-24 02:59:22 +00:00
endian.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
exec.h
float.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
floatingpoint.h
fls64.h With this commit our friend RMI will now compile. I have 2009-10-30 08:53:11 +00:00
fpu.h
frame.h
gdb_machdep.h
hwfunc.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
ieee.h
ieeefp.h
in_cksum.h
intr_machdep.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
iodev.h
kdb.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
limits.h
locore.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
md_var.h - Introduce kernel_kseg0_end variable that marks first address in KSEG0 2010-01-24 03:10:48 +00:00
memdev.h
metadata.h
minidump.h
mips_opcode.h
mp_watchdog.h
mutex.h
param.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
pcb.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
pci_cfgreg.h
pcpu.h
pmap.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
pmc_mdep.h
ppireg.h
proc.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
profile.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
psl.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
pte.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
ptrace.h
queue.h
reg.h
regdef.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
regnum.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
reloc.h
resource.h
rm7000.h
runq.h
segments.h
setjmp.h
sf_buf.h
sigframe.h
signal.h
smp.h
stdarg.h
sysarch.h Merge r195128 from project/mips to head. 2010-01-09 04:59:57 +00:00
timerreg.h
trap.h Get rid of unused function MipsTLBInvalidException(). 2010-01-20 14:21:28 +00:00
ucontext.h Merge from projects/mips to head by hand: 2010-01-10 19:50:24 +00:00
varargs.h
vm.h
vmparam.h