diff options
Diffstat (limited to 'arch/arc/include/uapi')
| -rw-r--r-- | arch/arc/include/uapi/asm/Kbuild | 5 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/byteorder.h | 18 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/cachectl.h | 28 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/elf.h | 26 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/page.h | 39 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/ptrace.h | 52 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/setup.h | 6 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/sigcontext.h | 22 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/signal.h | 27 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/swab.h | 98 | ||||
| -rw-r--r-- | arch/arc/include/uapi/asm/unistd.h | 45 | 
11 files changed, 366 insertions, 0 deletions
diff --git a/arch/arc/include/uapi/asm/Kbuild b/arch/arc/include/uapi/asm/Kbuild new file mode 100644 index 00000000000..f50d02df78d --- /dev/null +++ b/arch/arc/include/uapi/asm/Kbuild @@ -0,0 +1,5 @@ +# UAPI Header export list +include include/uapi/asm-generic/Kbuild.asm +header-y += elf.h +header-y += page.h +header-y += cachectl.h diff --git a/arch/arc/include/uapi/asm/byteorder.h b/arch/arc/include/uapi/asm/byteorder.h new file mode 100644 index 00000000000..9da71d415c3 --- /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 00000000000..51c73f0255b --- /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/elf.h b/arch/arc/include/uapi/asm/elf.h new file mode 100644 index 00000000000..0f99ac8fcbb --- /dev/null +++ b/arch/arc/include/uapi/asm/elf.h @@ -0,0 +1,26 @@ +/* + * 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_ELF_H +#define _UAPI__ASM_ARC_ELF_H + +#include <asm/ptrace.h>		/* for user_regs_struct */ + +/* Machine specific ELF Hdr flags */ +#define EF_ARC_OSABI_MSK	0x00000f00 +#define EF_ARC_OSABI_ORIG	0x00000000   /* MUST be zero for back-compat */ +#define EF_ARC_OSABI_CURRENT	0x00000300   /* v3 (no legacy syscalls) */ + +typedef unsigned long elf_greg_t; +typedef unsigned long elf_fpregset_t; + +#define ELF_NGREG	(sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) + +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +#endif diff --git a/arch/arc/include/uapi/asm/page.h b/arch/arc/include/uapi/asm/page.h new file mode 100644 index 00000000000..e5d41e08240 --- /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 00000000000..76a7739aab1 --- /dev/null +++ b/arch/arc/include/uapi/asm/ptrace.h @@ -0,0 +1,52 @@ +/* + * 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 + +#define PTRACE_GET_THREAD_AREA	25 + +#ifndef __ASSEMBLY__ +/* + * Userspace ABI: Register state needed by + *  -ptrace (gdbserver) + *  -sigcontext (SA_SIGNINFO signal frame) + * + * This is to decouple pt_regs from user-space ABI, to be able to change it + * w/o affecting the ABI. + * + * The intermediate pad,pad2 are relics of initial layout based on pt_regs + * for optimizations when copying pt_regs to/from user_regs_struct. + * We no longer need them, but can't be changed as they are part of ABI now. + * + * Also, sigcontext only care about the scratch regs as that is what we really + * save/restore for signal handling. However gdb also uses the same struct + * hence callee regs need to be in there too. +*/ +struct user_regs_struct { + +	long pad; +	struct { +		long bta, lp_start, lp_end, lp_count; +		long status32, ret, blink, fp, gp; +		long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0; +		long sp; +	} scratch; +	long pad2; +	struct { +		long r25, r24, r23, r22, r21, r20; +		long r19, r18, r17, r16, r15, r14, r13; +	} callee; +	long efa;	/* break pt addr, for break points in delay slots */ +	long stop_pc;	/* give dbg stop_pc after ensuring brkpt trap */ +}; +#endif /* !__ASSEMBLY__ */ + +#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 00000000000..a6d4e44938b --- /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 00000000000..9678a11fc15 --- /dev/null +++ b/arch/arc/include/uapi/asm/sigcontext.h @@ -0,0 +1,22 @@ +/* + * 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. + */ +struct sigcontext { +	struct user_regs_struct 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 00000000000..fad62f7f42d --- /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 00000000000..095599a7319 --- /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 00000000000..39e58d1cdf9 --- /dev/null +++ b/arch/arc/include/uapi/asm/unistd.h @@ -0,0 +1,45 @@ +/* + * 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 *******/ + +/* + * Non-typical guard macro to enable inclusion twice in ARCH sys.c + * That is how the Generic syscall wrapper generator works + */ +#if !defined(_UAPI_ASM_ARC_UNISTD_H) || defined(__SYSCALL) +#define _UAPI_ASM_ARC_UNISTD_H + +#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) + +#undef __SYSCALL + +#endif  | 
