Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 182214
b: refs/heads/master
c: 00ebfe5
h: refs/heads/master
v: v3
  • Loading branch information
Maxim Kuvyrkov authored and Geert Uytterhoeven committed Feb 27, 2010
1 parent 849f4e1 commit 0ecdcde
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a58f75349063f60949614de39390df594ba1418d
refs/heads/master: 00ebfe58b002f0ff387f60c7cd23bc2b274fce1a
6 changes: 6 additions & 0 deletions trunk/arch/m68k/include/asm/sigcontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,15 @@ struct sigcontext {
unsigned long sc_pc;
unsigned short sc_formatvec;
#ifndef __uClinux__
# ifdef __mcoldfire__
unsigned long sc_fpregs[2][2]; /* room for two fp registers */
unsigned long sc_fpcntl[3];
unsigned char sc_fpstate[16+6*8];
# else
unsigned long sc_fpregs[2*3]; /* room for two fp registers */
unsigned long sc_fpcntl[3];
unsigned char sc_fpstate[216];
# endif
#endif
};

Expand Down
4 changes: 4 additions & 0 deletions trunk/arch/m68k/include/asm/ucontext.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ typedef greg_t gregset_t[NGREG];

typedef struct fpregset {
int f_fpcntl[3];
#ifdef __mcoldfire__
int f_fpregs[8][2];
#else
int f_fpregs[8*3];
#endif
} fpregset_t;

struct mcontext {
Expand Down
7 changes: 7 additions & 0 deletions trunk/arch/m68k/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -897,10 +897,17 @@ static void setup_rt_frame (int sig, struct k_sigaction *ka, siginfo_t *info,

/* Set up to return from userspace. */
err |= __put_user(frame->retcode, &frame->pretcode);
#ifdef __mcoldfire__
/* movel #__NR_rt_sigreturn,d0; trap #0 */
err |= __put_user(0x203c0000, (long __user *)(frame->retcode + 0));
err |= __put_user(0x00004e40 + (__NR_rt_sigreturn << 16),
(long __user *)(frame->retcode + 4));
#else
/* moveq #,d0; notb d0; trap #0 */
err |= __put_user(0x70004600 + ((__NR_rt_sigreturn ^ 0xff) << 16),
(long __user *)(frame->retcode + 0));
err |= __put_user(0x4e40, (short __user *)(frame->retcode + 4));
#endif

if (err)
goto give_sigsegv;
Expand Down

0 comments on commit 0ecdcde

Please sign in to comment.