mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
Add sc_traparg_a0, sc_traparg_a1 and sc_traparg_a2 to the sigcontext
structure for the alpha. These give extra information about some signals (such as SIGSEGV) and should be compatible with Digital Unix. Submitted by: jdp
This commit is contained in:
parent
fa1303baf8
commit
eae8e50443
6 changed files with 65 additions and 40 deletions
|
|
@ -538,11 +538,11 @@ clear_single_step(db_regs_t* regs)
|
|||
* Entries not in integer register set are set to -1.
|
||||
*/
|
||||
static int tf2gdb[FRAME_SIZE] = {
|
||||
R_V0, R_T0, R_T1, R_T2, R_T3, R_T4, R_T5, R_T6,
|
||||
R_T7, R_S0, R_S1, R_S2, R_S3, R_S4, R_S5, R_S6,
|
||||
R_A3, R_A4, R_A5, R_T8, R_T9, R_T10, R_T11, R_RA,
|
||||
R_T12, R_AT, R_SP, -1, -1, R_GP, R_A0, R_A1,
|
||||
R_A2,
|
||||
/*0*/ R_V0, R_T0, R_T1, R_T2, R_T3, R_T4, R_T5, R_T6,
|
||||
/*8*/ R_T7, R_S0, R_S1, R_S2, R_S3, R_S4, R_S5, R_S6,
|
||||
/*16*/ R_A3, R_A4, R_A5, R_T8, R_T9, R_T10, R_T11, R_RA,
|
||||
/*24*/ R_T12, R_AT, R_SP, -1, -1, -1, -1, -1,
|
||||
/*32*/ R_GP, R_A0, R_A1, R_A2,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: interrupt.c,v 1.5 1998/08/10 07:53:58 dfr Exp $ */
|
||||
/* $Id: interrupt.c,v 1.6 1998/11/15 18:25:15 dfr Exp $ */
|
||||
/* $NetBSD: interrupt.c,v 1.23 1998/02/24 07:38:01 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
|
@ -74,6 +74,9 @@ interrupt(a0, a1, a2, framep)
|
|||
panic("possible stack overflow\n");
|
||||
}
|
||||
|
||||
framep->tf_regs[FRAME_TRAPARG_A0] = a0;
|
||||
framep->tf_regs[FRAME_TRAPARG_A1] = a1;
|
||||
framep->tf_regs[FRAME_TRAPARG_A2] = a2;
|
||||
switch (a0) {
|
||||
case ALPHA_INTR_XPROC: /* interprocessor interrupt */
|
||||
printf("interprocessor interrupt!\n");
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: machdep.c,v 1.21 1998/11/11 00:02:25 msmith Exp $
|
||||
* $Id: machdep.c,v 1.22 1998/11/15 18:25:15 dfr Exp $
|
||||
*/
|
||||
/*-
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
|
@ -1281,7 +1281,14 @@ sendsig(sig_t catcher, int sig, int mask, u_long code)
|
|||
sizeof(struct fpreg));
|
||||
ksc.sc_fp_control = 0; /* XXX ? */
|
||||
bzero(ksc.sc_reserved, sizeof ksc.sc_reserved); /* XXX */
|
||||
bzero(ksc.sc_xxx, sizeof ksc.sc_xxx); /* XXX */
|
||||
ksc.sc_xxx1[0] = 0; /* XXX */
|
||||
ksc.sc_xxx1[1] = 0; /* XXX */
|
||||
ksc.sc_traparg_a0 = frame->tf_regs[FRAME_TRAPARG_A0];
|
||||
ksc.sc_traparg_a1 = frame->tf_regs[FRAME_TRAPARG_A1];
|
||||
ksc.sc_traparg_a2 = frame->tf_regs[FRAME_TRAPARG_A2];
|
||||
ksc.sc_xxx2[0] = 0; /* XXX */
|
||||
ksc.sc_xxx2[1] = 0; /* XXX */
|
||||
ksc.sc_xxx2[2] = 0; /* XXX */
|
||||
|
||||
|
||||
#ifdef COMPAT_OSF1
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: trap.c,v 1.4 1998/07/05 12:24:17 dfr Exp $ */
|
||||
/* $Id: trap.c,v 1.5 1998/07/15 20:16:27 dfr Exp $ */
|
||||
/* $NetBSD: trap.c,v 1.31 1998/03/26 02:21:46 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
|
@ -493,6 +493,9 @@ trap(a0, a1, a2, entry, framep)
|
|||
#ifdef DEBUG
|
||||
printtrap(a0, a1, a2, entry, framep, 1, user);
|
||||
#endif
|
||||
framep->tf_regs[FRAME_TRAPARG_A0] = a0;
|
||||
framep->tf_regs[FRAME_TRAPARG_A1] = a1;
|
||||
framep->tf_regs[FRAME_TRAPARG_A2] = a2;
|
||||
trapsignal(p, i, ucode);
|
||||
out:
|
||||
if (user) {
|
||||
|
|
@ -539,10 +542,14 @@ syscall(code, framep)
|
|||
u_int64_t args[10]; /* XXX */
|
||||
u_int hidden = 0, nargs;
|
||||
|
||||
framep->tf_regs[FRAME_TRAPARG_A0] = 0;
|
||||
framep->tf_regs[FRAME_TRAPARG_A1] = 0;
|
||||
framep->tf_regs[FRAME_TRAPARG_A2] = 0;
|
||||
#if notdef /* can't happen, ever. */
|
||||
if ((framep->tf_regs[FRAME_PS] & ALPHA_PSL_USERMODE) == 0) {
|
||||
panic("syscall");
|
||||
#endif
|
||||
|
||||
cnt.v_syscall++;
|
||||
p = curproc;
|
||||
p->p_md.md_tf = framep;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id$ */
|
||||
/* $Id: frame.h,v 1.1 1998/01/10 10:13:14 jb Exp $ */
|
||||
/* From: NetBSD: frame.h,v 1.4 1997/04/06 08:47:27 cgd Exp */
|
||||
|
||||
/*
|
||||
|
|
@ -47,35 +47,39 @@
|
|||
*/
|
||||
|
||||
/* Quadword offsets of the registers to be saved. */
|
||||
#define FRAME_V0 0
|
||||
#define FRAME_T0 1
|
||||
#define FRAME_T1 2
|
||||
#define FRAME_T2 3
|
||||
#define FRAME_T3 4
|
||||
#define FRAME_T4 5
|
||||
#define FRAME_T5 6
|
||||
#define FRAME_T6 7
|
||||
#define FRAME_T7 8
|
||||
#define FRAME_S0 9
|
||||
#define FRAME_S1 10
|
||||
#define FRAME_S2 11
|
||||
#define FRAME_S3 12
|
||||
#define FRAME_S4 13
|
||||
#define FRAME_S5 14
|
||||
#define FRAME_S6 15
|
||||
#define FRAME_A3 16
|
||||
#define FRAME_A4 17
|
||||
#define FRAME_A5 18
|
||||
#define FRAME_T8 19
|
||||
#define FRAME_T9 20
|
||||
#define FRAME_T10 21
|
||||
#define FRAME_T11 22
|
||||
#define FRAME_RA 23
|
||||
#define FRAME_T12 24
|
||||
#define FRAME_AT 25
|
||||
#define FRAME_SP 26
|
||||
#define FRAME_V0 0
|
||||
#define FRAME_T0 1
|
||||
#define FRAME_T1 2
|
||||
#define FRAME_T2 3
|
||||
#define FRAME_T3 4
|
||||
#define FRAME_T4 5
|
||||
#define FRAME_T5 6
|
||||
#define FRAME_T6 7
|
||||
#define FRAME_T7 8
|
||||
#define FRAME_S0 9
|
||||
#define FRAME_S1 10
|
||||
#define FRAME_S2 11
|
||||
#define FRAME_S3 12
|
||||
#define FRAME_S4 13
|
||||
#define FRAME_S5 14
|
||||
#define FRAME_S6 15
|
||||
#define FRAME_A3 16
|
||||
#define FRAME_A4 17
|
||||
#define FRAME_A5 18
|
||||
#define FRAME_T8 19
|
||||
#define FRAME_T9 20
|
||||
#define FRAME_T10 21
|
||||
#define FRAME_T11 22
|
||||
#define FRAME_RA 23
|
||||
#define FRAME_T12 24
|
||||
#define FRAME_AT 25
|
||||
#define FRAME_SP 26
|
||||
/* The following are set only when a signal is to be delivered to a process. */
|
||||
#define FRAME_TRAPARG_A0 27
|
||||
#define FRAME_TRAPARG_A1 28
|
||||
#define FRAME_TRAPARG_A2 29
|
||||
|
||||
#define FRAME_SW_SIZE (FRAME_SP + 1)
|
||||
#define FRAME_SW_SIZE (FRAME_TRAPARG_A2 + 1)
|
||||
#define FRAME_HW_OFFSET FRAME_SW_SIZE
|
||||
|
||||
#define FRAME_PS (FRAME_HW_OFFSET + ALPHA_HWFRAME_PS)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id$ */
|
||||
/* $Id: signal.h,v 1.1 1998/01/10 10:13:16 jb Exp $ */
|
||||
/* From: NetBSD: signal.h,v 1.3 1997/04/06 08:47:43 cgd Exp */
|
||||
|
||||
/*
|
||||
|
|
@ -56,7 +56,11 @@ struct sigcontext {
|
|||
unsigned long sc_fpcr; /* FP control register (see above) */
|
||||
unsigned long sc_fp_control; /* FP software control word */
|
||||
long sc_reserved[2]; /* XXX */
|
||||
long sc_xxx[8]; /* XXX */
|
||||
long sc_xxx1[2]; /* sc_ssize, sc_sbase on DUX */
|
||||
unsigned long sc_traparg_a0; /* a0 argument to trap at exception */
|
||||
unsigned long sc_traparg_a1; /* a1 argument to trap at exception */
|
||||
unsigned long sc_traparg_a2; /* a2 argument to trap at exception */
|
||||
long sc_xxx2[3]; /* sc_fp_trap_pc, sc_fp_trigger_sum, sc_fp_trigger_inst */
|
||||
};
|
||||
|
||||
#endif /* !_ANSI_SOURCE */
|
||||
|
|
|
|||
Loading…
Reference in a new issue