cvs commit: src/sys/i386/i386 trap.c

Don Lewis truckman at FreeBSD.org
Fri Jul 27 11:16:59 UTC 2007


On 13 Jun, John Baldwin wrote:
> jhb         2007-06-13 22:37:48 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/i386/i386        trap.c 
>   Log:
>   Don't clobber tf_err with the eva from a page fault as the page fault
>   address is saved in ksi_addr already.
>   
>   PR:             i386/101379
>   Submitted by:   Tijl Coosemans : tijl ulyssis org
>   
>   Revision  Changes    Path
>   1.306     +0 -3      src/sys/i386/i386/trap.c

This change appears to have broken the garbage collector in
ports/lang/pm3-base, which means that cvsup no longer works on -CURRENT.
The garbage collector uses the old sigvec() interface, and counts on
getting the fault address from the sc_err field in struct sigcontext,
which is copied from tf_err.

The Modula-3 source code for the handler and the sigvec() call is in
pm3-1.1.15/libs/m3core/src/runtime/FreeBSD4/RTHeapDep.m3 under the port
work directory. Since Modula-3 compiler uses this code, the compiler is
bootstrapped from a version of this file that has already been
translated to i386 assembly language. The latter lives in
pm3-1.1.15/boot-FreeBSD4/m3core/FreeBSD4/RTHeapDep.ms.

Modifying the assembly code to convert it to use sigaction() and to pull
the fault address out of the siginfo structure is left as an exercise
for someone more masochistic than me.



More information about the cvs-src mailing list