From: Greg Ungerer <gerg@snapgear.com>
To: Adrian Bunk <bunk@kernel.org>
Cc: Roland McGrath <roland@redhat.com>,
linux-kernel@vger.kernel.org, rmk@arm.linux.org.uk,
cooloney@kernel.org, dev-etrax@axis.com, dhowells@redhat.com,
gerg@uclinux.org, yasutake.koichi@jp.panasonic.com,
linux-parisc@vger.kernel.org, paulus@samba.org,
linuxppc-dev@ozlabs.org, linux-sh@vger.kernel.org,
chris@zankel.net, linux-mips@linux-mips.org,
ysato@users.sourceforge.jp,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [2.6 patch] asm/ptrace.h userspace headers cleanup
Date: Tue, 24 Jun 2008 10:15:52 +1000 [thread overview]
Message-ID: <48603CB8.1020903@snapgear.com> (raw)
In-Reply-To: <20080623174809.GE4756@cs181140183.pp.htv.fi>
Hi Adrian,
Adrian Bunk wrote:
> This patch contains the following cleanups for the asm/ptrace.h
> userspace headers:
> - include/asm-generic/Kbuild.asm already lists ptrace.h, remove
> the superfluous listings in the Kbuild files of the following
> architectures:
> - cris
> - frv
> - powerpc
> - x86
> - don't expose function prototypes and macros to userspace:
> - arm
> - blackfin
> - cris
> - mn10300
> - parisc
> - remove #ifdef CONFIG_'s around #define's:
> - blackfin
> - m68knommu
> - sh: AFAIK __SH5__ should work in both kernel and userspace,
> no need to leak CONFIG_SUPERH64 to userspace
> - xtensa: cosmetical change to remove empty
> #ifndef __ASSEMBLY__ #else #endif
> from the userspace headers
>
> Signed-off-by: Adrian Bunk <bunk@kernel.org>
The m68knommu looks ok.
Acked-by: Greg Ungerer <gerg@uclinux.org>
> ---
>
> Not changed by this patch is the fact that the following architectures
> have a different struct pt_regs depending on CONFIG_ variables:
> - h8300
> - m68knommu
> - mips
>
> This does not work in userspace.
Let me do something about that for m68knommu.
Regards
Greg
> include/asm-arm/ptrace.h | 6 ++----
> include/asm-blackfin/ptrace.h | 6 ++++--
> include/asm-cris/arch-v10/Kbuild | 1 -
> include/asm-cris/arch-v10/ptrace.h | 4 ++++
> include/asm-cris/arch-v32/Kbuild | 1 -
> include/asm-cris/arch-v32/ptrace.h | 4 ++++
> include/asm-cris/ptrace.h | 4 +++-
> include/asm-frv/Kbuild | 1 -
> include/asm-m68knommu/ptrace.h | 2 --
> include/asm-mn10300/ptrace.h | 8 ++++++--
> include/asm-parisc/ptrace.h | 4 +++-
> include/asm-powerpc/Kbuild | 1 -
> include/asm-sh/ptrace.h | 2 +-
> include/asm-x86/Kbuild | 1 -
> include/asm-xtensa/ptrace.h | 10 +++++-----
> 15 files changed, 32 insertions(+), 23 deletions(-)
>
> fc14755b77cff7af5ff00e938a4c493a669e25cd diff --git a/include/asm-arm/ptrace.h b/include/asm-arm/ptrace.h
> index 7aaa206..8382b75 100644
> --- a/include/asm-arm/ptrace.h
> +++ b/include/asm-arm/ptrace.h
> @@ -139,8 +139,6 @@ static inline int valid_user_regs(struct pt_regs *regs)
> return 0;
> }
>
> -#endif /* __KERNEL__ */
> -
> #define pc_pointer(v) \
> ((v) & ~PCMASK)
>
> @@ -153,10 +151,10 @@ extern unsigned long profile_pc(struct pt_regs *regs);
> #define profile_pc(regs) instruction_pointer(regs)
> #endif
>
> -#ifdef __KERNEL__
> #define predicate(x) ((x) & 0xf0000000)
> #define PREDICATE_ALWAYS 0xe0000000
> -#endif
> +
> +#endif /* __KERNEL__ */
>
> #endif /* __ASSEMBLY__ */
>
> diff --git a/include/asm-blackfin/ptrace.h b/include/asm-blackfin/ptrace.h
> index b8346cd..a45a80e 100644
> --- a/include/asm-blackfin/ptrace.h
> +++ b/include/asm-blackfin/ptrace.h
> @@ -83,14 +83,14 @@ struct pt_regs {
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13 /* ptrace signal */
>
> -#ifdef CONFIG_BINFMT_ELF_FDPIC
> #define PTRACE_GETFDPIC 31
> #define PTRACE_GETFDPIC_EXEC 0
> #define PTRACE_GETFDPIC_INTERP 1
> -#endif
>
> #define PS_S (0x0002)
>
> +#ifdef __KERNEL__
> +
> /* user_mode returns true if only one bit is set in IPEND, other than the
> master interrupt enable. */
> #define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1)))
> @@ -98,6 +98,8 @@ struct pt_regs {
> #define profile_pc(regs) instruction_pointer(regs)
> extern void show_regs(struct pt_regs *);
>
> +#endif /* __KERNEL__ */
> +
> #endif /* __ASSEMBLY__ */
>
> /*
> diff --git a/include/asm-cris/arch-v10/Kbuild b/include/asm-cris/arch-v10/Kbuild
> index 60e7e1b..7a192e1 100644
> --- a/include/asm-cris/arch-v10/Kbuild
> +++ b/include/asm-cris/arch-v10/Kbuild
> @@ -1,4 +1,3 @@
> -header-y += ptrace.h
> header-y += user.h
> header-y += svinto.h
> header-y += sv_addr_ag.h
> diff --git a/include/asm-cris/arch-v10/ptrace.h b/include/asm-cris/arch-v10/ptrace.h
> index fb14c5e..2f464ea 100644
> --- a/include/asm-cris/arch-v10/ptrace.h
> +++ b/include/asm-cris/arch-v10/ptrace.h
> @@ -106,10 +106,14 @@ struct switch_stack {
> unsigned long return_ip; /* ip that _resume will return to */
> };
>
> +#ifdef __KERNEL__
> +
> /* bit 8 is user-mode flag */
> #define user_mode(regs) (((regs)->dccr & 0x100) != 0)
> #define instruction_pointer(regs) ((regs)->irp)
> #define profile_pc(regs) instruction_pointer(regs)
> extern void show_regs(struct pt_regs *);
>
> +#endif /* __KERNEL__ */
> +
> #endif
> diff --git a/include/asm-cris/arch-v32/Kbuild b/include/asm-cris/arch-v32/Kbuild
> index a0ec545..35f2fc4 100644
> --- a/include/asm-cris/arch-v32/Kbuild
> +++ b/include/asm-cris/arch-v32/Kbuild
> @@ -1,3 +1,2 @@
> -header-y += ptrace.h
> header-y += user.h
> header-y += cryptocop.h
> diff --git a/include/asm-cris/arch-v32/ptrace.h b/include/asm-cris/arch-v32/ptrace.h
> index 516cc70..41f4e86 100644
> --- a/include/asm-cris/arch-v32/ptrace.h
> +++ b/include/asm-cris/arch-v32/ptrace.h
> @@ -106,9 +106,13 @@ struct switch_stack {
> unsigned long return_ip; /* ip that _resume will return to */
> };
>
> +#ifdef __KERNEL__
> +
> #define user_mode(regs) (((regs)->ccs & (1 << (U_CCS_BITNR + CCS_SHIFT))) != 0)
> #define instruction_pointer(regs) ((regs)->erp)
> extern void show_regs(struct pt_regs *);
> #define profile_pc(regs) instruction_pointer(regs)
>
> +#endif /* __KERNEL__ */
> +
> #endif
> diff --git a/include/asm-cris/ptrace.h b/include/asm-cris/ptrace.h
> index 1ec69a7..d910925 100644
> --- a/include/asm-cris/ptrace.h
> +++ b/include/asm-cris/ptrace.h
> @@ -4,11 +4,13 @@
> #include <asm/arch/ptrace.h>
>
> #ifdef __KERNEL__
> +
> /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13
> -#endif
>
> #define profile_pc(regs) instruction_pointer(regs)
>
> +#endif /* __KERNEL__ */
> +
> #endif /* _CRIS_PTRACE_H */
> diff --git a/include/asm-frv/Kbuild b/include/asm-frv/Kbuild
> index bc3f12c..0f8956d 100644
> --- a/include/asm-frv/Kbuild
> +++ b/include/asm-frv/Kbuild
> @@ -3,4 +3,3 @@ include include/asm-generic/Kbuild.asm
> header-y += registers.h
>
> unifdef-y += termios.h
> -unifdef-y += ptrace.h
> diff --git a/include/asm-m68knommu/ptrace.h b/include/asm-m68knommu/ptrace.h
> index 47258e8..8c9194b 100644
> --- a/include/asm-m68knommu/ptrace.h
> +++ b/include/asm-m68knommu/ptrace.h
> @@ -68,10 +68,8 @@ struct switch_stack {
> /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13
> -#ifdef CONFIG_FPU
> #define PTRACE_GETFPREGS 14
> #define PTRACE_SETFPREGS 15
> -#endif
>
> #ifdef __KERNEL__
>
> diff --git a/include/asm-mn10300/ptrace.h b/include/asm-mn10300/ptrace.h
> index b368468..7b06cc6 100644
> --- a/include/asm-mn10300/ptrace.h
> +++ b/include/asm-mn10300/ptrace.h
> @@ -88,12 +88,16 @@ extern struct pt_regs *__frame; /* current frame pointer */
> /* options set using PTRACE_SETOPTIONS */
> #define PTRACE_O_TRACESYSGOOD 0x00000001
>
> -#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
> +#if defined(__KERNEL__)
> +
> +#if !defined(__ASSEMBLY__)
> #define user_mode(regs) (((regs)->epsw & EPSW_nSL) == EPSW_nSL)
> #define instruction_pointer(regs) ((regs)->pc)
> extern void show_regs(struct pt_regs *);
> -#endif
> +#endif /* !__ASSEMBLY */
>
> #define profile_pc(regs) ((regs)->pc)
>
> +#endif /* __KERNEL__ */
> +
> #endif /* _ASM_PTRACE_H */
> diff --git a/include/asm-parisc/ptrace.h b/include/asm-parisc/ptrace.h
> index 93f990e..3e94c5d 100644
> --- a/include/asm-parisc/ptrace.h
> +++ b/include/asm-parisc/ptrace.h
> @@ -33,7 +33,6 @@ struct pt_regs {
> unsigned long ipsw; /* CR22 */
> };
>
> -#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
> /*
> * The numbers chosen here are somewhat arbitrary but absolutely MUST
> * not overlap with any of the number assigned in <linux/ptrace.h>.
> @@ -43,8 +42,11 @@ struct pt_regs {
> * since we have taken branch traps too)
> */
> #define PTRACE_SINGLEBLOCK 12 /* resume execution until next branch */
> +
> #ifdef __KERNEL__
>
> +#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
> +
> /* XXX should we use iaoq[1] or iaoq[0] ? */
> #define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0)
> #define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0)
> diff --git a/include/asm-powerpc/Kbuild b/include/asm-powerpc/Kbuild
> index 7381916..6920904 100644
> --- a/include/asm-powerpc/Kbuild
> +++ b/include/asm-powerpc/Kbuild
> @@ -32,7 +32,6 @@ unifdef-y += elf.h
> unifdef-y += nvram.h
> unifdef-y += param.h
> unifdef-y += posix_types.h
> -unifdef-y += ptrace.h
> unifdef-y += seccomp.h
> unifdef-y += signal.h
> unifdef-y += spu_info.h
> diff --git a/include/asm-sh/ptrace.h b/include/asm-sh/ptrace.h
> index 8d6c92b..7d36dc3 100644
> --- a/include/asm-sh/ptrace.h
> +++ b/include/asm-sh/ptrace.h
> @@ -5,7 +5,7 @@
> * Copyright (C) 1999, 2000 Niibe Yutaka
> *
> */
> -#if defined(__SH5__) || defined(CONFIG_SUPERH64)
> +#if defined(__SH5__)
> struct pt_regs {
> unsigned long long pc;
> unsigned long long sr;
> diff --git a/include/asm-x86/Kbuild b/include/asm-x86/Kbuild
> index 1e35545..00473f7 100644
> --- a/include/asm-x86/Kbuild
> +++ b/include/asm-x86/Kbuild
> @@ -19,7 +19,6 @@ unifdef-y += msr.h
> unifdef-y += mtrr.h
> unifdef-y += posix_types_32.h
> unifdef-y += posix_types_64.h
> -unifdef-y += ptrace.h
> unifdef-y += unistd_32.h
> unifdef-y += unistd_64.h
> unifdef-y += vm86.h
> diff --git a/include/asm-xtensa/ptrace.h b/include/asm-xtensa/ptrace.h
> index 422c73e..089b0db 100644
> --- a/include/asm-xtensa/ptrace.h
> +++ b/include/asm-xtensa/ptrace.h
> @@ -73,10 +73,10 @@
> #define PTRACE_GETXTREGS 18
> #define PTRACE_SETXTREGS 19
>
> -#ifndef __ASSEMBLY__
> -
> #ifdef __KERNEL__
>
> +#ifndef __ASSEMBLY__
> +
> /*
> * This struct defines the way the registers are stored on the
> * kernel stack during a system call or other kernel entry.
> @@ -122,14 +122,14 @@ extern void show_regs(struct pt_regs *);
> # ifndef CONFIG_SMP
> # define profile_pc(regs) instruction_pointer(regs)
> # endif
> -#endif /* __KERNEL__ */
>
> #else /* __ASSEMBLY__ */
>
> -#ifdef __KERNEL__
> # include <asm/asm-offsets.h>
> #define PT_REGS_OFFSET (KERNEL_STACK_SIZE - PT_USER_SIZE)
> -#endif
>
> #endif /* !__ASSEMBLY__ */
> +
> +#endif /* __KERNEL__ */
> +
> #endif /* _XTENSA_PTRACE_H */
>
>
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: gerg@snapgear.com
Secure Computing Corporation PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
WARNING: multiple messages have this Message-ID (diff)
From: Greg Ungerer <gerg@snapgear.com>
To: Adrian Bunk <bunk@kernel.org>
Cc: Roland McGrath <roland@redhat.com>,
linux-kernel@vger.kernel.org, rmk@arm.linux.org.uk,
cooloney@kernel.org, dev-etrax@axis.com, dhowells@redhat.com,
gerg@uclinux.org, yasutake.koichi@jp.panasonic.com,
linux-parisc@vger.kernel.org, paulus@samba.org,
linuxppc-dev@ozlabs.org, linux-sh@vger.kernel.org,
chris@zankel.net, linux-mips@linux-mips.org,
ysato@users.sourceforge.jp,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [2.6 patch] asm/ptrace.h userspace headers cleanup
Date: Tue, 24 Jun 2008 00:15:52 +0000 [thread overview]
Message-ID: <48603CB8.1020903@snapgear.com> (raw)
In-Reply-To: <20080623174809.GE4756@cs181140183.pp.htv.fi>
Hi Adrian,
Adrian Bunk wrote:
> This patch contains the following cleanups for the asm/ptrace.h
> userspace headers:
> - include/asm-generic/Kbuild.asm already lists ptrace.h, remove
> the superfluous listings in the Kbuild files of the following
> architectures:
> - cris
> - frv
> - powerpc
> - x86
> - don't expose function prototypes and macros to userspace:
> - arm
> - blackfin
> - cris
> - mn10300
> - parisc
> - remove #ifdef CONFIG_'s around #define's:
> - blackfin
> - m68knommu
> - sh: AFAIK __SH5__ should work in both kernel and userspace,
> no need to leak CONFIG_SUPERH64 to userspace
> - xtensa: cosmetical change to remove empty
> #ifndef __ASSEMBLY__ #else #endif
> from the userspace headers
>
> Signed-off-by: Adrian Bunk <bunk@kernel.org>
The m68knommu looks ok.
Acked-by: Greg Ungerer <gerg@uclinux.org>
> ---
>
> Not changed by this patch is the fact that the following architectures
> have a different struct pt_regs depending on CONFIG_ variables:
> - h8300
> - m68knommu
> - mips
>
> This does not work in userspace.
Let me do something about that for m68knommu.
Regards
Greg
> include/asm-arm/ptrace.h | 6 ++----
> include/asm-blackfin/ptrace.h | 6 ++++--
> include/asm-cris/arch-v10/Kbuild | 1 -
> include/asm-cris/arch-v10/ptrace.h | 4 ++++
> include/asm-cris/arch-v32/Kbuild | 1 -
> include/asm-cris/arch-v32/ptrace.h | 4 ++++
> include/asm-cris/ptrace.h | 4 +++-
> include/asm-frv/Kbuild | 1 -
> include/asm-m68knommu/ptrace.h | 2 --
> include/asm-mn10300/ptrace.h | 8 ++++++--
> include/asm-parisc/ptrace.h | 4 +++-
> include/asm-powerpc/Kbuild | 1 -
> include/asm-sh/ptrace.h | 2 +-
> include/asm-x86/Kbuild | 1 -
> include/asm-xtensa/ptrace.h | 10 +++++-----
> 15 files changed, 32 insertions(+), 23 deletions(-)
>
> fc14755b77cff7af5ff00e938a4c493a669e25cd diff --git a/include/asm-arm/ptrace.h b/include/asm-arm/ptrace.h
> index 7aaa206..8382b75 100644
> --- a/include/asm-arm/ptrace.h
> +++ b/include/asm-arm/ptrace.h
> @@ -139,8 +139,6 @@ static inline int valid_user_regs(struct pt_regs *regs)
> return 0;
> }
>
> -#endif /* __KERNEL__ */
> -
> #define pc_pointer(v) \
> ((v) & ~PCMASK)
>
> @@ -153,10 +151,10 @@ extern unsigned long profile_pc(struct pt_regs *regs);
> #define profile_pc(regs) instruction_pointer(regs)
> #endif
>
> -#ifdef __KERNEL__
> #define predicate(x) ((x) & 0xf0000000)
> #define PREDICATE_ALWAYS 0xe0000000
> -#endif
> +
> +#endif /* __KERNEL__ */
>
> #endif /* __ASSEMBLY__ */
>
> diff --git a/include/asm-blackfin/ptrace.h b/include/asm-blackfin/ptrace.h
> index b8346cd..a45a80e 100644
> --- a/include/asm-blackfin/ptrace.h
> +++ b/include/asm-blackfin/ptrace.h
> @@ -83,14 +83,14 @@ struct pt_regs {
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13 /* ptrace signal */
>
> -#ifdef CONFIG_BINFMT_ELF_FDPIC
> #define PTRACE_GETFDPIC 31
> #define PTRACE_GETFDPIC_EXEC 0
> #define PTRACE_GETFDPIC_INTERP 1
> -#endif
>
> #define PS_S (0x0002)
>
> +#ifdef __KERNEL__
> +
> /* user_mode returns true if only one bit is set in IPEND, other than the
> master interrupt enable. */
> #define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1)))
> @@ -98,6 +98,8 @@ struct pt_regs {
> #define profile_pc(regs) instruction_pointer(regs)
> extern void show_regs(struct pt_regs *);
>
> +#endif /* __KERNEL__ */
> +
> #endif /* __ASSEMBLY__ */
>
> /*
> diff --git a/include/asm-cris/arch-v10/Kbuild b/include/asm-cris/arch-v10/Kbuild
> index 60e7e1b..7a192e1 100644
> --- a/include/asm-cris/arch-v10/Kbuild
> +++ b/include/asm-cris/arch-v10/Kbuild
> @@ -1,4 +1,3 @@
> -header-y += ptrace.h
> header-y += user.h
> header-y += svinto.h
> header-y += sv_addr_ag.h
> diff --git a/include/asm-cris/arch-v10/ptrace.h b/include/asm-cris/arch-v10/ptrace.h
> index fb14c5e..2f464ea 100644
> --- a/include/asm-cris/arch-v10/ptrace.h
> +++ b/include/asm-cris/arch-v10/ptrace.h
> @@ -106,10 +106,14 @@ struct switch_stack {
> unsigned long return_ip; /* ip that _resume will return to */
> };
>
> +#ifdef __KERNEL__
> +
> /* bit 8 is user-mode flag */
> #define user_mode(regs) (((regs)->dccr & 0x100) != 0)
> #define instruction_pointer(regs) ((regs)->irp)
> #define profile_pc(regs) instruction_pointer(regs)
> extern void show_regs(struct pt_regs *);
>
> +#endif /* __KERNEL__ */
> +
> #endif
> diff --git a/include/asm-cris/arch-v32/Kbuild b/include/asm-cris/arch-v32/Kbuild
> index a0ec545..35f2fc4 100644
> --- a/include/asm-cris/arch-v32/Kbuild
> +++ b/include/asm-cris/arch-v32/Kbuild
> @@ -1,3 +1,2 @@
> -header-y += ptrace.h
> header-y += user.h
> header-y += cryptocop.h
> diff --git a/include/asm-cris/arch-v32/ptrace.h b/include/asm-cris/arch-v32/ptrace.h
> index 516cc70..41f4e86 100644
> --- a/include/asm-cris/arch-v32/ptrace.h
> +++ b/include/asm-cris/arch-v32/ptrace.h
> @@ -106,9 +106,13 @@ struct switch_stack {
> unsigned long return_ip; /* ip that _resume will return to */
> };
>
> +#ifdef __KERNEL__
> +
> #define user_mode(regs) (((regs)->ccs & (1 << (U_CCS_BITNR + CCS_SHIFT))) != 0)
> #define instruction_pointer(regs) ((regs)->erp)
> extern void show_regs(struct pt_regs *);
> #define profile_pc(regs) instruction_pointer(regs)
>
> +#endif /* __KERNEL__ */
> +
> #endif
> diff --git a/include/asm-cris/ptrace.h b/include/asm-cris/ptrace.h
> index 1ec69a7..d910925 100644
> --- a/include/asm-cris/ptrace.h
> +++ b/include/asm-cris/ptrace.h
> @@ -4,11 +4,13 @@
> #include <asm/arch/ptrace.h>
>
> #ifdef __KERNEL__
> +
> /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13
> -#endif
>
> #define profile_pc(regs) instruction_pointer(regs)
>
> +#endif /* __KERNEL__ */
> +
> #endif /* _CRIS_PTRACE_H */
> diff --git a/include/asm-frv/Kbuild b/include/asm-frv/Kbuild
> index bc3f12c..0f8956d 100644
> --- a/include/asm-frv/Kbuild
> +++ b/include/asm-frv/Kbuild
> @@ -3,4 +3,3 @@ include include/asm-generic/Kbuild.asm
> header-y += registers.h
>
> unifdef-y += termios.h
> -unifdef-y += ptrace.h
> diff --git a/include/asm-m68knommu/ptrace.h b/include/asm-m68knommu/ptrace.h
> index 47258e8..8c9194b 100644
> --- a/include/asm-m68knommu/ptrace.h
> +++ b/include/asm-m68knommu/ptrace.h
> @@ -68,10 +68,8 @@ struct switch_stack {
> /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13
> -#ifdef CONFIG_FPU
> #define PTRACE_GETFPREGS 14
> #define PTRACE_SETFPREGS 15
> -#endif
>
> #ifdef __KERNEL__
>
> diff --git a/include/asm-mn10300/ptrace.h b/include/asm-mn10300/ptrace.h
> index b368468..7b06cc6 100644
> --- a/include/asm-mn10300/ptrace.h
> +++ b/include/asm-mn10300/ptrace.h
> @@ -88,12 +88,16 @@ extern struct pt_regs *__frame; /* current frame pointer */
> /* options set using PTRACE_SETOPTIONS */
> #define PTRACE_O_TRACESYSGOOD 0x00000001
>
> -#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
> +#if defined(__KERNEL__)
> +
> +#if !defined(__ASSEMBLY__)
> #define user_mode(regs) (((regs)->epsw & EPSW_nSL) = EPSW_nSL)
> #define instruction_pointer(regs) ((regs)->pc)
> extern void show_regs(struct pt_regs *);
> -#endif
> +#endif /* !__ASSEMBLY */
>
> #define profile_pc(regs) ((regs)->pc)
>
> +#endif /* __KERNEL__ */
> +
> #endif /* _ASM_PTRACE_H */
> diff --git a/include/asm-parisc/ptrace.h b/include/asm-parisc/ptrace.h
> index 93f990e..3e94c5d 100644
> --- a/include/asm-parisc/ptrace.h
> +++ b/include/asm-parisc/ptrace.h
> @@ -33,7 +33,6 @@ struct pt_regs {
> unsigned long ipsw; /* CR22 */
> };
>
> -#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
> /*
> * The numbers chosen here are somewhat arbitrary but absolutely MUST
> * not overlap with any of the number assigned in <linux/ptrace.h>.
> @@ -43,8 +42,11 @@ struct pt_regs {
> * since we have taken branch traps too)
> */
> #define PTRACE_SINGLEBLOCK 12 /* resume execution until next branch */
> +
> #ifdef __KERNEL__
>
> +#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
> +
> /* XXX should we use iaoq[1] or iaoq[0] ? */
> #define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0)
> #define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0)
> diff --git a/include/asm-powerpc/Kbuild b/include/asm-powerpc/Kbuild
> index 7381916..6920904 100644
> --- a/include/asm-powerpc/Kbuild
> +++ b/include/asm-powerpc/Kbuild
> @@ -32,7 +32,6 @@ unifdef-y += elf.h
> unifdef-y += nvram.h
> unifdef-y += param.h
> unifdef-y += posix_types.h
> -unifdef-y += ptrace.h
> unifdef-y += seccomp.h
> unifdef-y += signal.h
> unifdef-y += spu_info.h
> diff --git a/include/asm-sh/ptrace.h b/include/asm-sh/ptrace.h
> index 8d6c92b..7d36dc3 100644
> --- a/include/asm-sh/ptrace.h
> +++ b/include/asm-sh/ptrace.h
> @@ -5,7 +5,7 @@
> * Copyright (C) 1999, 2000 Niibe Yutaka
> *
> */
> -#if defined(__SH5__) || defined(CONFIG_SUPERH64)
> +#if defined(__SH5__)
> struct pt_regs {
> unsigned long long pc;
> unsigned long long sr;
> diff --git a/include/asm-x86/Kbuild b/include/asm-x86/Kbuild
> index 1e35545..00473f7 100644
> --- a/include/asm-x86/Kbuild
> +++ b/include/asm-x86/Kbuild
> @@ -19,7 +19,6 @@ unifdef-y += msr.h
> unifdef-y += mtrr.h
> unifdef-y += posix_types_32.h
> unifdef-y += posix_types_64.h
> -unifdef-y += ptrace.h
> unifdef-y += unistd_32.h
> unifdef-y += unistd_64.h
> unifdef-y += vm86.h
> diff --git a/include/asm-xtensa/ptrace.h b/include/asm-xtensa/ptrace.h
> index 422c73e..089b0db 100644
> --- a/include/asm-xtensa/ptrace.h
> +++ b/include/asm-xtensa/ptrace.h
> @@ -73,10 +73,10 @@
> #define PTRACE_GETXTREGS 18
> #define PTRACE_SETXTREGS 19
>
> -#ifndef __ASSEMBLY__
> -
> #ifdef __KERNEL__
>
> +#ifndef __ASSEMBLY__
> +
> /*
> * This struct defines the way the registers are stored on the
> * kernel stack during a system call or other kernel entry.
> @@ -122,14 +122,14 @@ extern void show_regs(struct pt_regs *);
> # ifndef CONFIG_SMP
> # define profile_pc(regs) instruction_pointer(regs)
> # endif
> -#endif /* __KERNEL__ */
>
> #else /* __ASSEMBLY__ */
>
> -#ifdef __KERNEL__
> # include <asm/asm-offsets.h>
> #define PT_REGS_OFFSET (KERNEL_STACK_SIZE - PT_USER_SIZE)
> -#endif
>
> #endif /* !__ASSEMBLY__ */
> +
> +#endif /* __KERNEL__ */
> +
> #endif /* _XTENSA_PTRACE_H */
>
>
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: gerg@snapgear.com
Secure Computing Corporation PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
WARNING: multiple messages have this Message-ID (diff)
From: Greg Ungerer <gerg@snapgear.com>
To: Adrian Bunk <bunk@kernel.org>
Cc: chris@zankel.net, dev-etrax@axis.com, ysato@users.sourceforge.jp,
linux-parisc@vger.kernel.org, linux-sh@vger.kernel.org,
linux-mips@linux-mips.org, cooloney@kernel.org,
linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
paulus@samba.org, Roland McGrath <roland@redhat.com>,
gerg@uclinux.org, Andrew Morton <akpm@linux-foundation.org>,
yasutake.koichi@jp.panasonic.com, rmk@arm.linux.org.uk
Subject: Re: [2.6 patch] asm/ptrace.h userspace headers cleanup
Date: Tue, 24 Jun 2008 10:15:52 +1000 [thread overview]
Message-ID: <48603CB8.1020903@snapgear.com> (raw)
In-Reply-To: <20080623174809.GE4756@cs181140183.pp.htv.fi>
Hi Adrian,
Adrian Bunk wrote:
> This patch contains the following cleanups for the asm/ptrace.h
> userspace headers:
> - include/asm-generic/Kbuild.asm already lists ptrace.h, remove
> the superfluous listings in the Kbuild files of the following
> architectures:
> - cris
> - frv
> - powerpc
> - x86
> - don't expose function prototypes and macros to userspace:
> - arm
> - blackfin
> - cris
> - mn10300
> - parisc
> - remove #ifdef CONFIG_'s around #define's:
> - blackfin
> - m68knommu
> - sh: AFAIK __SH5__ should work in both kernel and userspace,
> no need to leak CONFIG_SUPERH64 to userspace
> - xtensa: cosmetical change to remove empty
> #ifndef __ASSEMBLY__ #else #endif
> from the userspace headers
>
> Signed-off-by: Adrian Bunk <bunk@kernel.org>
The m68knommu looks ok.
Acked-by: Greg Ungerer <gerg@uclinux.org>
> ---
>
> Not changed by this patch is the fact that the following architectures
> have a different struct pt_regs depending on CONFIG_ variables:
> - h8300
> - m68knommu
> - mips
>
> This does not work in userspace.
Let me do something about that for m68knommu.
Regards
Greg
> include/asm-arm/ptrace.h | 6 ++----
> include/asm-blackfin/ptrace.h | 6 ++++--
> include/asm-cris/arch-v10/Kbuild | 1 -
> include/asm-cris/arch-v10/ptrace.h | 4 ++++
> include/asm-cris/arch-v32/Kbuild | 1 -
> include/asm-cris/arch-v32/ptrace.h | 4 ++++
> include/asm-cris/ptrace.h | 4 +++-
> include/asm-frv/Kbuild | 1 -
> include/asm-m68knommu/ptrace.h | 2 --
> include/asm-mn10300/ptrace.h | 8 ++++++--
> include/asm-parisc/ptrace.h | 4 +++-
> include/asm-powerpc/Kbuild | 1 -
> include/asm-sh/ptrace.h | 2 +-
> include/asm-x86/Kbuild | 1 -
> include/asm-xtensa/ptrace.h | 10 +++++-----
> 15 files changed, 32 insertions(+), 23 deletions(-)
>
> fc14755b77cff7af5ff00e938a4c493a669e25cd diff --git a/include/asm-arm/ptrace.h b/include/asm-arm/ptrace.h
> index 7aaa206..8382b75 100644
> --- a/include/asm-arm/ptrace.h
> +++ b/include/asm-arm/ptrace.h
> @@ -139,8 +139,6 @@ static inline int valid_user_regs(struct pt_regs *regs)
> return 0;
> }
>
> -#endif /* __KERNEL__ */
> -
> #define pc_pointer(v) \
> ((v) & ~PCMASK)
>
> @@ -153,10 +151,10 @@ extern unsigned long profile_pc(struct pt_regs *regs);
> #define profile_pc(regs) instruction_pointer(regs)
> #endif
>
> -#ifdef __KERNEL__
> #define predicate(x) ((x) & 0xf0000000)
> #define PREDICATE_ALWAYS 0xe0000000
> -#endif
> +
> +#endif /* __KERNEL__ */
>
> #endif /* __ASSEMBLY__ */
>
> diff --git a/include/asm-blackfin/ptrace.h b/include/asm-blackfin/ptrace.h
> index b8346cd..a45a80e 100644
> --- a/include/asm-blackfin/ptrace.h
> +++ b/include/asm-blackfin/ptrace.h
> @@ -83,14 +83,14 @@ struct pt_regs {
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13 /* ptrace signal */
>
> -#ifdef CONFIG_BINFMT_ELF_FDPIC
> #define PTRACE_GETFDPIC 31
> #define PTRACE_GETFDPIC_EXEC 0
> #define PTRACE_GETFDPIC_INTERP 1
> -#endif
>
> #define PS_S (0x0002)
>
> +#ifdef __KERNEL__
> +
> /* user_mode returns true if only one bit is set in IPEND, other than the
> master interrupt enable. */
> #define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1)))
> @@ -98,6 +98,8 @@ struct pt_regs {
> #define profile_pc(regs) instruction_pointer(regs)
> extern void show_regs(struct pt_regs *);
>
> +#endif /* __KERNEL__ */
> +
> #endif /* __ASSEMBLY__ */
>
> /*
> diff --git a/include/asm-cris/arch-v10/Kbuild b/include/asm-cris/arch-v10/Kbuild
> index 60e7e1b..7a192e1 100644
> --- a/include/asm-cris/arch-v10/Kbuild
> +++ b/include/asm-cris/arch-v10/Kbuild
> @@ -1,4 +1,3 @@
> -header-y += ptrace.h
> header-y += user.h
> header-y += svinto.h
> header-y += sv_addr_ag.h
> diff --git a/include/asm-cris/arch-v10/ptrace.h b/include/asm-cris/arch-v10/ptrace.h
> index fb14c5e..2f464ea 100644
> --- a/include/asm-cris/arch-v10/ptrace.h
> +++ b/include/asm-cris/arch-v10/ptrace.h
> @@ -106,10 +106,14 @@ struct switch_stack {
> unsigned long return_ip; /* ip that _resume will return to */
> };
>
> +#ifdef __KERNEL__
> +
> /* bit 8 is user-mode flag */
> #define user_mode(regs) (((regs)->dccr & 0x100) != 0)
> #define instruction_pointer(regs) ((regs)->irp)
> #define profile_pc(regs) instruction_pointer(regs)
> extern void show_regs(struct pt_regs *);
>
> +#endif /* __KERNEL__ */
> +
> #endif
> diff --git a/include/asm-cris/arch-v32/Kbuild b/include/asm-cris/arch-v32/Kbuild
> index a0ec545..35f2fc4 100644
> --- a/include/asm-cris/arch-v32/Kbuild
> +++ b/include/asm-cris/arch-v32/Kbuild
> @@ -1,3 +1,2 @@
> -header-y += ptrace.h
> header-y += user.h
> header-y += cryptocop.h
> diff --git a/include/asm-cris/arch-v32/ptrace.h b/include/asm-cris/arch-v32/ptrace.h
> index 516cc70..41f4e86 100644
> --- a/include/asm-cris/arch-v32/ptrace.h
> +++ b/include/asm-cris/arch-v32/ptrace.h
> @@ -106,9 +106,13 @@ struct switch_stack {
> unsigned long return_ip; /* ip that _resume will return to */
> };
>
> +#ifdef __KERNEL__
> +
> #define user_mode(regs) (((regs)->ccs & (1 << (U_CCS_BITNR + CCS_SHIFT))) != 0)
> #define instruction_pointer(regs) ((regs)->erp)
> extern void show_regs(struct pt_regs *);
> #define profile_pc(regs) instruction_pointer(regs)
>
> +#endif /* __KERNEL__ */
> +
> #endif
> diff --git a/include/asm-cris/ptrace.h b/include/asm-cris/ptrace.h
> index 1ec69a7..d910925 100644
> --- a/include/asm-cris/ptrace.h
> +++ b/include/asm-cris/ptrace.h
> @@ -4,11 +4,13 @@
> #include <asm/arch/ptrace.h>
>
> #ifdef __KERNEL__
> +
> /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13
> -#endif
>
> #define profile_pc(regs) instruction_pointer(regs)
>
> +#endif /* __KERNEL__ */
> +
> #endif /* _CRIS_PTRACE_H */
> diff --git a/include/asm-frv/Kbuild b/include/asm-frv/Kbuild
> index bc3f12c..0f8956d 100644
> --- a/include/asm-frv/Kbuild
> +++ b/include/asm-frv/Kbuild
> @@ -3,4 +3,3 @@ include include/asm-generic/Kbuild.asm
> header-y += registers.h
>
> unifdef-y += termios.h
> -unifdef-y += ptrace.h
> diff --git a/include/asm-m68knommu/ptrace.h b/include/asm-m68knommu/ptrace.h
> index 47258e8..8c9194b 100644
> --- a/include/asm-m68knommu/ptrace.h
> +++ b/include/asm-m68knommu/ptrace.h
> @@ -68,10 +68,8 @@ struct switch_stack {
> /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
> #define PTRACE_GETREGS 12
> #define PTRACE_SETREGS 13
> -#ifdef CONFIG_FPU
> #define PTRACE_GETFPREGS 14
> #define PTRACE_SETFPREGS 15
> -#endif
>
> #ifdef __KERNEL__
>
> diff --git a/include/asm-mn10300/ptrace.h b/include/asm-mn10300/ptrace.h
> index b368468..7b06cc6 100644
> --- a/include/asm-mn10300/ptrace.h
> +++ b/include/asm-mn10300/ptrace.h
> @@ -88,12 +88,16 @@ extern struct pt_regs *__frame; /* current frame pointer */
> /* options set using PTRACE_SETOPTIONS */
> #define PTRACE_O_TRACESYSGOOD 0x00000001
>
> -#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
> +#if defined(__KERNEL__)
> +
> +#if !defined(__ASSEMBLY__)
> #define user_mode(regs) (((regs)->epsw & EPSW_nSL) == EPSW_nSL)
> #define instruction_pointer(regs) ((regs)->pc)
> extern void show_regs(struct pt_regs *);
> -#endif
> +#endif /* !__ASSEMBLY */
>
> #define profile_pc(regs) ((regs)->pc)
>
> +#endif /* __KERNEL__ */
> +
> #endif /* _ASM_PTRACE_H */
> diff --git a/include/asm-parisc/ptrace.h b/include/asm-parisc/ptrace.h
> index 93f990e..3e94c5d 100644
> --- a/include/asm-parisc/ptrace.h
> +++ b/include/asm-parisc/ptrace.h
> @@ -33,7 +33,6 @@ struct pt_regs {
> unsigned long ipsw; /* CR22 */
> };
>
> -#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
> /*
> * The numbers chosen here are somewhat arbitrary but absolutely MUST
> * not overlap with any of the number assigned in <linux/ptrace.h>.
> @@ -43,8 +42,11 @@ struct pt_regs {
> * since we have taken branch traps too)
> */
> #define PTRACE_SINGLEBLOCK 12 /* resume execution until next branch */
> +
> #ifdef __KERNEL__
>
> +#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
> +
> /* XXX should we use iaoq[1] or iaoq[0] ? */
> #define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0)
> #define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0)
> diff --git a/include/asm-powerpc/Kbuild b/include/asm-powerpc/Kbuild
> index 7381916..6920904 100644
> --- a/include/asm-powerpc/Kbuild
> +++ b/include/asm-powerpc/Kbuild
> @@ -32,7 +32,6 @@ unifdef-y += elf.h
> unifdef-y += nvram.h
> unifdef-y += param.h
> unifdef-y += posix_types.h
> -unifdef-y += ptrace.h
> unifdef-y += seccomp.h
> unifdef-y += signal.h
> unifdef-y += spu_info.h
> diff --git a/include/asm-sh/ptrace.h b/include/asm-sh/ptrace.h
> index 8d6c92b..7d36dc3 100644
> --- a/include/asm-sh/ptrace.h
> +++ b/include/asm-sh/ptrace.h
> @@ -5,7 +5,7 @@
> * Copyright (C) 1999, 2000 Niibe Yutaka
> *
> */
> -#if defined(__SH5__) || defined(CONFIG_SUPERH64)
> +#if defined(__SH5__)
> struct pt_regs {
> unsigned long long pc;
> unsigned long long sr;
> diff --git a/include/asm-x86/Kbuild b/include/asm-x86/Kbuild
> index 1e35545..00473f7 100644
> --- a/include/asm-x86/Kbuild
> +++ b/include/asm-x86/Kbuild
> @@ -19,7 +19,6 @@ unifdef-y += msr.h
> unifdef-y += mtrr.h
> unifdef-y += posix_types_32.h
> unifdef-y += posix_types_64.h
> -unifdef-y += ptrace.h
> unifdef-y += unistd_32.h
> unifdef-y += unistd_64.h
> unifdef-y += vm86.h
> diff --git a/include/asm-xtensa/ptrace.h b/include/asm-xtensa/ptrace.h
> index 422c73e..089b0db 100644
> --- a/include/asm-xtensa/ptrace.h
> +++ b/include/asm-xtensa/ptrace.h
> @@ -73,10 +73,10 @@
> #define PTRACE_GETXTREGS 18
> #define PTRACE_SETXTREGS 19
>
> -#ifndef __ASSEMBLY__
> -
> #ifdef __KERNEL__
>
> +#ifndef __ASSEMBLY__
> +
> /*
> * This struct defines the way the registers are stored on the
> * kernel stack during a system call or other kernel entry.
> @@ -122,14 +122,14 @@ extern void show_regs(struct pt_regs *);
> # ifndef CONFIG_SMP
> # define profile_pc(regs) instruction_pointer(regs)
> # endif
> -#endif /* __KERNEL__ */
>
> #else /* __ASSEMBLY__ */
>
> -#ifdef __KERNEL__
> # include <asm/asm-offsets.h>
> #define PT_REGS_OFFSET (KERNEL_STACK_SIZE - PT_USER_SIZE)
> -#endif
>
> #endif /* !__ASSEMBLY__ */
> +
> +#endif /* __KERNEL__ */
> +
> #endif /* _XTENSA_PTRACE_H */
>
>
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: gerg@snapgear.com
Secure Computing Corporation PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
next prev parent reply other threads:[~2008-06-24 0:17 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-23 17:48 [2.6 patch] asm/ptrace.h userspace headers cleanup Adrian Bunk
2008-06-23 17:48 ` Adrian Bunk
2008-06-23 17:48 ` Adrian Bunk
2008-06-23 20:08 ` Roland McGrath
2008-06-23 20:08 ` Roland McGrath
2008-06-23 20:08 ` Roland McGrath
2008-06-24 0:15 ` Greg Ungerer [this message]
2008-06-24 0:15 ` Greg Ungerer
2008-06-24 0:15 ` Greg Ungerer
2008-06-24 4:08 ` Paul Mundt
2008-06-24 4:08 ` Paul Mundt
2008-06-24 4:08 ` Paul Mundt
2008-06-24 5:18 ` Grant Grundler
2008-06-24 5:18 ` Grant Grundler
2008-06-24 5:18 ` Grant Grundler
2008-06-24 8:15 ` Jesper Nilsson
2008-06-24 8:15 ` Jesper Nilsson
2008-06-24 8:15 ` Jesper Nilsson
2008-06-24 8:25 ` Chris Zankel
2008-06-24 8:25 ` Chris Zankel
2008-06-24 8:25 ` Chris Zankel
2008-06-24 10:23 ` David Howells
2008-06-24 10:23 ` David Howells
2008-06-24 10:23 ` David Howells
2008-06-24 22:17 ` Paul Mackerras
2008-06-24 22:17 ` Paul Mackerras
2008-06-24 22:17 ` Paul Mackerras
2008-06-25 7:46 ` Russell King
2008-06-25 7:46 ` Russell King
2008-06-25 7:46 ` Russell King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48603CB8.1020903@snapgear.com \
--to=gerg@snapgear.com \
--cc=akpm@linux-foundation.org \
--cc=bunk@kernel.org \
--cc=chris@zankel.net \
--cc=cooloney@kernel.org \
--cc=dev-etrax@axis.com \
--cc=dhowells@redhat.com \
--cc=gerg@uclinux.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
--cc=rmk@arm.linux.org.uk \
--cc=roland@redhat.com \
--cc=yasutake.koichi@jp.panasonic.com \
--cc=ysato@users.sourceforge.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.