lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 28 Jan 2013 13:06:10 +0530
From:	Vineet Gupta <Vineet.Gupta1@...opsys.com>
To:	David Howells <dhowells@...hat.com>
CC:	<linux-arch@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
	<arnd@...db.de>
Subject: Re: [PATCH v3 58/71] ARC: UAPI Disintegrate arch/arc/include/asm

Hi David,

On Thursday 24 January 2013 04:20 PM, Vineet Gupta wrote:
> 1. ./genfilelist.pl arch/arc/include/asm/
> 
> 2. Create arch/arc/include/uapi/asm/Kbuild as follows
> 
> 	+# UAPI Header export list
> 	+include include/uapi/asm-generic/Kbuild.asm
> 
> 3. ./disintegrate-one.pl arch/arc/include/{,uapi/}asm/<above-list>
> 
> 4. Edit arch/arc/include/asm/Kbuild to remove ref to
> 	asm-generic/Kbuild.asm
> 
> To work around empty uapi/asm/setup.h added a placholder comment.
> 
> Signed-off-by: Vineet Gupta <vgupta@...opsys.com>
> Cc: David Howells <dhowells@...hat.com>
> ---
>  arch/arc/include/asm/Kbuild            |    8 ---
>  arch/arc/include/asm/byteorder.h       |   18 ------
>  arch/arc/include/asm/cachectl.h        |   28 ---------
>  arch/arc/include/asm/page.h            |   30 +---------
>  arch/arc/include/asm/ptrace.h          |   37 +-----------
>  arch/arc/include/asm/setup.h           |    3 +-
>  arch/arc/include/asm/sigcontext.h      |   23 --------
>  arch/arc/include/asm/signal.h          |   27 ---------
>  arch/arc/include/asm/swab.h            |   98 --------------------------------
>  arch/arc/include/asm/unistd.h          |   34 -----------
>  arch/arc/include/uapi/asm/Kbuild       |   11 ++++
>  arch/arc/include/uapi/asm/byteorder.h  |   18 ++++++
>  arch/arc/include/uapi/asm/cachectl.h   |   28 +++++++++
>  arch/arc/include/uapi/asm/page.h       |   39 +++++++++++++
>  arch/arc/include/uapi/asm/ptrace.h     |   46 +++++++++++++++
>  arch/arc/include/uapi/asm/setup.h      |    6 ++
>  arch/arc/include/uapi/asm/sigcontext.h |   23 ++++++++
>  arch/arc/include/uapi/asm/signal.h     |   27 +++++++++
>  arch/arc/include/uapi/asm/swab.h       |   98 ++++++++++++++++++++++++++++++++
>  arch/arc/include/uapi/asm/unistd.h     |   34 +++++++++++
>  20 files changed, 335 insertions(+), 301 deletions(-)
>  delete mode 100644 arch/arc/include/asm/byteorder.h
>  delete mode 100644 arch/arc/include/asm/cachectl.h
>  delete mode 100644 arch/arc/include/asm/sigcontext.h
>  delete mode 100644 arch/arc/include/asm/signal.h
>  delete mode 100644 arch/arc/include/asm/swab.h
>  delete mode 100644 arch/arc/include/asm/unistd.h
>  create mode 100644 arch/arc/include/uapi/asm/Kbuild
>  create mode 100644 arch/arc/include/uapi/asm/byteorder.h
>  create mode 100644 arch/arc/include/uapi/asm/cachectl.h
>  create mode 100644 arch/arc/include/uapi/asm/page.h
>  create mode 100644 arch/arc/include/uapi/asm/ptrace.h
>  create mode 100644 arch/arc/include/uapi/asm/setup.h
>  create mode 100644 arch/arc/include/uapi/asm/sigcontext.h
>  create mode 100644 arch/arc/include/uapi/asm/signal.h
>  create mode 100644 arch/arc/include/uapi/asm/swab.h
>  create mode 100644 arch/arc/include/uapi/asm/unistd.h
> 
> diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild
> index b24089c..48af742 100644
> --- a/arch/arc/include/asm/Kbuild
> +++ b/arch/arc/include/asm/Kbuild
> @@ -1,11 +1,3 @@
> -include include/asm-generic/Kbuild.asm
> -
> -# 7-Oct-12: Jeremy Bennett <jeremy.bennett@...ecosm.com>. Some of these
> -# headers, beyond those specified in the generic set are needed by user code.
> -
> -header-y += page.h
> -header-y += cachectl.h
> -
>  generic-y += auxvec.h
>  generic-y += bugs.h
>  generic-y += bitsperlong.h
> diff --git a/arch/arc/include/asm/byteorder.h b/arch/arc/include/asm/byteorder.h
> deleted file mode 100644
> index 9da71d4..0000000
> --- a/arch/arc/include/asm/byteorder.h
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -/*
> - * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - */
> -
> -#ifndef __ASM_ARC_BYTEORDER_H
> -#define __ASM_ARC_BYTEORDER_H
> -
> -#ifdef CONFIG_CPU_BIG_ENDIAN
> -#include <linux/byteorder/big_endian.h>
> -#else
> -#include <linux/byteorder/little_endian.h>
> -#endif
> -
> -#endif /* ASM_ARC_BYTEORDER_H */
> diff --git a/arch/arc/include/asm/cachectl.h b/arch/arc/include/asm/cachectl.h
> deleted file mode 100644
> index 51c73f0..0000000
> --- a/arch/arc/include/asm/cachectl.h
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -/*
> - * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - */
> -
> -#ifndef __ARC_ASM_CACHECTL_H
> -#define __ARC_ASM_CACHECTL_H
> -
> -/*
> - * ARC ABI flags defined for Android's finegrained cacheflush requirements
> - */
> -#define CF_I_INV	0x0002
> -#define CF_D_FLUSH	0x0010
> -#define CF_D_FLUSH_INV	0x0020
> -
> -#define CF_DEFAULT	(CF_I_INV | CF_D_FLUSH)
> -
> -/*
> - * Standard flags expected by cacheflush system call users
> - */
> -#define ICACHE	CF_I_INV
> -#define DCACHE	CF_D_FLUSH
> -#define BCACHE	(CF_I_INV | CF_D_FLUSH)
> -
> -#endif
> diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
> index d111d0c..dfe1f8a 100644
> --- a/arch/arc/include/asm/page.h
> +++ b/arch/arc/include/asm/page.h
> @@ -5,37 +5,11 @@
>   * it under the terms of the GNU General Public License version 2 as
>   * published by the Free Software Foundation.
>   */
> -
>  #ifndef __ASM_ARC_PAGE_H
>  #define __ASM_ARC_PAGE_H
>  
> -/* PAGE_SHIFT determines the page size */
> -#if defined(CONFIG_ARC_PAGE_SIZE_16K)
> -#define PAGE_SHIFT 14
> -#elif defined(CONFIG_ARC_PAGE_SIZE_4K)
> -#define PAGE_SHIFT 12
> -#else
> -/*
> - * Default 8k
> - * done this way (instead of under CONFIG_ARC_PAGE_SIZE_8K) because adhoc
> - * user code (busybox appletlib.h) expects PAGE_SHIFT to be defined w/o
> - * using the correct uClibc header and in their build our autoconf.h is
> - * not available
> - */
> -#define PAGE_SHIFT 13
> -#endif
> -
> -#ifdef __ASSEMBLY__
> -#define PAGE_SIZE	(1 << PAGE_SHIFT)
> -#define PAGE_OFFSET	(0x80000000)
> -#else
> -#define PAGE_SIZE	(1UL << PAGE_SHIFT)	/* Default 8K */
> -#define PAGE_OFFSET	(0x80000000UL)	/* Kernel starts at 2G onwards */
> -#endif
> +#include <uapi/asm/page.h>
>  
> -#define PAGE_MASK	(~(PAGE_SIZE-1))
> -
> -#ifdef __KERNEL__
>  
>  #ifndef __ASSEMBLY__
>  
> @@ -129,6 +103,4 @@ typedef unsigned long pgtable_t;
>  
>  #endif /* !__ASSEMBLY__ */
>  
> -#endif /* __KERNEL__ */
> -
>  #endif
> diff --git a/arch/arc/include/asm/ptrace.h b/arch/arc/include/asm/ptrace.h
> index 6ab65fa..95e633e 100644
> --- a/arch/arc/include/asm/ptrace.h
> +++ b/arch/arc/include/asm/ptrace.h
> @@ -7,42 +7,11 @@
>   *
>   * Amit Bhor, Sameer Dhavale: Codito Technologies 2004
>   */
> -
>  #ifndef __ASM_ARC_PTRACE_H
>  #define __ASM_ARC_PTRACE_H
>  
> -/*
> - * XXX: ABI hack.
> - * The offset calc can be cleanly done in asm-offset.c, however gdb includes
> - * this header directly.
> - */
> -#define PT_bta		4
> -#define PT_lp_start	8
> -#define PT_lp_end	12
> -#define PT_lp_count	16
> -#define PT_status32	20
> -#define PT_ret		24
> -#define PT_blink	28
> -#define PT_fp		32
> -#define PT_r26		36
> -#define PT_r12		40
> -#define PT_r11		44
> -#define PT_r10		48
> -#define PT_r9		52
> -#define PT_r8		56
> -#define PT_r7		60
> -#define PT_r6		64
> -#define PT_r5		68
> -#define PT_r4		72
> -#define PT_r3		76
> -#define PT_r2		80
> -#define PT_r1		84
> -#define PT_r0		88
> -#define PT_sp		92
> -#define PT_orig_r0	96
> -#define PT_orig_r8	100
> -
> -#ifdef __KERNEL__
> +#include <uapi/asm/ptrace.h>
> +
>  
>  #ifndef __ASSEMBLY__
>  
> @@ -163,6 +132,4 @@ static inline long regs_return_value(struct pt_regs *regs)
>  #define orig_r8_IS_IRQ1			0x0010
>  #define orig_r8_IS_IRQ2			0x0020
>  
> -#endif /* __KERNEL__ */
> -
>  #endif /* __ASM_PTRACE_H */
> diff --git a/arch/arc/include/asm/setup.h b/arch/arc/include/asm/setup.h
> index fc97411..229e506 100644
> --- a/arch/arc/include/asm/setup.h
> +++ b/arch/arc/include/asm/setup.h
> @@ -5,11 +5,12 @@
>   * it under the terms of the GNU General Public License version 2 as
>   * published by the Free Software Foundation.
>   */
> -
>  #ifndef __ASMARC_SETUP_H
>  #define __ASMARC_SETUP_H
>  
> +
>  #include <linux/types.h>
> +#include <uapi/asm/setup.h>
>  
>  #define COMMAND_LINE_SIZE 256
>  
> diff --git a/arch/arc/include/asm/sigcontext.h b/arch/arc/include/asm/sigcontext.h
> deleted file mode 100644
> index f21b541..0000000
> --- a/arch/arc/include/asm/sigcontext.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/*
> - * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - */
> -
> -#ifndef _ASM_ARC_SIGCONTEXT_H
> -#define _ASM_ARC_SIGCONTEXT_H
> -
> -#include <asm/ptrace.h>
> -
> -/*
> - * Signal context structure - contains all info to do with the state
> - * before the signal handler was invoked.  Note: only add new entries
> - * to the end of the structure.
> - */
> -struct sigcontext {
> -	struct pt_regs regs;
> -};
> -
> -#endif /* _ASM_ARC_SIGCONTEXT_H */
> diff --git a/arch/arc/include/asm/signal.h b/arch/arc/include/asm/signal.h
> deleted file mode 100644
> index fad62f7..0000000
> --- a/arch/arc/include/asm/signal.h
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -/*
> - * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * Amit Bhor, Sameer Dhavale: Codito Technologies 2004
> - */
> -
> -#ifndef _ASM_ARC_SIGNAL_H
> -#define _ASM_ARC_SIGNAL_H
> -
> -/*
> - * This is much needed for ARC sigreturn optimization.
> - * This allows uClibc to piggback the addr of a sigreturn stub in sigaction,
> - * which allows sigreturn based re-entry into kernel after handling signal.
> - * W/o this kernel needs to "synthesize" the sigreturn trampoline on user
> - * mode stack which in turn forces the following:
> - * -TLB Flush (after making the stack page executable)
> - * -Cache line Flush (to make I/D Cache lines coherent)
> - */
> -#define SA_RESTORER	0x04000000
> -
> -#include <asm-generic/signal.h>
> -
> -#endif /* _ASM_ARC_SIGNAL_H */
> diff --git a/arch/arc/include/asm/swab.h b/arch/arc/include/asm/swab.h
> deleted file mode 100644
> index 095599a..0000000
> --- a/arch/arc/include/asm/swab.h
> +++ /dev/null
> @@ -1,98 +0,0 @@
> -/*
> - * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * vineetg: May 2011
> - *  -Support single cycle endian-swap insn in ARC700 4.10
> - *
> - * vineetg: June 2009
> - *  -Better htonl implementation (5 instead of 9 ALU instructions)
> - *  -Hardware assisted single cycle bswap (Use Case of ARC custom instrn)
> - */
> -
> -#ifndef __ASM_ARC_SWAB_H
> -#define __ASM_ARC_SWAB_H
> -
> -#include <linux/types.h>
> -
> -/* Native single cycle endian swap insn */
> -#ifdef CONFIG_ARC_HAS_SWAPE
> -
> -#define __arch_swab32(x)		\
> -({					\
> -	unsigned int tmp = x;		\
> -	__asm__(			\
> -	"	swape	%0, %1	\n"	\
> -	: "=r" (tmp)			\
> -	: "r" (tmp));			\
> -	tmp;				\
> -})
> -
> -#else
> -
> -/* Several ways of Endian-Swap Emulation for ARC
> - * 0: kernel generic
> - * 1: ARC optimised "C"
> - * 2: ARC Custom instruction
> - */
> -#define ARC_BSWAP_TYPE	1
> -
> -#if (ARC_BSWAP_TYPE == 1)		/******* Software only ********/
> -
> -/* The kernel default implementation of htonl is
> - *		return  x<<24 | x>>24 |
> - *		 (x & (__u32)0x0000ff00UL)<<8 | (x & (__u32)0x00ff0000UL)>>8;
> - *
> - * This generates 9 instructions on ARC (excluding the ld/st)
> - *
> - * 8051fd8c:	ld     r3,[r7,20]	; Mem op : Get the value to be swapped
> - * 8051fd98:	asl    r5,r3,24		; get  3rd Byte
> - * 8051fd9c:	lsr    r2,r3,24		; get  0th Byte
> - * 8051fda0:	and    r4,r3,0xff00
> - * 8051fda8:	asl    r4,r4,8		; get 1st Byte
> - * 8051fdac:	and    r3,r3,0x00ff0000
> - * 8051fdb4:	or     r2,r2,r5		; combine 0th and 3rd Bytes
> - * 8051fdb8:	lsr    r3,r3,8		; 2nd Byte at correct place in Dst Reg
> - * 8051fdbc:	or     r2,r2,r4		; combine 0,3 Bytes with 1st Byte
> - * 8051fdc0:	or     r2,r2,r3		; combine 0,3,1 Bytes with 2nd Byte
> - * 8051fdc4:	st     r2,[r1,20]	; Mem op : save result back to mem
> - *
> - * Joern suggested a better "C" algorithm which is great since
> - * (1) It is portable to any architecure
> - * (2) At the same time it takes advantage of ARC ISA (rotate intrns)
> - */
> -
> -#define __arch_swab32(x)					\
> -({	unsigned long __in = (x), __tmp;			\
> -	__tmp = __in << 8 | __in >> 24; /* ror tmp,in,24 */	\
> -	__in = __in << 24 | __in >> 8; /* ror in,in,8 */	\
> -	__tmp ^= __in;						\
> -	__tmp &= 0xff00ff;					\
> -	__tmp ^ __in;						\
> -})
> -
> -#elif (ARC_BSWAP_TYPE == 2)	/* Custom single cycle bwap instruction */
> -
> -#define __arch_swab32(x)						\
> -({									\
> -	unsigned int tmp = x;						\
> -	__asm__(							\
> -	"	.extInstruction	bswap, 7, 0x00, SUFFIX_NONE, SYNTAX_2OP	\n"\
> -	"	bswap  %0, %1						\n"\
> -	: "=r" (tmp)							\
> -	: "r" (tmp));							\
> -	tmp;								\
> -})
> -
> -#endif /* ARC_BSWAP_TYPE=zzz */
> -
> -#endif /* CONFIG_ARC_HAS_SWAPE */
> -
> -#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
> -#define __SWAB_64_THRU_32__
> -#endif
> -
> -#endif
> diff --git a/arch/arc/include/asm/unistd.h b/arch/arc/include/asm/unistd.h
> deleted file mode 100644
> index 6f30484..0000000
> --- a/arch/arc/include/asm/unistd.h
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -/*
> - * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - */
> -
> -/******** no-legacy-syscalls-ABI *******/
> -
> -#define __ARCH_WANT_SYS_EXECVE
> -#define __ARCH_WANT_SYS_CLONE
> -#define __ARCH_WANT_SYS_VFORK
> -#define __ARCH_WANT_SYS_FORK
> -
> -#define sys_mmap2 sys_mmap_pgoff
> -
> -#include <asm-generic/unistd.h>
> -
> -#define NR_syscalls	__NR_syscalls
> -
> -/* ARC specific syscall */
> -#define __NR_cacheflush		(__NR_arch_specific_syscall + 0)
> -#define __NR_arc_settls		(__NR_arch_specific_syscall + 1)
> -#define __NR_arc_gettls		(__NR_arch_specific_syscall + 2)
> -
> -__SYSCALL(__NR_cacheflush, sys_cacheflush)
> -__SYSCALL(__NR_arc_settls, sys_arc_settls)
> -__SYSCALL(__NR_arc_gettls, sys_arc_gettls)
> -
> -
> -/* Generic syscall (fs/filesystems.c - lost in asm-generic/unistd.h */
> -#define __NR_sysfs		(__NR_arch_specific_syscall + 3)
> -__SYSCALL(__NR_sysfs, sys_sysfs)
> diff --git a/arch/arc/include/uapi/asm/Kbuild b/arch/arc/include/uapi/asm/Kbuild
> new file mode 100644
> index 0000000..2736244
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/Kbuild
> @@ -0,0 +1,11 @@
> +# UAPI Header export list
> +include include/uapi/asm-generic/Kbuild.asm
> +header-y += page.h
> +header-y += setup.h
> +header-y += byteorder.h
> +header-y += cachectl.h
> +header-y += ptrace.h
> +header-y += sigcontext.h
> +header-y += signal.h
> +header-y += swab.h
> +header-y += unistd.h
> diff --git a/arch/arc/include/uapi/asm/byteorder.h b/arch/arc/include/uapi/asm/byteorder.h
> new file mode 100644
> index 0000000..9da71d4
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/byteorder.h
> @@ -0,0 +1,18 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#ifndef __ASM_ARC_BYTEORDER_H
> +#define __ASM_ARC_BYTEORDER_H
> +
> +#ifdef CONFIG_CPU_BIG_ENDIAN
> +#include <linux/byteorder/big_endian.h>
> +#else
> +#include <linux/byteorder/little_endian.h>
> +#endif
> +
> +#endif /* ASM_ARC_BYTEORDER_H */
> diff --git a/arch/arc/include/uapi/asm/cachectl.h b/arch/arc/include/uapi/asm/cachectl.h
> new file mode 100644
> index 0000000..51c73f0
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/cachectl.h
> @@ -0,0 +1,28 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#ifndef __ARC_ASM_CACHECTL_H
> +#define __ARC_ASM_CACHECTL_H
> +
> +/*
> + * ARC ABI flags defined for Android's finegrained cacheflush requirements
> + */
> +#define CF_I_INV	0x0002
> +#define CF_D_FLUSH	0x0010
> +#define CF_D_FLUSH_INV	0x0020
> +
> +#define CF_DEFAULT	(CF_I_INV | CF_D_FLUSH)
> +
> +/*
> + * Standard flags expected by cacheflush system call users
> + */
> +#define ICACHE	CF_I_INV
> +#define DCACHE	CF_D_FLUSH
> +#define BCACHE	(CF_I_INV | CF_D_FLUSH)
> +
> +#endif
> diff --git a/arch/arc/include/uapi/asm/page.h b/arch/arc/include/uapi/asm/page.h
> new file mode 100644
> index 0000000..e5d41e0
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/page.h
> @@ -0,0 +1,39 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#ifndef _UAPI__ASM_ARC_PAGE_H
> +#define _UAPI__ASM_ARC_PAGE_H
> +
> +/* PAGE_SHIFT determines the page size */
> +#if defined(CONFIG_ARC_PAGE_SIZE_16K)
> +#define PAGE_SHIFT 14
> +#elif defined(CONFIG_ARC_PAGE_SIZE_4K)
> +#define PAGE_SHIFT 12
> +#else
> +/*
> + * Default 8k
> + * done this way (instead of under CONFIG_ARC_PAGE_SIZE_8K) because adhoc
> + * user code (busybox appletlib.h) expects PAGE_SHIFT to be defined w/o
> + * using the correct uClibc header and in their build our autoconf.h is
> + * not available
> + */
> +#define PAGE_SHIFT 13
> +#endif
> +
> +#ifdef __ASSEMBLY__
> +#define PAGE_SIZE	(1 << PAGE_SHIFT)
> +#define PAGE_OFFSET	(0x80000000)
> +#else
> +#define PAGE_SIZE	(1UL << PAGE_SHIFT)	/* Default 8K */
> +#define PAGE_OFFSET	(0x80000000UL)	/* Kernel starts at 2G onwards */
> +#endif
> +
> +#define PAGE_MASK	(~(PAGE_SIZE-1))
> +
> +
> +#endif /* _UAPI__ASM_ARC_PAGE_H */
> diff --git a/arch/arc/include/uapi/asm/ptrace.h b/arch/arc/include/uapi/asm/ptrace.h
> new file mode 100644
> index 0000000..bccf4ab
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/ptrace.h
> @@ -0,0 +1,46 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * Amit Bhor, Sameer Dhavale: Codito Technologies 2004
> + */
> +
> +#ifndef _UAPI__ASM_ARC_PTRACE_H
> +#define _UAPI__ASM_ARC_PTRACE_H
> +
> +/*
> + * XXX: ABI hack.
> + * The offset calc can be cleanly done in asm-offset.c, however gdb includes
> + * this header directly.
> + */
> +#define PT_bta		4
> +#define PT_lp_start	8
> +#define PT_lp_end	12
> +#define PT_lp_count	16
> +#define PT_status32	20
> +#define PT_ret		24
> +#define PT_blink	28
> +#define PT_fp		32
> +#define PT_r26		36
> +#define PT_r12		40
> +#define PT_r11		44
> +#define PT_r10		48
> +#define PT_r9		52
> +#define PT_r8		56
> +#define PT_r7		60
> +#define PT_r6		64
> +#define PT_r5		68
> +#define PT_r4		72
> +#define PT_r3		76
> +#define PT_r2		80
> +#define PT_r1		84
> +#define PT_r0		88
> +#define PT_sp		92
> +#define PT_orig_r0	96
> +#define PT_orig_r8	100
> +
> +
> +#endif /* _UAPI__ASM_ARC_PTRACE_H */
> diff --git a/arch/arc/include/uapi/asm/setup.h b/arch/arc/include/uapi/asm/setup.h
> new file mode 100644
> index 0000000..a6d4e44
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/setup.h
> @@ -0,0 +1,6 @@
> +/*
> + * setup.h is part of userspace header ABI so UAPI scripts have to generate it
> + * even if there's nothing to export - causing empty <uapi/asm/setup.h>
> + * However to prevent "patch" from discarding it we add this placeholder
> + * comment
> + */
> diff --git a/arch/arc/include/uapi/asm/sigcontext.h b/arch/arc/include/uapi/asm/sigcontext.h
> new file mode 100644
> index 0000000..f21b541
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/sigcontext.h
> @@ -0,0 +1,23 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#ifndef _ASM_ARC_SIGCONTEXT_H
> +#define _ASM_ARC_SIGCONTEXT_H
> +
> +#include <asm/ptrace.h>
> +
> +/*
> + * Signal context structure - contains all info to do with the state
> + * before the signal handler was invoked.  Note: only add new entries
> + * to the end of the structure.
> + */
> +struct sigcontext {
> +	struct pt_regs regs;
> +};
> +
> +#endif /* _ASM_ARC_SIGCONTEXT_H */
> diff --git a/arch/arc/include/uapi/asm/signal.h b/arch/arc/include/uapi/asm/signal.h
> new file mode 100644
> index 0000000..fad62f7
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/signal.h
> @@ -0,0 +1,27 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * Amit Bhor, Sameer Dhavale: Codito Technologies 2004
> + */
> +
> +#ifndef _ASM_ARC_SIGNAL_H
> +#define _ASM_ARC_SIGNAL_H
> +
> +/*
> + * This is much needed for ARC sigreturn optimization.
> + * This allows uClibc to piggback the addr of a sigreturn stub in sigaction,
> + * which allows sigreturn based re-entry into kernel after handling signal.
> + * W/o this kernel needs to "synthesize" the sigreturn trampoline on user
> + * mode stack which in turn forces the following:
> + * -TLB Flush (after making the stack page executable)
> + * -Cache line Flush (to make I/D Cache lines coherent)
> + */
> +#define SA_RESTORER	0x04000000
> +
> +#include <asm-generic/signal.h>
> +
> +#endif /* _ASM_ARC_SIGNAL_H */
> diff --git a/arch/arc/include/uapi/asm/swab.h b/arch/arc/include/uapi/asm/swab.h
> new file mode 100644
> index 0000000..095599a
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/swab.h
> @@ -0,0 +1,98 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * vineetg: May 2011
> + *  -Support single cycle endian-swap insn in ARC700 4.10
> + *
> + * vineetg: June 2009
> + *  -Better htonl implementation (5 instead of 9 ALU instructions)
> + *  -Hardware assisted single cycle bswap (Use Case of ARC custom instrn)
> + */
> +
> +#ifndef __ASM_ARC_SWAB_H
> +#define __ASM_ARC_SWAB_H
> +
> +#include <linux/types.h>
> +
> +/* Native single cycle endian swap insn */
> +#ifdef CONFIG_ARC_HAS_SWAPE
> +
> +#define __arch_swab32(x)		\
> +({					\
> +	unsigned int tmp = x;		\
> +	__asm__(			\
> +	"	swape	%0, %1	\n"	\
> +	: "=r" (tmp)			\
> +	: "r" (tmp));			\
> +	tmp;				\
> +})
> +
> +#else
> +
> +/* Several ways of Endian-Swap Emulation for ARC
> + * 0: kernel generic
> + * 1: ARC optimised "C"
> + * 2: ARC Custom instruction
> + */
> +#define ARC_BSWAP_TYPE	1
> +
> +#if (ARC_BSWAP_TYPE == 1)		/******* Software only ********/
> +
> +/* The kernel default implementation of htonl is
> + *		return  x<<24 | x>>24 |
> + *		 (x & (__u32)0x0000ff00UL)<<8 | (x & (__u32)0x00ff0000UL)>>8;
> + *
> + * This generates 9 instructions on ARC (excluding the ld/st)
> + *
> + * 8051fd8c:	ld     r3,[r7,20]	; Mem op : Get the value to be swapped
> + * 8051fd98:	asl    r5,r3,24		; get  3rd Byte
> + * 8051fd9c:	lsr    r2,r3,24		; get  0th Byte
> + * 8051fda0:	and    r4,r3,0xff00
> + * 8051fda8:	asl    r4,r4,8		; get 1st Byte
> + * 8051fdac:	and    r3,r3,0x00ff0000
> + * 8051fdb4:	or     r2,r2,r5		; combine 0th and 3rd Bytes
> + * 8051fdb8:	lsr    r3,r3,8		; 2nd Byte at correct place in Dst Reg
> + * 8051fdbc:	or     r2,r2,r4		; combine 0,3 Bytes with 1st Byte
> + * 8051fdc0:	or     r2,r2,r3		; combine 0,3,1 Bytes with 2nd Byte
> + * 8051fdc4:	st     r2,[r1,20]	; Mem op : save result back to mem
> + *
> + * Joern suggested a better "C" algorithm which is great since
> + * (1) It is portable to any architecure
> + * (2) At the same time it takes advantage of ARC ISA (rotate intrns)
> + */
> +
> +#define __arch_swab32(x)					\
> +({	unsigned long __in = (x), __tmp;			\
> +	__tmp = __in << 8 | __in >> 24; /* ror tmp,in,24 */	\
> +	__in = __in << 24 | __in >> 8; /* ror in,in,8 */	\
> +	__tmp ^= __in;						\
> +	__tmp &= 0xff00ff;					\
> +	__tmp ^ __in;						\
> +})
> +
> +#elif (ARC_BSWAP_TYPE == 2)	/* Custom single cycle bwap instruction */
> +
> +#define __arch_swab32(x)						\
> +({									\
> +	unsigned int tmp = x;						\
> +	__asm__(							\
> +	"	.extInstruction	bswap, 7, 0x00, SUFFIX_NONE, SYNTAX_2OP	\n"\
> +	"	bswap  %0, %1						\n"\
> +	: "=r" (tmp)							\
> +	: "r" (tmp));							\
> +	tmp;								\
> +})
> +
> +#endif /* ARC_BSWAP_TYPE=zzz */
> +
> +#endif /* CONFIG_ARC_HAS_SWAPE */
> +
> +#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
> +#define __SWAB_64_THRU_32__
> +#endif
> +
> +#endif
> diff --git a/arch/arc/include/uapi/asm/unistd.h b/arch/arc/include/uapi/asm/unistd.h
> new file mode 100644
> index 0000000..6f30484
> --- /dev/null
> +++ b/arch/arc/include/uapi/asm/unistd.h
> @@ -0,0 +1,34 @@
> +/*
> + * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +/******** no-legacy-syscalls-ABI *******/
> +
> +#define __ARCH_WANT_SYS_EXECVE
> +#define __ARCH_WANT_SYS_CLONE
> +#define __ARCH_WANT_SYS_VFORK
> +#define __ARCH_WANT_SYS_FORK
> +
> +#define sys_mmap2 sys_mmap_pgoff
> +
> +#include <asm-generic/unistd.h>
> +
> +#define NR_syscalls	__NR_syscalls
> +
> +/* ARC specific syscall */
> +#define __NR_cacheflush		(__NR_arch_specific_syscall + 0)
> +#define __NR_arc_settls		(__NR_arch_specific_syscall + 1)
> +#define __NR_arc_gettls		(__NR_arch_specific_syscall + 2)
> +
> +__SYSCALL(__NR_cacheflush, sys_cacheflush)
> +__SYSCALL(__NR_arc_settls, sys_arc_settls)
> +__SYSCALL(__NR_arc_gettls, sys_arc_gettls)
> +
> +
> +/* Generic syscall (fs/filesystems.c - lost in asm-generic/unistd.h */
> +#define __NR_sysfs		(__NR_arch_specific_syscall + 3)
> +__SYSCALL(__NR_sysfs, sys_sysfs)
> 

If this looks OK, can you please rubber-stamp it with your ACK.

Thx,
-Vineet
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ