[xtensa-cvscommit] linux/arch/xtensa/kernel process.c,1.9,1.10 ptrace.c,1.8,1.9
Brought to you by:
zankel
|
From: <ma...@us...> - 2003-02-14 18:48:18
|
Update of /cvsroot/xtensa/linux/arch/xtensa/kernel In directory sc8-pr-cvs1:/tmp/cvs-serv29532 Modified Files: process.c ptrace.c Log Message: Make ptrace and gregset properly reflect user PS value, ie. with PS.EXCM zero. The fact that PS.EXCM is left set in pt_regs is for convenience and efficiency of exception handlers, and does not reflect the value of PS while a user task is running. Leaving it set in gregset prevents GDB from doing task tracebacks (which are not done when PS.EXCM is set). Index: process.c =================================================================== RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/process.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** process.c 11 Feb 2003 07:19:38 -0000 1.9 --- process.c 14 Feb 2003 18:48:10 -0000 1.10 *************** *** 259,264 **** elfregs->cpuy = i; elfregs->pc = regs->pc; ! elfregs->ps = regs->ps; elfregs->exccause = regs->exccause; elfregs->excvaddr = regs->excvaddr; --- 259,267 ---- elfregs->cpuy = i; + /* Note: PS.EXCM is not set while user task is running; its + * being set in regs->ps is for exception handling convenience. */ + elfregs->pc = regs->pc; ! elfregs->ps = (regs->ps & ~XCHAL_PS_EXCM_MASK); elfregs->exccause = regs->exccause; elfregs->excvaddr = regs->excvaddr; *************** *** 307,312 **** 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; --- 310,318 ---- int i, wb_offset; /* wb_offset must be signed */ + /* Note: PS.EXCM is not set while user task is running; it + * needs to be set in regs->ps is for exception handling convenience. */ + regs->pc = elfregs->pc; ! regs->ps = (elfregs->ps | XCHAL_PS_EXCM_MASK); regs->exccause = elfregs->exccause; regs->excvaddr = elfregs->excvaddr; Index: ptrace.c =================================================================== RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/ptrace.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ptrace.c 7 Feb 2003 02:03:35 -0000 1.8 --- ptrace.c 14 Feb 2003 18:48:10 -0000 1.9 *************** *** 197,201 **** break; case REG_PS: ! tmp = regs->ps; break; case REG_WB: --- 197,203 ---- break; case REG_PS: ! /* Note: PS.EXCM is not set while user task is running; ! * its being set in regs is for exception handling convenience. */ ! tmp = (regs->ps & ~XCHAL_PS_EXCM_MASK); break; case REG_WB: |