![Maxim Kuvyrkov](/assets/img/avatar_default.png)
The following patch defines sigcontext ABI of ColdFire. Due to ISA restrictions ColdFire needs different rt_sigreturn trampoline. And due to ColdFire FP registers being 8-bytes instead of 12-bytes on m68k, sigcontext and fpregset structures should be updated. Regarding the sc_fpstate[16+6*8] field, it would've been enough 16 bytes to store ColdFire's FP state. To accomodate GLIBC's libSegFault it would'be been enough 6*8 bytes (room for the 6 non-call-clobbered FP registers). I set it to 16+6*8 to provide some extra space for any future changes in the ColdFire FPU. Signed-off-by: Maxim Kuvyrkov <maxim@codesourcery.com> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
35 lines
586 B
C
35 lines
586 B
C
#ifndef _M68K_UCONTEXT_H
|
|
#define _M68K_UCONTEXT_H
|
|
|
|
typedef int greg_t;
|
|
#define NGREG 18
|
|
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 {
|
|
int version;
|
|
gregset_t gregs;
|
|
fpregset_t fpregs;
|
|
};
|
|
|
|
#define MCONTEXT_VERSION 2
|
|
|
|
struct ucontext {
|
|
unsigned long uc_flags;
|
|
struct ucontext *uc_link;
|
|
stack_t uc_stack;
|
|
struct mcontext uc_mcontext;
|
|
unsigned long uc_filler[80];
|
|
sigset_t uc_sigmask; /* mask last for extensibility */
|
|
};
|
|
|
|
#endif
|