Subject: CVS commit: syssrc
To: None <source-changes@netbsd.org>
From: Bill Sommerfeld <sommerfeld@netbsd.org>
List: source-changes
Date: 06/18/2001 00:01:39
Module Name:	syssrc
Committed By:	sommerfeld
Date:		Sun Jun 17 21:01:39 UTC 2001

Modified Files:
	syssrc/sys/arch/i386/i386: compat_13_machdep.c db_interface.c
	    db_trace.c genassym.cf ibcs2_machdep.c ibcs2_sigcode.s ipkdb_glue.c
	    kgdb_machdep.c linux_sigcode.s locore.s machdep.c process_machdep.c
	    svr4_machdep.c svr4_sigcode.s sys_machdep.c trap.c
	syssrc/sys/arch/i386/include: db_machdep.h frame.h pcb.h
	syssrc/sys/compat/linux/arch/i386: linux_machdep.c

Log Message:
Add %fs/%gs to trap frame and save/restore them on
trap/interrupt/syscall entry from userspace.

Remove special-case "by hand" validation of fs/gs register values as
well as special handling of them in various signal handling paths.

Now, like %ds and %es, they are validated by the hardware on return to
userland.

This paves the way for the use of %fs for per-cpu data on
multiprocessor systems, and fixes an otherwise difficult-to-fix
interaction between threads/clone(2) and USER_LDT.

Discussed in advance with Frank van der Linden.


To generate a diff of this commit:
cvs rdiff -r1.5 -r1.6 syssrc/sys/arch/i386/i386/compat_13_machdep.c
cvs rdiff -r1.30 -r1.31 syssrc/sys/arch/i386/i386/db_interface.c
cvs rdiff -r1.29 -r1.30 syssrc/sys/arch/i386/i386/db_trace.c
cvs rdiff -r1.27 -r1.28 syssrc/sys/arch/i386/i386/genassym.cf
cvs rdiff -r1.14 -r1.15 syssrc/sys/arch/i386/i386/ibcs2_machdep.c
cvs rdiff -r1.3 -r1.4 syssrc/sys/arch/i386/i386/ibcs2_sigcode.s \
    syssrc/sys/arch/i386/i386/linux_sigcode.s \
    syssrc/sys/arch/i386/i386/svr4_sigcode.s
cvs rdiff -r1.1 -r1.2 syssrc/sys/arch/i386/i386/ipkdb_glue.c
cvs rdiff -r1.10 -r1.11 syssrc/sys/arch/i386/i386/kgdb_machdep.c
cvs rdiff -r1.241 -r1.242 syssrc/sys/arch/i386/i386/locore.s
cvs rdiff -r1.444 -r1.445 syssrc/sys/arch/i386/i386/machdep.c
cvs rdiff -r1.32 -r1.33 syssrc/sys/arch/i386/i386/process_machdep.c
cvs rdiff -r1.52 -r1.53 syssrc/sys/arch/i386/i386/svr4_machdep.c
cvs rdiff -r1.58 -r1.59 syssrc/sys/arch/i386/i386/sys_machdep.c
cvs rdiff -r1.159 -r1.160 syssrc/sys/arch/i386/i386/trap.c
cvs rdiff -r1.16 -r1.17 syssrc/sys/arch/i386/include/db_machdep.h
cvs rdiff -r1.15 -r1.16 syssrc/sys/arch/i386/include/frame.h
cvs rdiff -r1.27 -r1.28 syssrc/sys/arch/i386/include/pcb.h
cvs rdiff -r1.64 -r1.65 syssrc/sys/compat/linux/arch/i386/linux_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.