[xtensa-cvscommit] linux/arch/xtensa/kernel process.c,1.6,1.7
Brought to you by:
zankel
|
From: <za...@us...> - 2003-01-31 04:37:22
|
Update of /cvsroot/xtensa/linux/arch/xtensa/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv24901a/linux/arch/xtensa/kernel
Modified Files:
process.c
Log Message:
Added syscall_nr to xtensa_gregset_t (and, thus, elf_gregset_t).
Added access to syscall_nr via ptrace (PTRACE_GETREGS/PTRACE_SETREGS).
Fixed arch/xtensa/Makefile:
When LIBGCC is defined, the host compiler is used instead of the
cross compiler.
Index: process.c
===================================================================
RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/process.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** process.c 29 Jan 2003 06:17:59 -0000 1.6
--- process.c 31 Jan 2003 04:37:19 -0000 1.7
***************
*** 360,363 ****
--- 360,364 ----
elfregs->lcount = regs->lcount;
elfregs->sar = regs->sar;
+ elfregs->syscall_nr = regs->syscall_nr;
/* Clear everything. We don't have values for all of them, so
***************
*** 373,385 ****
/* Copy regs from non-live registers.
regs->wmask indicates the number of window panes saved. */
! wb_offset = regs->wb;
! for (i = 0; i < regs->wmask; i++) {
/* using wb_offset as window-pane number */
if (--wb_offset < 0)
wb_offset = XCHAL_NUM_AREGS / 4;
! elfregs->ar[wb_offset*4 + 0] = tsk->thread.regfile[i + 0];
! elfregs->ar[wb_offset*4 + 1] = tsk->thread.regfile[i + 1];
! elfregs->ar[wb_offset*4 + 2] = tsk->thread.regfile[i + 2];
! elfregs->ar[wb_offset*4 + 3] = tsk->thread.regfile[i + 3];
}
}
--- 374,386 ----
/* Copy regs from non-live registers.
regs->wmask indicates the number of window panes saved. */
!
! for (i = 0; i < regs->wmask * 4; i+=4) {
/* using wb_offset as window-pane number */
if (--wb_offset < 0)
wb_offset = XCHAL_NUM_AREGS / 4;
! elfregs->ar[wb_offset + 0] = tsk->thread.regfile[i*4 + 0];
! elfregs->ar[wb_offset + 1] = tsk->thread.regfile[i*4 + 1];
! elfregs->ar[wb_offset + 2] = tsk->thread.regfile[i*4 + 2];
! elfregs->ar[wb_offset + 3] = tsk->thread.regfile[i*4 + 3];
}
}
***************
*** 397,410 ****
int i, wb_offset; /* wb_offset must be signed */
! regs->pc = elfregs->pc;
! regs->ps = elfregs->ps;
! regs->exccause = elfregs->exccause;
! regs->excvaddr = elfregs->excvaddr;
! regs->wb = elfregs->wb;
! regs->ws = elfregs->ws;
! regs->lbeg = elfregs->lbeg;
! regs->lend = elfregs->lend;
! regs->lcount = elfregs->lcount;
! regs->sar = elfregs->sar;
/* Clear everything. We don't have values for all of them, so
--- 398,412 ----
int i, wb_offset; /* wb_offset must be signed */
! regs->pc = elfregs->pc;
! regs->ps = elfregs->ps;
! regs->exccause = elfregs->exccause;
! regs->excvaddr = elfregs->excvaddr;
! regs->wb = elfregs->wb;
! regs->ws = elfregs->ws;
! regs->lbeg = elfregs->lbeg;
! regs->lend = elfregs->lend;
! regs->lcount = elfregs->lcount;
! regs->sar = elfregs->sar;
! regs->syscall_nr = elfregs->syscall_nr;
/* Clear everything. We don't have values for all of them, so
***************
*** 420,432 ****
/* Copy regs from non-live registers.
regs->wmask indicates the number of window panes saved. */
! wb_offset = elfregs->wb;
! for (i = 0; i < regs->wmask; i++) {
/* using wb_offset as window-pane number */
if (--wb_offset < 0)
wb_offset = XCHAL_NUM_AREGS / 4;
! tsk->thread.regfile[i + 0] = elfregs->ar[wb_offset*4 + 0];
! tsk->thread.regfile[i + 1] = elfregs->ar[wb_offset*4 + 1];
! tsk->thread.regfile[i + 2] = elfregs->ar[wb_offset*4 + 2];
! tsk->thread.regfile[i + 3] = elfregs->ar[wb_offset*4 + 3];
}
}
--- 422,433 ----
/* Copy regs from non-live registers.
regs->wmask indicates the number of window panes saved. */
! for (i = 0; i < regs->wmask * 4; i+=4) {
/* using wb_offset as window-pane number */
if (--wb_offset < 0)
wb_offset = XCHAL_NUM_AREGS / 4;
! tsk->thread.regfile[i*4 + 0] = elfregs->ar[wb_offset + 0];
! tsk->thread.regfile[i*4 + 1] = elfregs->ar[wb_offset + 1];
! tsk->thread.regfile[i*4 + 2] = elfregs->ar[wb_offset + 2];
! tsk->thread.regfile[i*4 + 3] = elfregs->ar[wb_offset + 3];
}
}
|