Looking at siginfo it isn't clear that there is a "right way" to provide SIGSEGV, eva, and the error code.
_fault._trapno should contain the machine's error code and si_signo should contain SIGSEGV, and si_addr contains the faulting pc. Maybe one could abuse si_code to contain eva. Sorry for asking a question that has already been answered but where is eva being put currently? typedef struct __siginfo { int si_signo; /* signal number */ int si_errno; /* errno association */ /* * Cause of signal, one of the SI_ macros or signal-specific * values, i.e. one of the FPE_... values for SIGFPE. This * value is equivalent to the second argument to an old-style * FreeBSD signal handler. */ int si_code; /* signal code */ __pid_t si_pid; /* sending process */ __uid_t si_uid; /* sender's ruid */ int si_status; /* exit value */ void *si_addr; /* faulting instruction */ union sigval si_value; /* signal value */ union { struct { int _trapno;/* machine specific trap code */ } _fault; /* .... */ On 7/29/06, Tijl Coosemans <[EMAIL PROTECTED]> wrote:
I'm refering to the following two lines in sys/i386/i386/trap.c /* kludge to pass faulting virtual address to sendsig */ frame->tf_err = eva; Isn't there some other way to do this? Wouldn't the address still be available in %cr2 inside sendsig? Or could there have been other page faults by then? The reason I'm asking this is that Wine wants to know the error code in case of a page fault (the No eXec bit (AMD) and the read/write bit specifically).
_______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"