[xtensa-cvscommit] linux/arch/xtensa/kernel signal.c,1.5,1.6
Brought to you by:
zankel
|
From: <joe...@us...> - 2003-04-23 00:36:30
|
Update of /cvsroot/xtensa/linux/arch/xtensa/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv28811/arch/xtensa/kernel
Modified Files:
signal.c
Log Message:
Rework the sigframe structures so they properly account for the base save area of the user's stack.
Index: signal.c
===================================================================
RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/signal.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** signal.c 22 Apr 2003 21:36:13 -0000 1.5
--- signal.c 23 Apr 2003 00:36:27 -0000 1.6
***************
*** 31,40 ****
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
- /*
- * Number of bytes reserved below the stack pointer
- * (16 bytes for caller's a0-a3 save area, 16 bytes for misc
- * uses such as nested C function call chain pointer: */
- #define XTENSA_RESERVED_BELOW_SP 32
-
asmlinkage long sys_wait4(pid_t pid,unsigned int * stat_addr, int options, struct rusage * ru);
asmlinkage int do_signal(struct pt_regs *regs, sigset_t *oldset);
--- 31,34 ----
***************
*** 176,193 ****
struct sigframe
{
- unsigned int window[4]; /* Window of 4 registers for initial context */
- unsigned int reserved[4]; /* Reserved area for chaining */
struct sigcontext sc;
unsigned long extramask[_NSIG_WORDS-1];
unsigned char retcode[6];
};
struct rt_sigframe
{
- unsigned int window[4]; /* Window of 4 registers for initial context */
- unsigned int reserved[4]; /* Reserved area for chaining */
struct siginfo info;
struct ucontext uc;
unsigned char retcode[6];
};
--- 170,187 ----
struct sigframe
{
struct sigcontext sc;
unsigned long extramask[_NSIG_WORDS-1];
unsigned char retcode[6];
+ unsigned int window[4]; /* Window of 4 registers for initial context */
+ unsigned int reserved[4]; /* Reserved area for chaining */
};
struct rt_sigframe
{
struct siginfo info;
struct ucontext uc;
unsigned char retcode[6];
+ unsigned int window[4]; /* Window of 4 registers for initial context */
+ unsigned int reserved[4]; /* Reserved area for chaining */
};
***************
*** 408,413 ****
if ((ka->sa.sa_flags & SA_ONSTACK) != 0 && ! on_sig_stack(sp))
sp = current->sas_ss_sp + current->sas_ss_size;
- else
- sp -= XTENSA_RESERVED_BELOW_SP;
return (void *)((sp - frame_size) & -16ul);
--- 402,405 ----
|