forked from Minki/linux
74fca9da09
Rather than just using pt_regs, it now contains the actual saved state explicitly, similar to pt_regs. By doing it this way, we provide a cleaner API for userspace (or equivalently, we avoid the need for libc to provide its own definition of sigcontext). While we're at it, move PT_FLAGS_xxx to where they are not visible from userspace. And always pass siginfo and mcontext to signal handlers, even if they claim they don't need it, since sometimes they actually try to use it anyway in practice. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
36 lines
1.2 KiB
C
36 lines
1.2 KiB
C
/*
|
|
* Copyright 2010 Tilera Corporation. All Rights Reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation, version 2.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
|
* NON INFRINGEMENT. See the GNU General Public License for
|
|
* more details.
|
|
*/
|
|
|
|
#ifndef _ASM_TILE_SIGCONTEXT_H
|
|
#define _ASM_TILE_SIGCONTEXT_H
|
|
|
|
#include <arch/abi.h>
|
|
|
|
/*
|
|
* struct sigcontext has the same shape as struct pt_regs,
|
|
* but is simplified since we know the fault is from userspace.
|
|
*/
|
|
struct sigcontext {
|
|
uint_reg_t gregs[53]; /* General-purpose registers. */
|
|
uint_reg_t tp; /* Aliases gregs[TREG_TP]. */
|
|
uint_reg_t sp; /* Aliases gregs[TREG_SP]. */
|
|
uint_reg_t lr; /* Aliases gregs[TREG_LR]. */
|
|
uint_reg_t pc; /* Program counter. */
|
|
uint_reg_t ics; /* In Interrupt Critical Section? */
|
|
uint_reg_t faultnum; /* Fault number. */
|
|
uint_reg_t pad[5];
|
|
};
|
|
|
|
#endif /* _ASM_TILE_SIGCONTEXT_H */
|