mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 18:09:57 +00:00
sparc: Add __KERNEL__ ifdef protection to pt_regs helpers.
Some of them use 'bool' and whatnot and therefore are not kosher for userspace, so don't export them there. Reported by Roland McGrath. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9c636e30a3
commit
6717c282e4
2 changed files with 25 additions and 26 deletions
|
@ -40,16 +40,6 @@ struct pt_regs {
|
||||||
#define UREG_FP UREG_I6
|
#define UREG_FP UREG_I6
|
||||||
#define UREG_RETPC UREG_I7
|
#define UREG_RETPC UREG_I7
|
||||||
|
|
||||||
static inline bool pt_regs_is_syscall(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return (regs->psr & PSR_SYSCALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return (regs->psr &= ~PSR_SYSCALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* A register window */
|
/* A register window */
|
||||||
struct reg_window {
|
struct reg_window {
|
||||||
unsigned long locals[8];
|
unsigned long locals[8];
|
||||||
|
@ -72,6 +62,16 @@ struct sparc_stackf {
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
static inline bool pt_regs_is_syscall(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
return (regs->psr & PSR_SYSCALL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
return (regs->psr &= ~PSR_SYSCALL);
|
||||||
|
}
|
||||||
|
|
||||||
#define user_mode(regs) (!((regs)->psr & PSR_PS))
|
#define user_mode(regs) (!((regs)->psr & PSR_PS))
|
||||||
#define instruction_pointer(regs) ((regs)->pc)
|
#define instruction_pointer(regs) ((regs)->pc)
|
||||||
#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
|
#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
|
||||||
|
|
|
@ -37,21 +37,6 @@ struct pt_regs {
|
||||||
unsigned int magic;
|
unsigned int magic;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int pt_regs_trap_type(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return regs->magic & 0x1ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool pt_regs_is_syscall(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return (regs->tstate & TSTATE_SYSCALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return (regs->tstate &= ~TSTATE_SYSCALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct pt_regs32 {
|
struct pt_regs32 {
|
||||||
unsigned int psr;
|
unsigned int psr;
|
||||||
unsigned int pc;
|
unsigned int pc;
|
||||||
|
@ -128,6 +113,21 @@ struct sparc_trapf {
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
static inline int pt_regs_trap_type(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
return regs->magic & 0x1ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool pt_regs_is_syscall(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
return (regs->tstate & TSTATE_SYSCALL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
return (regs->tstate &= ~TSTATE_SYSCALL);
|
||||||
|
}
|
||||||
|
|
||||||
struct global_reg_snapshot {
|
struct global_reg_snapshot {
|
||||||
unsigned long tstate;
|
unsigned long tstate;
|
||||||
unsigned long tpc;
|
unsigned long tpc;
|
||||||
|
@ -154,7 +154,6 @@ extern unsigned long profile_pc(struct pt_regs *);
|
||||||
#define profile_pc(regs) instruction_pointer(regs)
|
#define profile_pc(regs) instruction_pointer(regs)
|
||||||
#endif
|
#endif
|
||||||
extern void show_regs(struct pt_regs *);
|
extern void show_regs(struct pt_regs *);
|
||||||
extern void __show_regs(struct pt_regs *);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else /* __ASSEMBLY__ */
|
#else /* __ASSEMBLY__ */
|
||||||
|
|
Loading…
Reference in a new issue