diff options
Diffstat (limited to 'arch/parisc/include')
104 files changed, 2507 insertions, 2441 deletions
diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 19a434f5505..ecf25e6678a 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild @@ -1,3 +1,29 @@ -include include/asm-generic/Kbuild.asm -header-y += pdc.h +generic-y += auxvec.h +generic-y += barrier.h +generic-y += clkdev.h +generic-y += cputime.h +generic-y += device.h +generic-y += div64.h +generic-y += emergency-restart.h +generic-y += exec.h +generic-y += hash.h +generic-y += hw_irq.h +generic-y += irq_regs.h +generic-y += kdebug.h +generic-y += kvm_para.h +generic-y += local.h +generic-y += local64.h +generic-y += mcs_spinlock.h +generic-y += mutex.h +generic-y += param.h +generic-y += percpu.h +generic-y += poll.h +generic-y += preempt.h +generic-y += segment.h +generic-y += topology.h +generic-y += trace_clock.h +generic-y += user.h +generic-y += vga.h +generic-y += word-at-a-time.h +generic-y += xor.h diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h index 89fb40005e3..b3069fd8346 100644 --- a/arch/parisc/include/asm/assembly.h +++ b/arch/parisc/include/asm/assembly.h @@ -438,7 +438,6 @@  	SAVE_SP  (%sr4, PT_SR4 (\regs))  	SAVE_SP  (%sr5, PT_SR5 (\regs))  	SAVE_SP  (%sr6, PT_SR6 (\regs)) -	SAVE_SP  (%sr7, PT_SR7 (\regs))  	SAVE_CR  (%cr17, PT_IASQ0(\regs))  	mtctl	 %r0,	%cr17 @@ -516,5 +515,17 @@  	nop	/* 7 */  	.endm +	/* +	 * ASM_EXCEPTIONTABLE_ENTRY +	 * +	 * Creates an exception table entry. +	 * Do not convert to a assembler macro. This won't work. +	 */ +#define ASM_EXCEPTIONTABLE_ENTRY(fault_addr, except_addr)	\ +	.section __ex_table,"aw"			!	\ +	ASM_ULONG_INSN	fault_addr, except_addr		!	\ +	.previous + +  #endif /* __ASSEMBLY__ */  #endif diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h index f81955934ae..0be2db2c7d4 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h @@ -6,7 +6,8 @@  #define _ASM_PARISC_ATOMIC_H_  #include <linux/types.h> -#include <asm/system.h> +#include <asm/cmpxchg.h> +#include <asm/barrier.h>  /*   * Atomic operations that C can't guarantee us.  Useful for @@ -49,112 +50,6 @@ extern arch_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned;  #  define _atomic_spin_unlock_irqrestore(l,f) do { local_irq_restore(f); } while (0)  #endif -/* This should get optimized out since it's never called. -** Or get a link error if xchg is used "wrong". -*/ -extern void __xchg_called_with_bad_pointer(void); - - -/* __xchg32/64 defined in arch/parisc/lib/bitops.c */ -extern unsigned long __xchg8(char, char *); -extern unsigned long __xchg32(int, int *); -#ifdef CONFIG_64BIT -extern unsigned long __xchg64(unsigned long, unsigned long *); -#endif - -/* optimizer better get rid of switch since size is a constant */ -static __inline__ unsigned long -__xchg(unsigned long x, __volatile__ void * ptr, int size) -{ -	switch(size) { -#ifdef CONFIG_64BIT -	case 8: return __xchg64(x,(unsigned long *) ptr); -#endif -	case 4: return __xchg32((int) x, (int *) ptr); -	case 1: return __xchg8((char) x, (char *) ptr); -	} -	__xchg_called_with_bad_pointer(); -	return x; -} - - -/* -** REVISIT - Abandoned use of LDCW in xchg() for now: -** o need to test sizeof(*ptr) to avoid clearing adjacent bytes -** o and while we are at it, could CONFIG_64BIT code use LDCD too? -** -**	if (__builtin_constant_p(x) && (x == NULL)) -**		if (((unsigned long)p & 0xf) == 0) -**			return __ldcw(p); -*/ -#define xchg(ptr,x) \ -	((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) - - -#define __HAVE_ARCH_CMPXCHG	1 - -/* bug catcher for when unsupported size is used - won't link */ -extern void __cmpxchg_called_with_bad_pointer(void); - -/* __cmpxchg_u32/u64 defined in arch/parisc/lib/bitops.c */ -extern unsigned long __cmpxchg_u32(volatile unsigned int *m, unsigned int old, unsigned int new_); -extern unsigned long __cmpxchg_u64(volatile unsigned long *ptr, unsigned long old, unsigned long new_); - -/* don't worry...optimizer will get rid of most of this */ -static __inline__ unsigned long -__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size) -{ -	switch(size) { -#ifdef CONFIG_64BIT -	case 8: return __cmpxchg_u64((unsigned long *)ptr, old, new_); -#endif -	case 4: return __cmpxchg_u32((unsigned int *)ptr, (unsigned int) old, (unsigned int) new_); -	} -	__cmpxchg_called_with_bad_pointer(); -	return old; -} - -#define cmpxchg(ptr,o,n)						 \ -  ({									 \ -     __typeof__(*(ptr)) _o_ = (o);					 \ -     __typeof__(*(ptr)) _n_ = (n);					 \ -     (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,		 \ -				    (unsigned long)_n_, sizeof(*(ptr))); \ -  }) - -#include <asm-generic/cmpxchg-local.h> - -static inline unsigned long __cmpxchg_local(volatile void *ptr, -				      unsigned long old, -				      unsigned long new_, int size) -{ -	switch (size) { -#ifdef CONFIG_64BIT -	case 8:	return __cmpxchg_u64((unsigned long *)ptr, old, new_); -#endif -	case 4:	return __cmpxchg_u32(ptr, old, new_); -	default: -		return __cmpxchg_local_generic(ptr, old, new_, size); -	} -} - -/* - * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make - * them available. - */ -#define cmpxchg_local(ptr, o, n)				  	\ -	((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o),	\ -			(unsigned long)(n), sizeof(*(ptr)))) -#ifdef CONFIG_64BIT -#define cmpxchg64_local(ptr, o, n)					\ -  ({									\ -	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\ -	cmpxchg_local((ptr), (o), (n));					\ -  }) -#else -#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) -#endif -  /*   * Note that we need not lock read accesses - aligned word writes/reads   * are atomic, so a reader never sees inconsistent values. @@ -197,15 +92,15 @@ static __inline__ int atomic_read(const atomic_t *v)  #define atomic_xchg(v, new) (xchg(&((v)->counter), new))  /** - * atomic_add_unless - add unless the number is a given value + * __atomic_add_unless - add unless the number is a given value   * @v: pointer of type atomic_t   * @a: the amount to add to v...   * @u: ...unless v is equal to u.   *   * Atomically adds @a to @v, so long as it was not @u. - * Returns non-zero if @v was not @u, and zero otherwise. + * Returns the old value of @v.   */ -static __inline__ int atomic_add_unless(atomic_t *v, int a, int u) +static __inline__ int __atomic_add_unless(atomic_t *v, int a, int u)  {  	int c, old;  	c = atomic_read(v); @@ -217,13 +112,12 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)  			break;  		c = old;  	} -	return c != (u); +	return c;  } -#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) -#define atomic_add(i,v)	((void)(__atomic_add_return( (i),(v)))) -#define atomic_sub(i,v)	((void)(__atomic_add_return(-(i),(v)))) +#define atomic_add(i,v)	((void)(__atomic_add_return(        (i),(v)))) +#define atomic_sub(i,v)	((void)(__atomic_add_return(-((int) (i)),(v))))  #define atomic_inc(v)	((void)(__atomic_add_return(   1,(v))))  #define atomic_dec(v)	((void)(__atomic_add_return(  -1,(v)))) @@ -248,21 +142,16 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)  #define atomic_sub_and_test(i,v)	(atomic_sub_return((i),(v)) == 0) -#define ATOMIC_INIT(i)	((atomic_t) { (i) }) - -#define smp_mb__before_atomic_dec()	smp_mb() -#define smp_mb__after_atomic_dec()	smp_mb() -#define smp_mb__before_atomic_inc()	smp_mb() -#define smp_mb__after_atomic_inc()	smp_mb() +#define ATOMIC_INIT(i)	{ (i) }  #ifdef CONFIG_64BIT -#define ATOMIC64_INIT(i) ((atomic64_t) { (i) }) +#define ATOMIC64_INIT(i) { (i) } -static __inline__ int +static __inline__ s64  __atomic64_add_return(s64 i, atomic64_t *v)  { -	int ret; +	s64 ret;  	unsigned long flags;  	_atomic_spin_lock_irqsave(v, flags); @@ -317,7 +206,7 @@ atomic64_read(const atomic64_t *v)   * @u: ...unless v is equal to u.   *   * Atomically adds @a to @v, so long as it was not @u. - * Returns non-zero if @v was not @u, and zero otherwise. + * Returns the old value of @v.   */  static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)  { @@ -336,12 +225,30 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)  #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) -#else /* CONFIG_64BIT */ - -#include <asm-generic/atomic64.h> +/* + * atomic64_dec_if_positive - decrement by 1 if old value positive + * @v: pointer of type atomic_t + * + * The function returns the old value of *v minus 1, even if + * the atomic variable, v, was not decremented. + */ +static inline long atomic64_dec_if_positive(atomic64_t *v) +{ +	long c, old, dec; +	c = atomic64_read(v); +	for (;;) { +		dec = c - 1; +		if (unlikely(dec < 0)) +			break; +		old = atomic64_cmpxchg((v), c, dec); +		if (likely(old == c)) +			break; +		c = old; +	} +	return dec; +}  #endif /* !CONFIG_64BIT */ -#include <asm-generic/atomic-long.h>  #endif /* _ASM_PARISC_ATOMIC_H_ */ diff --git a/arch/parisc/include/asm/auxvec.h b/arch/parisc/include/asm/auxvec.h deleted file mode 100644 index 9c3ac4b89dc..00000000000 --- a/arch/parisc/include/asm/auxvec.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef __ASMPARISC_AUXVEC_H -#define __ASMPARISC_AUXVEC_H - -#endif diff --git a/arch/parisc/include/asm/bitops.h b/arch/parisc/include/asm/bitops.h index 7a6ea10bd23..3f9406d9b9d 100644 --- a/arch/parisc/include/asm/bitops.h +++ b/arch/parisc/include/asm/bitops.h @@ -8,7 +8,8 @@  #include <linux/compiler.h>  #include <asm/types.h>		/* for BITS_PER_LONG/SHIFT_PER_LONG */  #include <asm/byteorder.h> -#include <asm/atomic.h> +#include <asm/barrier.h> +#include <linux/atomic.h>  /*   * HP-PARISC specific bit operations @@ -19,9 +20,6 @@  #define CHOP_SHIFTCOUNT(x) (((unsigned long) (x)) & (BITS_PER_LONG - 1)) -#define smp_mb__before_clear_bit()      smp_mb() -#define smp_mb__after_clear_bit()       smp_mb() -  /* See http://marc.theaimsgroup.com/?t=108826637900003 for discussion   * on use of volatile and __*_bit() (set/clear/change):   *	*_bit() want use of volatile. @@ -222,18 +220,9 @@ static __inline__ int fls(int x)  #ifdef __KERNEL__ -#include <asm-generic/bitops/ext2-non-atomic.h> - -/* '3' is bits per byte */ -#define LE_BYTE_ADDR ((sizeof(unsigned long) - 1) << 3) - -#define ext2_set_bit_atomic(l,nr,addr) \ -		test_and_set_bit((nr)   ^ LE_BYTE_ADDR, (unsigned long *)addr) -#define ext2_clear_bit_atomic(l,nr,addr) \ -		test_and_clear_bit( (nr) ^ LE_BYTE_ADDR, (unsigned long *)addr) +#include <asm-generic/bitops/le.h> +#include <asm-generic/bitops/ext2-atomic-setbit.h>  #endif	/* __KERNEL__ */ -#include <asm-generic/bitops/minix-le.h> -  #endif /* _PARISC_BITOPS_H */ diff --git a/arch/parisc/include/asm/bug.h b/arch/parisc/include/asm/bug.h index 72cfdb0cfdd..62a33338549 100644 --- a/arch/parisc/include/asm/bug.h +++ b/arch/parisc/include/asm/bug.h @@ -1,6 +1,8 @@  #ifndef _PARISC_BUG_H  #define _PARISC_BUG_H +#include <linux/kernel.h>	/* for BUGFLAG_TAINT */ +  /*   * Tell the user there is some problem.   * The offending file and line are encoded in the __bug_table section. diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h index f388a85bba1..de65f66ea64 100644 --- a/arch/parisc/include/asm/cacheflush.h +++ b/arch/parisc/include/asm/cacheflush.h @@ -3,6 +3,7 @@  #include <linux/mm.h>  #include <linux/uaccess.h> +#include <asm/tlbflush.h>  /* The usual comment is "Caches aren't brain-dead on the <architecture>".   * Unfortunately, that doesn't apply to PA-RISC. */ @@ -26,8 +27,6 @@ void flush_user_dcache_range_asm(unsigned long, unsigned long);  void flush_kernel_dcache_range_asm(unsigned long, unsigned long);  void flush_kernel_dcache_page_asm(void *);  void flush_kernel_icache_page(void *); -void flush_user_dcache_page(unsigned long); -void flush_user_icache_page(unsigned long);  void flush_user_dcache_range(unsigned long, unsigned long);  void flush_user_icache_range(unsigned long, unsigned long); @@ -37,6 +36,13 @@ void flush_cache_all_local(void);  void flush_cache_all(void);  void flush_cache_mm(struct mm_struct *mm); +#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE +void flush_kernel_dcache_page_addr(void *addr); +static inline void flush_kernel_dcache_page(struct page *page) +{ +	flush_kernel_dcache_page_addr(page_address(page)); +} +  #define flush_kernel_dcache_range(start,size) \  	flush_kernel_dcache_range_asm((start), (start)+(size));  /* vmap range flushes and invalidates.  Architecturally, we don't need @@ -50,6 +56,16 @@ static inline void flush_kernel_vmap_range(void *vaddr, int size)  }  static inline void invalidate_kernel_vmap_range(void *vaddr, int size)  { +	unsigned long start = (unsigned long)vaddr; +	void *cursor = vaddr; + +	for ( ; cursor < vaddr + size; cursor += PAGE_SIZE) { +		struct page *page = vmalloc_to_page(cursor); + +		if (test_and_clear_bit(PG_dcache_dirty, &page->flags)) +			flush_kernel_dcache_page(page); +	} +	flush_kernel_dcache_range_asm(start, start + size);  }  #define flush_cache_vmap(start, end)		flush_cache_all() @@ -90,43 +106,41 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned  void flush_cache_range(struct vm_area_struct *vma,  		unsigned long start, unsigned long end); +/* defined in pacache.S exported in cache.c used by flush_anon_page */ +void flush_dcache_page_asm(unsigned long phys_addr, unsigned long vaddr); +  #define ARCH_HAS_FLUSH_ANON_PAGE  static inline void  flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)  { -	if (PageAnon(page)) -		flush_user_dcache_page(vmaddr); -} - -#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE -void flush_kernel_dcache_page_addr(void *addr); -static inline void flush_kernel_dcache_page(struct page *page) -{ -	flush_kernel_dcache_page_addr(page_address(page)); +	if (PageAnon(page)) { +		flush_tlb_page(vma, vmaddr); +		preempt_disable(); +		flush_dcache_page_asm(page_to_phys(page), vmaddr); +		preempt_enable(); +	}  }  #ifdef CONFIG_DEBUG_RODATA  void mark_rodata_ro(void);  #endif -#ifdef CONFIG_PA8X00 -/* Only pa8800, pa8900 needs this */ -  #include <asm/kmap_types.h>  #define ARCH_HAS_KMAP -void kunmap_parisc(void *addr); -  static inline void *kmap(struct page *page)  {  	might_sleep();  	return page_address(page);  } -#define kunmap(page)			kunmap_parisc(page_address(page)) +static inline void kunmap(struct page *page) +{ +	flush_kernel_dcache_page_addr(page_address(page)); +} -static inline void *__kmap_atomic(struct page *page) +static inline void *kmap_atomic(struct page *page)  {  	pagefault_disable();  	return page_address(page); @@ -134,14 +148,13 @@ static inline void *__kmap_atomic(struct page *page)  static inline void __kunmap_atomic(void *addr)  { -	kunmap_parisc(addr); +	flush_kernel_dcache_page_addr(addr);  	pagefault_enable();  }  #define kmap_atomic_prot(page, prot)	kmap_atomic(page)  #define kmap_atomic_pfn(pfn)	kmap_atomic(pfn_to_page(pfn))  #define kmap_atomic_to_page(ptr)	virt_to_page(ptr) -#endif  #endif /* _PARISC_CACHEFLUSH_H */ diff --git a/arch/parisc/include/asm/cmpxchg.h b/arch/parisc/include/asm/cmpxchg.h new file mode 100644 index 00000000000..dbd13354ec4 --- /dev/null +++ b/arch/parisc/include/asm/cmpxchg.h @@ -0,0 +1,116 @@ +/* + * forked from parisc asm/atomic.h which was: + *	Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org> + *	Copyright (C) 2006 Kyle McMartin <kyle@parisc-linux.org> + */ + +#ifndef _ASM_PARISC_CMPXCHG_H_ +#define _ASM_PARISC_CMPXCHG_H_ + +/* This should get optimized out since it's never called. +** Or get a link error if xchg is used "wrong". +*/ +extern void __xchg_called_with_bad_pointer(void); + +/* __xchg32/64 defined in arch/parisc/lib/bitops.c */ +extern unsigned long __xchg8(char, char *); +extern unsigned long __xchg32(int, int *); +#ifdef CONFIG_64BIT +extern unsigned long __xchg64(unsigned long, unsigned long *); +#endif + +/* optimizer better get rid of switch since size is a constant */ +static inline unsigned long +__xchg(unsigned long x, __volatile__ void *ptr, int size) +{ +	switch (size) { +#ifdef CONFIG_64BIT +	case 8: return __xchg64(x, (unsigned long *) ptr); +#endif +	case 4: return __xchg32((int) x, (int *) ptr); +	case 1: return __xchg8((char) x, (char *) ptr); +	} +	__xchg_called_with_bad_pointer(); +	return x; +} + +/* +** REVISIT - Abandoned use of LDCW in xchg() for now: +** o need to test sizeof(*ptr) to avoid clearing adjacent bytes +** o and while we are at it, could CONFIG_64BIT code use LDCD too? +** +**	if (__builtin_constant_p(x) && (x == NULL)) +**		if (((unsigned long)p & 0xf) == 0) +**			return __ldcw(p); +*/ +#define xchg(ptr, x) \ +	((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) + +#define __HAVE_ARCH_CMPXCHG	1 + +/* bug catcher for when unsupported size is used - won't link */ +extern void __cmpxchg_called_with_bad_pointer(void); + +/* __cmpxchg_u32/u64 defined in arch/parisc/lib/bitops.c */ +extern unsigned long __cmpxchg_u32(volatile unsigned int *m, unsigned int old, +				   unsigned int new_); +extern unsigned long __cmpxchg_u64(volatile unsigned long *ptr, +				   unsigned long old, unsigned long new_); + +/* don't worry...optimizer will get rid of most of this */ +static inline unsigned long +__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size) +{ +	switch (size) { +#ifdef CONFIG_64BIT +	case 8: return __cmpxchg_u64((unsigned long *)ptr, old, new_); +#endif +	case 4: return __cmpxchg_u32((unsigned int *)ptr, +				     (unsigned int)old, (unsigned int)new_); +	} +	__cmpxchg_called_with_bad_pointer(); +	return old; +} + +#define cmpxchg(ptr, o, n)						 \ +({									 \ +	__typeof__(*(ptr)) _o_ = (o);					 \ +	__typeof__(*(ptr)) _n_ = (n);					 \ +	(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,	 \ +				    (unsigned long)_n_, sizeof(*(ptr))); \ +}) + +#include <asm-generic/cmpxchg-local.h> + +static inline unsigned long __cmpxchg_local(volatile void *ptr, +				      unsigned long old, +				      unsigned long new_, int size) +{ +	switch (size) { +#ifdef CONFIG_64BIT +	case 8:	return __cmpxchg_u64((unsigned long *)ptr, old, new_); +#endif +	case 4:	return __cmpxchg_u32(ptr, old, new_); +	default: +		return __cmpxchg_local_generic(ptr, old, new_, size); +	} +} + +/* + * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make + * them available. + */ +#define cmpxchg_local(ptr, o, n)					\ +	((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o),	\ +			(unsigned long)(n), sizeof(*(ptr)))) +#ifdef CONFIG_64BIT +#define cmpxchg64_local(ptr, o, n)					\ +({									\ +	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\ +	cmpxchg_local((ptr), (o), (n));					\ +}) +#else +#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) +#endif + +#endif /* _ASM_PARISC_CMPXCHG_H_ */ diff --git a/arch/parisc/include/asm/compat.h b/arch/parisc/include/asm/compat.h index efa0b60c63f..94710cfc1ce 100644 --- a/arch/parisc/include/asm/compat.h +++ b/arch/parisc/include/asm/compat.h @@ -28,6 +28,7 @@ typedef u16	compat_nlink_t;  typedef u16	compat_ipc_pid_t;  typedef s32	compat_daddr_t;  typedef u32	compat_caddr_t; +typedef s32	compat_key_t;  typedef s32	compat_timer_t;  typedef s32	compat_int_t; @@ -36,6 +37,7 @@ typedef s64	compat_s64;  typedef u32	compat_uint_t;  typedef u32	compat_ulong_t;  typedef u64	compat_u64; +typedef u32	compat_uptr_t;  struct compat_timespec {  	compat_time_t		tv_sec; @@ -105,7 +107,8 @@ struct compat_statfs {  	__kernel_fsid_t	f_fsid;  	s32		f_namelen;  	s32		f_frsize; -	s32		f_spare[5]; +	s32		f_flags; +	s32		f_spare[4];  };  struct compat_sigcontext { @@ -126,16 +129,132 @@ typedef u32		compat_old_sigset_t;	/* at least 32 bits */  typedef u32		compat_sigset_word; +typedef union compat_sigval { +	compat_int_t	sival_int; +	compat_uptr_t	sival_ptr; +} compat_sigval_t; + +typedef struct compat_siginfo { +	int si_signo; +	int si_errno; +	int si_code; + +	union { +		int _pad[128/sizeof(int) - 3]; + +		/* kill() */ +		struct { +			unsigned int _pid;      /* sender's pid */ +			unsigned int _uid;      /* sender's uid */ +		} _kill; + +		/* POSIX.1b timers */ +		struct { +			compat_timer_t _tid;            /* timer id */ +			int _overrun;           /* overrun count */ +			char _pad[sizeof(unsigned int) - sizeof(int)]; +			compat_sigval_t _sigval;        /* same as below */ +			int _sys_private;       /* not to be passed to user */ +		} _timer; + +		/* POSIX.1b signals */ +		struct { +			unsigned int _pid;      /* sender's pid */ +			unsigned int _uid;      /* sender's uid */ +			compat_sigval_t _sigval; +		} _rt; + +		/* SIGCHLD */ +		struct { +			unsigned int _pid;      /* which child */ +			unsigned int _uid;      /* sender's uid */ +			int _status;            /* exit code */ +			compat_clock_t _utime; +			compat_clock_t _stime; +		} _sigchld; + +		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ +		struct { +			unsigned int _addr;     /* faulting insn/memory ref. */ +		} _sigfault; + +		/* SIGPOLL */ +		struct { +			int _band;      /* POLL_IN, POLL_OUT, POLL_MSG */ +			int _fd; +		} _sigpoll; +	} _sifields; +} compat_siginfo_t; +  #define COMPAT_OFF_T_MAX	0x7fffffff  #define COMPAT_LOFF_T_MAX	0x7fffffffffffffffL +struct compat_ipc64_perm { +	compat_key_t key; +	__compat_uid_t uid; +	__compat_gid_t gid; +	__compat_uid_t cuid; +	__compat_gid_t cgid; +	unsigned short int __pad1; +	compat_mode_t mode; +	unsigned short int __pad2; +	unsigned short int seq; +	unsigned int __pad3; +	unsigned long __unused1;	/* yes they really are 64bit pads */ +	unsigned long __unused2; +}; + +struct compat_semid64_ds { +	struct compat_ipc64_perm sem_perm; +	compat_time_t sem_otime; +	unsigned int __unused1; +	compat_time_t sem_ctime; +	unsigned int __unused2; +	compat_ulong_t sem_nsems; +	compat_ulong_t __unused3; +	compat_ulong_t __unused4; +}; + +struct compat_msqid64_ds { +	struct compat_ipc64_perm msg_perm; +	unsigned int __unused1; +	compat_time_t msg_stime; +	unsigned int __unused2; +	compat_time_t msg_rtime; +	unsigned int __unused3; +	compat_time_t msg_ctime; +	compat_ulong_t msg_cbytes; +	compat_ulong_t msg_qnum; +	compat_ulong_t msg_qbytes; +	compat_pid_t msg_lspid; +	compat_pid_t msg_lrpid; +	compat_ulong_t __unused4; +	compat_ulong_t __unused5; +}; + +struct compat_shmid64_ds { +	struct compat_ipc64_perm shm_perm; +	unsigned int __unused1; +	compat_time_t shm_atime; +	unsigned int __unused2; +	compat_time_t shm_dtime; +	unsigned int __unused3; +	compat_time_t shm_ctime; +	unsigned int __unused4; +	compat_size_t shm_segsz; +	compat_pid_t shm_cpid; +	compat_pid_t shm_lpid; +	compat_ulong_t shm_nattch; +	compat_ulong_t __unused5; +	compat_ulong_t __unused6; +}; +  /*   * A pointer passed in from user mode. This should not   * be used for syscall parameters, just declare them   * as pointers because the syscall entry code will have   * appropriately converted them already.   */ -typedef	u32		compat_uptr_t;  static inline void __user *compat_ptr(compat_uptr_t uptr)  { diff --git a/arch/parisc/include/asm/compat_rt_sigframe.h b/arch/parisc/include/asm/compat_rt_sigframe.h deleted file mode 100644 index 81bec28bdc4..00000000000 --- a/arch/parisc/include/asm/compat_rt_sigframe.h +++ /dev/null @@ -1,50 +0,0 @@ -#include<linux/compat.h> -#include<linux/compat_siginfo.h> -#include<asm/compat_ucontext.h> - -#ifndef _ASM_PARISC_COMPAT_RT_SIGFRAME_H -#define _ASM_PARISC_COMPAT_RT_SIGFRAME_H - -/* In a deft move of uber-hackery, we decide to carry the top half of all - * 64-bit registers in a non-portable, non-ABI, hidden structure. - * Userspace can read the hidden structure if it *wants* but is never - * guaranteed to be in the same place. Infact the uc_sigmask from the  - * ucontext_t structure may push the hidden register file downards - */ -struct compat_regfile { -	/* Upper half of all the 64-bit registers that were truncated -	   on a copy to a 32-bit userspace */ -	compat_int_t rf_gr[32]; -	compat_int_t rf_iasq[2]; -	compat_int_t rf_iaoq[2]; -	compat_int_t rf_sar; -}; - -#define COMPAT_SIGRETURN_TRAMP 4 -#define COMPAT_SIGRESTARTBLOCK_TRAMP 5  -#define COMPAT_TRAMP_SIZE (COMPAT_SIGRETURN_TRAMP + COMPAT_SIGRESTARTBLOCK_TRAMP) - -struct compat_rt_sigframe { -	/* XXX: Must match trampoline size in arch/parisc/kernel/signal.c  -	        Secondary to that it must protect the ERESTART_RESTARTBLOCK -		trampoline we left on the stack (we were bad and didn't  -		change sp so we could run really fast.) */ -	compat_uint_t tramp[COMPAT_TRAMP_SIZE]; -	compat_siginfo_t info; -	struct compat_ucontext uc; -	/* Hidden location of truncated registers, *must* be last. */ -	struct compat_regfile regs;  -}; - -/* - * The 32-bit ABI wants at least 48 bytes for a function call frame: - * 16 bytes for arg0-arg3, and 32 bytes for magic (the only part of - * which Linux/parisc uses is sp-20 for the saved return pointer...) - * Then, the stack pointer must be rounded to a cache line (64 bytes). - */ -#define SIGFRAME32		64 -#define FUNCTIONCALLFRAME32	48 -#define PARISC_RT_SIGFRAME_SIZE32					\ -	(((sizeof(struct compat_rt_sigframe) + FUNCTIONCALLFRAME32) + SIGFRAME32) & -SIGFRAME32) - -#endif diff --git a/arch/parisc/include/asm/compat_signal.h b/arch/parisc/include/asm/compat_signal.h deleted file mode 100644 index 6ad02c360b2..00000000000 --- a/arch/parisc/include/asm/compat_signal.h +++ /dev/null @@ -1,2 +0,0 @@ -/* Use generic */ -#include <asm-generic/compat_signal.h> diff --git a/arch/parisc/include/asm/cputime.h b/arch/parisc/include/asm/cputime.h deleted file mode 100644 index dcdf2fbd7e7..00000000000 --- a/arch/parisc/include/asm/cputime.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __PARISC_CPUTIME_H -#define __PARISC_CPUTIME_H - -#include <asm-generic/cputime.h> - -#endif /* __PARISC_CPUTIME_H */ diff --git a/arch/parisc/include/asm/delay.h b/arch/parisc/include/asm/delay.h index 7a75e984674..08e58e679e3 100644 --- a/arch/parisc/include/asm/delay.h +++ b/arch/parisc/include/asm/delay.h @@ -1,15 +1,5 @@ -#ifndef _PARISC_DELAY_H -#define _PARISC_DELAY_H - -#include <asm/system.h>    /* for mfctl() */ -#include <asm/processor.h> /* for boot_cpu_data */ - - -/* - * Copyright (C) 1993 Linus Torvalds - * - * Delay routines - */ +#ifndef _ASM_PARISC_DELAY_H +#define _ASM_PARISC_DELAY_H  static __inline__ void __delay(unsigned long loops) {  	asm volatile( @@ -19,25 +9,14 @@ static __inline__ void __delay(unsigned long loops) {  		: "=r" (loops) : "0" (loops));  } -static __inline__ void __cr16_delay(unsigned long clocks) { -	unsigned long start; - -	/* -	 * Note: Due to unsigned math, cr16 rollovers shouldn't be -	 * a problem here. However, on 32 bit, we need to make sure -	 * we don't pass in too big a value. The current default -	 * value of MAX_UDELAY_MS should help prevent this. -	 */ +extern void __udelay(unsigned long usecs); +extern void __udelay_bad(unsigned long usecs); -	start = mfctl(16); -	while ((mfctl(16) - start) < clocks) -	    ; +static inline void udelay(unsigned long usecs) +{ +	if (__builtin_constant_p(usecs) && (usecs) > 20000) +		__udelay_bad(usecs); +	__udelay(usecs);  } -static __inline__ void __udelay(unsigned long usecs) { -	__cr16_delay(usecs * ((unsigned long)boot_cpu_data.cpu_hz / 1000000UL)); -} - -#define udelay(n) __udelay(n) - -#endif /* defined(_PARISC_DELAY_H) */ +#endif /* _ASM_PARISC_DELAY_H */ diff --git a/arch/parisc/include/asm/device.h b/arch/parisc/include/asm/device.h deleted file mode 100644 index d8f9872b0e2..00000000000 --- a/arch/parisc/include/asm/device.h +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Arch specific extensions to struct device - * - * This file is released under the GPLv2 - */ -#include <asm-generic/device.h> - diff --git a/arch/parisc/include/asm/div64.h b/arch/parisc/include/asm/div64.h deleted file mode 100644 index 6cd978cefb2..00000000000 --- a/arch/parisc/include/asm/div64.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/div64.h> diff --git a/arch/parisc/include/asm/dma-mapping.h b/arch/parisc/include/asm/dma-mapping.h index 4ef73b09b16..d0eae5f2bd8 100644 --- a/arch/parisc/include/asm/dma-mapping.h +++ b/arch/parisc/include/asm/dma-mapping.h @@ -5,7 +5,7 @@  #include <asm/cacheflush.h>  #include <asm/scatterlist.h> -/* See Documentation/PCI/PCI-DMA-mapping.txt */ +/* See Documentation/DMA-API-HOWTO.txt */  struct hppa_dma_ops {  	int  (*dma_supported)(struct device *dev, u64 mask);  	void *(*alloc_consistent)(struct device *dev, size_t size, dma_addr_t *iova, gfp_t flag); @@ -46,6 +46,9 @@ extern struct hppa_dma_ops pcx_dma_ops;  extern struct hppa_dma_ops *hppa_dma_ops; +#define dma_alloc_attrs(d, s, h, f, a) dma_alloc_coherent(d, s, h, f) +#define dma_free_attrs(d, s, h, f, a) dma_free_coherent(d, s, h, f) +  static inline void *  dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,  		   gfp_t flag) @@ -210,7 +213,7 @@ parisc_walk_tree(struct device *dev)  	return dev->platform_data;  } -#define GET_IOC(dev) (HBA_DATA(parisc_walk_tree(dev))->iommu);	 +#define GET_IOC(dev) (HBA_DATA(parisc_walk_tree(dev))->iommu)  #ifdef CONFIG_IOMMU_CCIO @@ -238,4 +241,19 @@ void * sba_get_iommu(struct parisc_device *dev);  /* At the moment, we panic on error for IOMMU resource exaustion */  #define dma_mapping_error(dev, x)	0 +/* This API cannot be supported on PA-RISC */ +static inline int dma_mmap_coherent(struct device *dev, +				    struct vm_area_struct *vma, void *cpu_addr, +				    dma_addr_t dma_addr, size_t size) +{ +	return -EINVAL; +} + +static inline int dma_get_sgtable(struct device *dev, struct sg_table *sgt, +				  void *cpu_addr, dma_addr_t dma_addr, +				  size_t size) +{ +	return -EINVAL; +} +  #endif diff --git a/arch/parisc/include/asm/dma.h b/arch/parisc/include/asm/dma.h index f7a18f96870..fd48ae2de95 100644 --- a/arch/parisc/include/asm/dma.h +++ b/arch/parisc/include/asm/dma.h @@ -9,7 +9,6 @@  #define _ASM_DMA_H  #include <asm/io.h>		/* need byte IO */ -#include <asm/system.h>	  #define dma_outb	outb  #define dma_inb		inb diff --git a/arch/parisc/include/asm/eisa_eeprom.h b/arch/parisc/include/asm/eisa_eeprom.h index 9c9da980402..8ce8b85ca58 100644 --- a/arch/parisc/include/asm/eisa_eeprom.h +++ b/arch/parisc/include/asm/eisa_eeprom.h @@ -27,7 +27,7 @@ struct eeprom_header  	u_int8_t  ver_maj;  	u_int8_t  ver_min;  	u_int8_t  num_slots;        /* number of EISA slots in system */ -	u_int16_t csum;             /* checksum, I don't know how to calulate this */ +	u_int16_t csum;             /* checksum, I don't know how to calculate this */  	u_int8_t  pad[10];  } __attribute__ ((packed)); diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h index 19f6cb1a4a1..3391d061ecc 100644 --- a/arch/parisc/include/asm/elf.h +++ b/arch/parisc/include/asm/elf.h @@ -247,7 +247,7 @@ typedef unsigned long elf_greg_t;  #define ELF_PLATFORM  ("PARISC\0")  #define SET_PERSONALITY(ex) \ -	current->personality = PER_LINUX; \ +	set_personality((current->personality & ~PER_MASK) | PER_LINUX); \  	current->thread.map_base = DEFAULT_MAP_BASE; \  	current->thread.task_size = DEFAULT_TASK_SIZE \ @@ -348,4 +348,8 @@ struct pt_regs;	/* forward declaration... */  #define ELF_HWCAP	0 +struct mm_struct; +extern unsigned long arch_randomize_brk(struct mm_struct *); +#define arch_randomize_brk arch_randomize_brk +  #endif diff --git a/arch/parisc/include/asm/emergency-restart.h b/arch/parisc/include/asm/emergency-restart.h deleted file mode 100644 index 108d8c48e42..00000000000 --- a/arch/parisc/include/asm/emergency-restart.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _ASM_EMERGENCY_RESTART_H -#define _ASM_EMERGENCY_RESTART_H - -#include <asm-generic/emergency-restart.h> - -#endif /* _ASM_EMERGENCY_RESTART_H */ diff --git a/arch/parisc/include/asm/floppy.h b/arch/parisc/include/asm/floppy.h index 4ca69f558fa..f84ff12574b 100644 --- a/arch/parisc/include/asm/floppy.h +++ b/arch/parisc/include/asm/floppy.h @@ -157,10 +157,10 @@ static int fd_request_irq(void)  {  	if(can_use_virtual_dma)  		return request_irq(FLOPPY_IRQ, floppy_hardint, -				   IRQF_DISABLED, "floppy", NULL); +				   0, "floppy", NULL);  	else  		return request_irq(FLOPPY_IRQ, floppy_interrupt, -				   IRQF_DISABLED, "floppy", NULL); +				   0, "floppy", NULL);  }  static unsigned long dma_mem_alloc(unsigned long size) diff --git a/arch/parisc/include/asm/ftrace.h b/arch/parisc/include/asm/ftrace.h index 72c0fafaa03..544ed8ef87e 100644 --- a/arch/parisc/include/asm/ftrace.h +++ b/arch/parisc/include/asm/ftrace.h @@ -24,15 +24,7 @@ extern void return_to_handler(void);  extern unsigned long return_address(unsigned int); -#define HAVE_ARCH_CALLER_ADDR - -#define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0)) -#define CALLER_ADDR1 return_address(1) -#define CALLER_ADDR2 return_address(2) -#define CALLER_ADDR3 return_address(3) -#define CALLER_ADDR4 return_address(4) -#define CALLER_ADDR5 return_address(5) -#define CALLER_ADDR6 return_address(6) +#define ftrace_return_address(n) return_address(n)  #endif /* __ASSEMBLY__ */ diff --git a/arch/parisc/include/asm/futex.h b/arch/parisc/include/asm/futex.h index 0c705c3a55e..49df14805a9 100644 --- a/arch/parisc/include/asm/futex.h +++ b/arch/parisc/include/asm/futex.h @@ -5,11 +5,37 @@  #include <linux/futex.h>  #include <linux/uaccess.h> +#include <asm/atomic.h>  #include <asm/errno.h> +/* The following has to match the LWS code in syscall.S.  We have +   sixteen four-word locks. */ + +static inline void +_futex_spin_lock_irqsave(u32 __user *uaddr, unsigned long int *flags) +{ +	extern u32 lws_lock_start[]; +	long index = ((long)uaddr & 0xf0) >> 2; +	arch_spinlock_t *s = (arch_spinlock_t *)&lws_lock_start[index]; +	local_irq_save(*flags); +	arch_spin_lock(s); +} + +static inline void +_futex_spin_unlock_irqrestore(u32 __user *uaddr, unsigned long int *flags) +{ +	extern u32 lws_lock_start[]; +	long index = ((long)uaddr & 0xf0) >> 2; +	arch_spinlock_t *s = (arch_spinlock_t *)&lws_lock_start[index]; +	arch_spin_unlock(s); +	local_irq_restore(*flags); +} +  static inline int -futex_atomic_op_inuser (int encoded_op, int __user *uaddr) +futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)  { +	unsigned long int flags; +	u32 val;  	int op = (encoded_op >> 28) & 7;  	int cmp = (encoded_op >> 24) & 15;  	int oparg = (encoded_op << 8) >> 20; @@ -18,21 +44,58 @@ futex_atomic_op_inuser (int encoded_op, int __user *uaddr)  	if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))  		oparg = 1 << oparg; -	if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) +	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(*uaddr)))  		return -EFAULT;  	pagefault_disable(); +	_futex_spin_lock_irqsave(uaddr, &flags); +  	switch (op) {  	case FUTEX_OP_SET: +		/* *(int *)UADDR2 = OPARG; */ +		ret = get_user(oldval, uaddr); +		if (!ret) +			ret = put_user(oparg, uaddr); +		break;  	case FUTEX_OP_ADD: +		/* *(int *)UADDR2 += OPARG; */ +		ret = get_user(oldval, uaddr); +		if (!ret) { +			val = oldval + oparg; +			ret = put_user(val, uaddr); +		} +		break;  	case FUTEX_OP_OR: +		/* *(int *)UADDR2 |= OPARG; */ +		ret = get_user(oldval, uaddr); +		if (!ret) { +			val = oldval | oparg; +			ret = put_user(val, uaddr); +		} +		break;  	case FUTEX_OP_ANDN: +		/* *(int *)UADDR2 &= ~OPARG; */ +		ret = get_user(oldval, uaddr); +		if (!ret) { +			val = oldval & ~oparg; +			ret = put_user(val, uaddr); +		} +		break;  	case FUTEX_OP_XOR: +		/* *(int *)UADDR2 ^= OPARG; */ +		ret = get_user(oldval, uaddr); +		if (!ret) { +			val = oldval ^ oparg; +			ret = put_user(val, uaddr); +		} +		break;  	default:  		ret = -ENOSYS;  	} +	_futex_spin_unlock_irqrestore(uaddr, &flags); +  	pagefault_enable();  	if (!ret) { @@ -51,10 +114,12 @@ futex_atomic_op_inuser (int encoded_op, int __user *uaddr)  /* Non-atomic version */  static inline int -futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) +futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, +			      u32 oldval, u32 newval)  { -	int err = 0; -	int uval; +	int ret; +	u32 val; +	unsigned long flags;  	/* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is  	 * our gateway page, and causes no end of trouble... @@ -62,15 +127,27 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)  	if (segment_eq(KERNEL_DS, get_fs()) && !uaddr)  		return -EFAULT; -	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) +	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))  		return -EFAULT; -	err = get_user(uval, uaddr); -	if (err) return -EFAULT; -	if (uval == oldval) -		err = put_user(newval, uaddr); -	if (err) return -EFAULT; -	return uval; +	/* HPPA has no cmpxchg in hardware and therefore the +	 * best we can do here is use an array of locks. The +	 * lock selected is based on a hash of the userspace +	 * address. This should scale to a couple of CPUs. +	 */ + +	_futex_spin_lock_irqsave(uaddr, &flags); + +	ret = get_user(val, uaddr); + +	if (!ret && val == oldval) +		ret = put_user(newval, uaddr); + +	*uval = val; + +	_futex_spin_unlock_irqrestore(uaddr, &flags); + +	return ret;  }  #endif /*__KERNEL__*/ diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h index 0d68184a76c..9b3bd039a60 100644 --- a/arch/parisc/include/asm/hardirq.h +++ b/arch/parisc/include/asm/hardirq.h @@ -1,11 +1,46 @@  /* hardirq.h: PA-RISC hard IRQ support.   *   * Copyright (C) 2001 Matthew Wilcox <matthew@wil.cx> + * Copyright (C) 2013 Helge Deller <deller@gmx.de>   */  #ifndef _PARISC_HARDIRQ_H  #define _PARISC_HARDIRQ_H -#include <asm-generic/hardirq.h> +#include <linux/cache.h> +#include <linux/threads.h> +#include <linux/irq.h> + +#ifdef CONFIG_IRQSTACKS +#define __ARCH_HAS_DO_SOFTIRQ +#endif + +typedef struct { +	unsigned int __softirq_pending; +	unsigned int kernel_stack_usage; +	unsigned int irq_stack_usage; +#ifdef CONFIG_SMP +	unsigned int irq_resched_count; +#endif +	unsigned int irq_unaligned_count; +	unsigned int irq_fpassist_count; +	unsigned int irq_tlb_count; +} ____cacheline_aligned irq_cpustat_t; + +DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); + +#define __ARCH_IRQ_STAT +#define __IRQ_STAT(cpu, member) (irq_stat[cpu].member) +#define inc_irq_stat(member)	this_cpu_inc(irq_stat.member) +#define __inc_irq_stat(member)	__this_cpu_inc(irq_stat.member) +#define local_softirq_pending()	this_cpu_read(irq_stat.__softirq_pending) + +#define __ARCH_SET_SOFTIRQ_PENDING + +#define set_softirq_pending(x)	\ +		this_cpu_write(irq_stat.__softirq_pending, (x)) +#define or_softirq_pending(x)	this_cpu_or(irq_stat.__softirq_pending, (x)) + +#define ack_bad_irq(irq) WARN(1, "unexpected IRQ trap at vector %02x\n", irq)  #endif /* _PARISC_HARDIRQ_H */ diff --git a/arch/parisc/include/asm/hardware.h b/arch/parisc/include/asm/hardware.h index 4e9626836ba..d1d864b81ba 100644 --- a/arch/parisc/include/asm/hardware.h +++ b/arch/parisc/include/asm/hardware.h @@ -2,7 +2,6 @@  #define _PARISC_HARDWARE_H  #include <linux/mod_devicetable.h> -#include <asm/pdc.h>  #define HWTYPE_ANY_ID		PA_HWTYPE_ANY_ID  #define HVERSION_ANY_ID		PA_HVERSION_ANY_ID @@ -95,12 +94,14 @@ struct bc_module {  #define HPHW_MC	       15  #define HPHW_FAULTY    31 +struct parisc_device_id;  /* hardware.c: */  extern const char *parisc_hardware_description(struct parisc_device_id *id);  extern enum cpu_type parisc_get_cpu_type(unsigned long hversion);  struct pci_dev; +struct hardware_path;  /* drivers.c: */  extern struct parisc_device *alloc_pa_dev(unsigned long hpa, diff --git a/arch/parisc/include/asm/hw_irq.h b/arch/parisc/include/asm/hw_irq.h deleted file mode 100644 index 6707f7df392..00000000000 --- a/arch/parisc/include/asm/hw_irq.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _ASM_HW_IRQ_H -#define _ASM_HW_IRQ_H - -/* - *	linux/include/asm/hw_irq.h - */ - -#endif diff --git a/arch/parisc/include/asm/irq.h b/arch/parisc/include/asm/irq.h index c67dccf2e31..1073599a7be 100644 --- a/arch/parisc/include/asm/irq.h +++ b/arch/parisc/include/asm/irq.h @@ -32,15 +32,10 @@ static __inline__ int irq_canonicalize(int irq)  }  struct irq_chip; +struct irq_data; -/* - * Some useful "we don't have to do anything here" handlers.  Should - * probably be provided by the generic code. - */ -void no_ack_irq(unsigned int irq); -void no_end_irq(unsigned int irq); -void cpu_ack_irq(unsigned int irq); -void cpu_eoi_irq(unsigned int irq); +void cpu_ack_irq(struct irq_data *d); +void cpu_eoi_irq(struct irq_data *d);  extern int txn_alloc_irq(unsigned int nbits);  extern int txn_claim_irq(int); @@ -49,7 +44,7 @@ extern unsigned long txn_alloc_addr(unsigned int);  extern unsigned long txn_affinity_addr(unsigned int irq, int cpu);  extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *); -extern int cpu_check_affinity(unsigned int irq, const struct cpumask *dest); +extern int cpu_check_affinity(struct irq_data *d, const struct cpumask *dest);  /* soft power switch support (power.c) */  extern struct tasklet_struct power_tasklet; diff --git a/arch/parisc/include/asm/irq_regs.h b/arch/parisc/include/asm/irq_regs.h deleted file mode 100644 index 3dd9c0b7027..00000000000 --- a/arch/parisc/include/asm/irq_regs.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/irq_regs.h> diff --git a/arch/parisc/include/asm/kbdleds.h b/arch/parisc/include/asm/kbdleds.h new file mode 100644 index 00000000000..2e2e75a83c2 --- /dev/null +++ b/arch/parisc/include/asm/kbdleds.h @@ -0,0 +1,19 @@ +#ifndef _ASM_PARISC_KBDLEDS_H +#define _ASM_PARISC_KBDLEDS_H + +/* + * On HIL keyboards of PARISC machines there is no NumLock key and + * everyone expects the keypad to be used for numbers. That's why + * we can safely turn on the NUMLOCK bit. + */ + +static inline int kbd_defleds(void) +{ +#if defined(CONFIG_KEYBOARD_HIL) || defined(CONFIG_KEYBOARD_HIL_OLD) +	return 1 << VC_NUMLOCK; +#else +	return 0; +#endif +} + +#endif /* _ASM_PARISC_KBDLEDS_H */ diff --git a/arch/parisc/include/asm/kdebug.h b/arch/parisc/include/asm/kdebug.h deleted file mode 100644 index 6ece1b03766..00000000000 --- a/arch/parisc/include/asm/kdebug.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/kdebug.h> diff --git a/arch/parisc/include/asm/ldcw.h b/arch/parisc/include/asm/ldcw.h new file mode 100644 index 00000000000..d2d11b7055b --- /dev/null +++ b/arch/parisc/include/asm/ldcw.h @@ -0,0 +1,48 @@ +#ifndef __PARISC_LDCW_H +#define __PARISC_LDCW_H + +#ifndef CONFIG_PA20 +/* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, +   and GCC only guarantees 8-byte alignment for stack locals, we can't +   be assured of 16-byte alignment for atomic lock data even if we +   specify "__attribute ((aligned(16)))" in the type declaration.  So, +   we use a struct containing an array of four ints for the atomic lock +   type and dynamically select the 16-byte aligned int from the array +   for the semaphore.  */ + +#define __PA_LDCW_ALIGNMENT	16 +#define __ldcw_align(a) ({					\ +	unsigned long __ret = (unsigned long) &(a)->lock[0];	\ +	__ret = (__ret + __PA_LDCW_ALIGNMENT - 1)		\ +		& ~(__PA_LDCW_ALIGNMENT - 1);			\ +	(volatile unsigned int *) __ret;			\ +}) +#define __LDCW	"ldcw" + +#else /*CONFIG_PA20*/ +/* From: "Jim Hull" <jim.hull of hp.com> +   I've attached a summary of the change, but basically, for PA 2.0, as +   long as the ",CO" (coherent operation) completer is specified, then the +   16-byte alignment requirement for ldcw and ldcd is relaxed, and instead +   they only require "natural" alignment (4-byte for ldcw, 8-byte for +   ldcd). */ + +#define __PA_LDCW_ALIGNMENT	4 +#define __ldcw_align(a) (&(a)->slock) +#define __LDCW	"ldcw,co" + +#endif /*!CONFIG_PA20*/ + +/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */ +#define __ldcw(a) ({						\ +	unsigned __ret;						\ +	__asm__ __volatile__(__LDCW " 0(%2),%0"			\ +		: "=r" (__ret), "+m" (*(a)) : "r" (a));		\ +	__ret;							\ +}) + +#ifdef CONFIG_SMP +# define __lock_aligned __attribute__((__section__(".data..lock_aligned"))) +#endif + +#endif /* __PARISC_LDCW_H */ diff --git a/arch/parisc/include/asm/local.h b/arch/parisc/include/asm/local.h deleted file mode 100644 index c11c530f74d..00000000000 --- a/arch/parisc/include/asm/local.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/local.h> diff --git a/arch/parisc/include/asm/local64.h b/arch/parisc/include/asm/local64.h deleted file mode 100644 index 36c93b5cc23..00000000000 --- a/arch/parisc/include/asm/local64.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/local64.h> diff --git a/arch/parisc/include/asm/mmu_context.h b/arch/parisc/include/asm/mmu_context.h index 354b2aca990..59be2576443 100644 --- a/arch/parisc/include/asm/mmu_context.h +++ b/arch/parisc/include/asm/mmu_context.h @@ -3,7 +3,7 @@  #include <linux/mm.h>  #include <linux/sched.h> -#include <asm/atomic.h> +#include <linux/atomic.h>  #include <asm/pgalloc.h>  #include <asm/pgtable.h>  #include <asm-generic/mm_hooks.h> diff --git a/arch/parisc/include/asm/mmzone.h b/arch/parisc/include/asm/mmzone.h index 9608d2cf214..b6b34a0987e 100644 --- a/arch/parisc/include/asm/mmzone.h +++ b/arch/parisc/include/asm/mmzone.h @@ -1,9 +1,10 @@  #ifndef _PARISC_MMZONE_H  #define _PARISC_MMZONE_H +#define MAX_PHYSMEM_RANGES 8 /* Fix the size for now (current known max is 3) */ +  #ifdef CONFIG_DISCONTIGMEM -#define MAX_PHYSMEM_RANGES 8 /* Fix the size for now (current known max is 3) */  extern int npmem_ranges;  struct node_map_data { @@ -14,13 +15,6 @@ extern struct node_map_data node_data[];  #define NODE_DATA(nid)          (&node_data[nid].pg_data) -#define node_start_pfn(nid)	(NODE_DATA(nid)->node_start_pfn) -#define node_end_pfn(nid)						\ -({									\ -	pg_data_t *__pgdat = NODE_DATA(nid);				\ -	__pgdat->node_start_pfn + __pgdat->node_spanned_pages;		\ -}) -  /* We have these possible memory map layouts:   * Astro: 0-3.75, 67.75-68, 4-64   * zx1: 0-1, 257-260, 4-256 @@ -33,7 +27,7 @@ extern struct node_map_data node_data[];  #define PFNNID_SHIFT (30 - PAGE_SHIFT)  #define PFNNID_MAP_MAX  512     /* support 512GB */ -extern unsigned char pfnnid_map[PFNNID_MAP_MAX]; +extern signed char pfnnid_map[PFNNID_MAP_MAX];  #ifndef CONFIG_64BIT  #define pfn_is_io(pfn) ((pfn & (0xf0000000UL >> PAGE_SHIFT)) == (0xf0000000UL >> PAGE_SHIFT)) @@ -45,17 +39,14 @@ extern unsigned char pfnnid_map[PFNNID_MAP_MAX];  static inline int pfn_to_nid(unsigned long pfn)  {  	unsigned int i; -	unsigned char r;  	if (unlikely(pfn_is_io(pfn)))  		return 0;  	i = pfn >> PFNNID_SHIFT; -	BUG_ON(i >= sizeof(pfnnid_map) / sizeof(pfnnid_map[0])); -	r = pfnnid_map[i]; -	BUG_ON(r == 0xff); +	BUG_ON(i >= ARRAY_SIZE(pfnnid_map)); -	return (int)r; +	return pfnnid_map[i];  }  static inline int pfn_valid(int pfn) @@ -67,7 +58,5 @@ static inline int pfn_valid(int pfn)  	return 0;  } -#else /* !CONFIG_DISCONTIGMEM */ -#define MAX_PHYSMEM_RANGES 	1   #endif  #endif /* _PARISC_MMZONE_H */ diff --git a/arch/parisc/include/asm/module.h b/arch/parisc/include/asm/module.h index 1f4123427ea..bab37e99168 100644 --- a/arch/parisc/include/asm/module.h +++ b/arch/parisc/include/asm/module.h @@ -1,21 +1,11 @@  #ifndef _ASM_PARISC_MODULE_H  #define _ASM_PARISC_MODULE_H + +#include <asm-generic/module.h> +  /*   * This file contains the parisc architecture specific module code.   */ -#ifdef CONFIG_64BIT -#define Elf_Shdr Elf64_Shdr -#define Elf_Sym Elf64_Sym -#define Elf_Ehdr Elf64_Ehdr -#define Elf_Addr Elf64_Addr -#define Elf_Rela Elf64_Rela -#else -#define Elf_Shdr Elf32_Shdr -#define Elf_Sym Elf32_Sym -#define Elf_Ehdr Elf32_Ehdr -#define Elf_Addr Elf32_Addr -#define Elf_Rela Elf32_Rela -#endif  struct unwind_table; diff --git a/arch/parisc/include/asm/mutex.h b/arch/parisc/include/asm/mutex.h deleted file mode 100644 index 458c1f7fbc1..00000000000 --- a/arch/parisc/include/asm/mutex.h +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Pull in the generic implementation for the mutex fastpath. - * - * TODO: implement optimized primitives instead, or leave the generic - * implementation in place, or pick the atomic_xchg() based generic - * implementation. (see asm-generic/mutex-xchg.h for details) - */ - -#include <asm-generic/mutex-dec.h> diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h index a84cc1f925f..60d5d174dfe 100644 --- a/arch/parisc/include/asm/page.h +++ b/arch/parisc/include/asm/page.h @@ -21,15 +21,16 @@  #include <asm/types.h>  #include <asm/cache.h> -#define clear_page(page)	memset((void *)(page), 0, PAGE_SIZE) -#define copy_page(to,from)      copy_user_page_asm((void *)(to), (void *)(from)) +#define clear_page(page)	clear_page_asm((void *)(page)) +#define copy_page(to, from)	copy_page_asm((void *)(to), (void *)(from))  struct page; -void copy_user_page_asm(void *to, void *from); +void clear_page_asm(void *page); +void copy_page_asm(void *to, void *from); +#define clear_user_page(vto, vaddr, page) clear_page_asm(vto)  void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, -			   struct page *pg); -void clear_user_page(void *page, unsigned long vaddr, struct page *pg); +			struct page *pg);  /*   * These are used to make use of C type-checking.. @@ -160,5 +161,11 @@ extern int npmem_ranges;  #include <asm-generic/memory_model.h>  #include <asm-generic/getorder.h> +#include <asm/pdc.h> + +#define PAGE0   ((struct zeropage *)__PAGE_OFFSET) + +/* DEFINITION OF THE ZERO-PAGE (PAG0) */ +/* based on work by Jason Eckhardt (jason@equator.com) */  #endif /* _PARISC_PAGE_H */ diff --git a/arch/parisc/include/asm/param.h b/arch/parisc/include/asm/param.h deleted file mode 100644 index 965d4542797..00000000000 --- a/arch/parisc/include/asm/param.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/param.h> diff --git a/arch/parisc/include/asm/parisc-device.h b/arch/parisc/include/asm/parisc-device.h index 9afdad6c2ff..eaf4dc1c729 100644 --- a/arch/parisc/include/asm/parisc-device.h +++ b/arch/parisc/include/asm/parisc-device.h @@ -23,6 +23,7 @@ struct parisc_device {  	/* generic info returned from pdc_pat_cell_module() */  	unsigned long	mod_info;	/* PAT specific - Misc Module info */  	unsigned long	pmod_loc;	/* physical Module location */ +	unsigned long	mod0;  #endif  	u64		dma_mask;	/* DMA mask for I/O */  	struct device 	dev; @@ -61,4 +62,6 @@ parisc_get_drvdata(struct parisc_device *d)  extern struct bus_type parisc_bus_type; +int iosapic_serial_irq(struct parisc_device *dev); +  #endif /*_ASM_PARISC_PARISC_DEVICE_H_*/ diff --git a/arch/parisc/include/asm/parport.h b/arch/parisc/include/asm/parport.h index 00d9cc3e7b9..c391d7cbc22 100644 --- a/arch/parisc/include/asm/parport.h +++ b/arch/parisc/include/asm/parport.h @@ -8,7 +8,7 @@  #define _ASM_PARPORT_H 1 -static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma) +static int parport_pc_find_nonpci_ports (int autoirq, int autodma)  {  	/* nothing ! */  	return 0; diff --git a/arch/parisc/include/asm/pci.h b/arch/parisc/include/asm/pci.h index 2242a5c636c..20df2b04fc0 100644 --- a/arch/parisc/include/asm/pci.h +++ b/arch/parisc/include/asm/pci.h @@ -82,38 +82,8 @@ struct pci_hba_data {  #ifdef CONFIG_64BIT  #define PCI_F_EXTEND		0xffffffff00000000UL -#define PCI_IS_LMMIO(hba,a)	pci_is_lmmio(hba,a) - -/* We need to know if an address is LMMMIO or GMMIO. - * LMMIO requires mangling and GMMIO we must use as-is. - */ -static __inline__  int pci_is_lmmio(struct pci_hba_data *hba, unsigned long a) -{ -	return(((a) & PCI_F_EXTEND) == PCI_F_EXTEND); -} - -/* -** Convert between PCI (IO_VIEW) addresses and processor (PA_VIEW) addresses. -** See pci.c for more conversions used by Generic PCI code. -** -** Platform characteristics/firmware guarantee that -**	(1) PA_VIEW - IO_VIEW = lmmio_offset for both LMMIO and ELMMIO -**	(2) PA_VIEW == IO_VIEW for GMMIO -*/ -#define PCI_BUS_ADDR(hba,a)	(PCI_IS_LMMIO(hba,a)	\ -		?  ((a) - hba->lmmio_space_offset)	/* mangle LMMIO */ \ -		: (a))					/* GMMIO */ -#define PCI_HOST_ADDR(hba,a)	(((a) & PCI_F_EXTEND) == 0 \ -		? (a) + hba->lmmio_space_offset \ -		: (a)) -  #else	/* !CONFIG_64BIT */ - -#define PCI_BUS_ADDR(hba,a)	(a) -#define PCI_HOST_ADDR(hba,a)	(a)  #define PCI_F_EXTEND		0UL -#define PCI_IS_LMMIO(hba,a)	(1)	/* 32-bit doesn't support GMMIO */ -  #endif /* !CONFIG_64BIT */  /* @@ -245,22 +215,14 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev,  }  #endif -extern void -pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, -			 struct resource *res); - -extern void -pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, -			struct pci_bus_region *region); - -static inline void pcibios_penalize_isa_irq(int irq, int active) -{ -	/* We don't need to penalize isa irq's */ -} -  static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)  {  	return channel ? 15 : 14;  } +#define HAVE_PCI_MMAP + +extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, +	enum pci_mmap_state mmap_state, int write_combine); +  #endif /* __ASM_PARISC_PCI_H */ diff --git a/arch/parisc/include/asm/pdc.h b/arch/parisc/include/asm/pdc.h index 4ca510b3c6f..7eb616e4bf8 100644 --- a/arch/parisc/include/asm/pdc.h +++ b/arch/parisc/include/asm/pdc.h @@ -1,350 +1,10 @@  #ifndef _PARISC_PDC_H  #define _PARISC_PDC_H -/* - *	PDC return values ... - *	All PDC calls return a subset of these errors.  - */ - -#define PDC_WARN		  3	/* Call completed with a warning */ -#define PDC_REQ_ERR_1		  2	/* See above			 */ -#define PDC_REQ_ERR_0		  1	/* Call would generate a requestor error */ -#define PDC_OK			  0	/* Call completed successfully	*/ -#define PDC_BAD_PROC		 -1	/* Called non-existent procedure*/ -#define PDC_BAD_OPTION		 -2	/* Called with non-existent option */ -#define PDC_ERROR		 -3	/* Call could not complete without an error */ -#define PDC_NE_MOD		 -5	/* Module not found		*/ -#define PDC_NE_CELL_MOD		 -7	/* Cell module not found	*/ -#define PDC_INVALID_ARG		-10	/* Called with an invalid argument */ -#define PDC_BUS_POW_WARN	-12	/* Call could not complete in allowed power budget */ -#define PDC_NOT_NARROW		-17	/* Narrow mode not supported	*/ - -/* - *	PDC entry points... - */ - -#define PDC_POW_FAIL	1		/* perform a power-fail		*/ -#define PDC_POW_FAIL_PREPARE	0	/* prepare for powerfail	*/ - -#define PDC_CHASSIS	2		/* PDC-chassis functions	*/ -#define PDC_CHASSIS_DISP	0	/* update chassis display	*/ -#define PDC_CHASSIS_WARN	1	/* return chassis warnings	*/ -#define PDC_CHASSIS_DISPWARN	2	/* update&return chassis status */ -#define PDC_RETURN_CHASSIS_INFO 128	/* HVERSION dependent: return chassis LED/LCD info  */ - -#define PDC_PIM         3               /* Get PIM data                 */ -#define PDC_PIM_HPMC            0       /* Transfer HPMC data           */ -#define PDC_PIM_RETURN_SIZE     1       /* Get Max buffer needed for PIM*/ -#define PDC_PIM_LPMC            2       /* Transfer HPMC data           */ -#define PDC_PIM_SOFT_BOOT       3       /* Transfer Soft Boot data      */ -#define PDC_PIM_TOC             4       /* Transfer TOC data            */ - -#define PDC_MODEL	4		/* PDC model information call	*/ -#define PDC_MODEL_INFO		0	/* returns information 		*/ -#define PDC_MODEL_BOOTID	1	/* set the BOOT_ID		*/ -#define PDC_MODEL_VERSIONS	2	/* returns cpu-internal versions*/ -#define PDC_MODEL_SYSMODEL	3	/* return system model info	*/ -#define PDC_MODEL_ENSPEC	4	/* enable specific option	*/ -#define PDC_MODEL_DISPEC	5	/* disable specific option	*/ -#define PDC_MODEL_CPU_ID	6	/* returns cpu-id (only newer machines!) */ -#define PDC_MODEL_CAPABILITIES	7	/* returns OS32/OS64-flags	*/ -/* Values for PDC_MODEL_CAPABILITIES non-equivalent virtual aliasing support */ -#define  PDC_MODEL_OS64			(1 << 0) -#define  PDC_MODEL_OS32			(1 << 1) -#define  PDC_MODEL_IOPDIR_FDC		(1 << 2) -#define  PDC_MODEL_NVA_MASK		(3 << 4) -#define  PDC_MODEL_NVA_SUPPORTED	(0 << 4) -#define  PDC_MODEL_NVA_SLOW		(1 << 4) -#define  PDC_MODEL_NVA_UNSUPPORTED	(3 << 4) -#define PDC_MODEL_GET_BOOT__OP	8	/* returns boot test options	*/ -#define PDC_MODEL_SET_BOOT__OP	9	/* set boot test options	*/ - -#define PA89_INSTRUCTION_SET	0x4	/* capatibilies returned	*/ -#define PA90_INSTRUCTION_SET	0x8 - -#define PDC_CACHE	5		/* return/set cache (& TLB) info*/ -#define PDC_CACHE_INFO		0	/* returns information 		*/ -#define PDC_CACHE_SET_COH	1	/* set coherence state		*/ -#define PDC_CACHE_RET_SPID	2	/* returns space-ID bits	*/ - -#define PDC_HPA		6		/* return HPA of processor	*/ -#define PDC_HPA_PROCESSOR	0 -#define PDC_HPA_MODULES		1 - -#define PDC_COPROC	7		/* Co-Processor (usually FP unit(s)) */ -#define PDC_COPROC_CFG		0	/* Co-Processor Cfg (FP unit(s) enabled?) */ - -#define PDC_IODC	8		/* talk to IODC			*/ -#define PDC_IODC_READ		0	/* read IODC entry point	*/ -/*      PDC_IODC_RI_			 * INDEX parameter of PDC_IODC_READ */ -#define PDC_IODC_RI_DATA_BYTES	0	/* IODC Data Bytes		*/ -/*				1, 2	   obsolete - HVERSION dependent*/ -#define PDC_IODC_RI_INIT	3	/* Initialize module		*/ -#define PDC_IODC_RI_IO		4	/* Module input/output		*/ -#define PDC_IODC_RI_SPA		5	/* Module input/output		*/ -#define PDC_IODC_RI_CONFIG	6	/* Module input/output		*/ -/*				7	  obsolete - HVERSION dependent */ -#define PDC_IODC_RI_TEST	8	/* Module input/output		*/ -#define PDC_IODC_RI_TLB		9	/* Module input/output		*/ -#define PDC_IODC_NINIT		2	/* non-destructive init		*/ -#define PDC_IODC_DINIT		3	/* destructive init		*/ -#define PDC_IODC_MEMERR		4	/* check for memory errors	*/ -#define PDC_IODC_INDEX_DATA	0	/* get first 16 bytes from mod IODC */ -#define PDC_IODC_BUS_ERROR	-4	/* bus error return value	*/ -#define PDC_IODC_INVALID_INDEX	-5	/* invalid index return value	*/ -#define PDC_IODC_COUNT		-6	/* count is too small		*/ - -#define PDC_TOD		9		/* time-of-day clock (TOD)	*/ -#define PDC_TOD_READ		0	/* read TOD			*/ -#define PDC_TOD_WRITE		1	/* write TOD			*/ - - -#define PDC_STABLE	10		/* stable storage (sprockets)	*/ -#define PDC_STABLE_READ		0 -#define PDC_STABLE_WRITE	1 -#define PDC_STABLE_RETURN_SIZE	2 -#define PDC_STABLE_VERIFY_CONTENTS 3 -#define PDC_STABLE_INITIALIZE	4 - -#define PDC_NVOLATILE	11		/* often not implemented	*/ - -#define PDC_ADD_VALID	12		/* Memory validation PDC call	*/ -#define PDC_ADD_VALID_VERIFY	0	/* Make PDC_ADD_VALID verify region */ - -#define PDC_INSTR	15		/* get instr to invoke PDCE_CHECK() */ - -#define PDC_PROC	16		/* (sprockets)			*/ - -#define PDC_CONFIG	16		/* (sprockets)			*/ -#define PDC_CONFIG_DECONFIG	0 -#define PDC_CONFIG_DRECONFIG	1 -#define PDC_CONFIG_DRETURN_CONFIG 2 - -#define PDC_BLOCK_TLB	18		/* manage hardware block-TLB	*/ -#define PDC_BTLB_INFO		0	/* returns parameter 		*/ -#define PDC_BTLB_INSERT		1	/* insert BTLB entry		*/ -#define PDC_BTLB_PURGE		2	/* purge BTLB entries 		*/ -#define PDC_BTLB_PURGE_ALL	3	/* purge all BTLB entries 	*/ - -#define PDC_TLB		19		/* manage hardware TLB miss handling */ -#define PDC_TLB_INFO		0	/* returns parameter 		*/ -#define PDC_TLB_SETUP		1	/* set up miss handling 	*/ - -#define PDC_MEM		20		/* Manage memory		*/ -#define PDC_MEM_MEMINFO		0 -#define PDC_MEM_ADD_PAGE	1 -#define PDC_MEM_CLEAR_PDT	2 -#define PDC_MEM_READ_PDT	3 -#define PDC_MEM_RESET_CLEAR	4 -#define PDC_MEM_GOODMEM		5 -#define PDC_MEM_TABLE		128	/* Non contig mem map (sprockets) */ -#define PDC_MEM_RETURN_ADDRESS_TABLE	PDC_MEM_TABLE -#define PDC_MEM_GET_MEMORY_SYSTEM_TABLES_SIZE	131 -#define PDC_MEM_GET_MEMORY_SYSTEM_TABLES	132 -#define PDC_MEM_GET_PHYSICAL_LOCATION_FROM_MEMORY_ADDRESS 133 - -#define PDC_MEM_RET_SBE_REPLACED	5	/* PDC_MEM return values */ -#define PDC_MEM_RET_DUPLICATE_ENTRY	4 -#define PDC_MEM_RET_BUF_SIZE_SMALL	1 -#define PDC_MEM_RET_PDT_FULL		-11 -#define PDC_MEM_RET_INVALID_PHYSICAL_LOCATION ~0ULL - -#define PDC_PSW		21		/* Get/Set default System Mask  */ -#define PDC_PSW_MASK		0	/* Return mask                  */ -#define PDC_PSW_GET_DEFAULTS	1	/* Return defaults              */ -#define PDC_PSW_SET_DEFAULTS	2	/* Set default                  */ -#define PDC_PSW_ENDIAN_BIT	1	/* set for big endian           */ -#define PDC_PSW_WIDE_BIT	2	/* set for wide mode            */  - -#define PDC_SYSTEM_MAP	22		/* find system modules		*/ -#define PDC_FIND_MODULE 	0 -#define PDC_FIND_ADDRESS	1 -#define PDC_TRANSLATE_PATH	2 - -#define PDC_SOFT_POWER	23		/* soft power switch		*/ -#define PDC_SOFT_POWER_INFO	0	/* return info about the soft power switch */ -#define PDC_SOFT_POWER_ENABLE	1	/* enable/disable soft power switch */ - - -/* HVERSION dependent */ - -/* The PDC_MEM_MAP calls */ -#define PDC_MEM_MAP	128		/* on s700: return page info	*/ -#define PDC_MEM_MAP_HPA		0	/* returns hpa of a module	*/ - -#define PDC_EEPROM	129		/* EEPROM access		*/ -#define PDC_EEPROM_READ_WORD	0 -#define PDC_EEPROM_WRITE_WORD	1 -#define PDC_EEPROM_READ_BYTE	2 -#define PDC_EEPROM_WRITE_BYTE	3 -#define PDC_EEPROM_EEPROM_PASSWORD -1000 - -#define PDC_NVM		130		/* NVM (non-volatile memory) access */ -#define PDC_NVM_READ_WORD	0 -#define PDC_NVM_WRITE_WORD	1 -#define PDC_NVM_READ_BYTE	2 -#define PDC_NVM_WRITE_BYTE	3 - -#define PDC_SEED_ERROR	132		/* (sprockets)			*/ - -#define PDC_IO		135		/* log error info, reset IO system */ -#define PDC_IO_READ_AND_CLEAR_ERRORS	0 -#define PDC_IO_RESET			1 -#define PDC_IO_RESET_DEVICES		2 -/* sets bits 6&7 (little endian) of the HcControl Register */ -#define PDC_IO_USB_SUSPEND	0xC000000000000000 -#define PDC_IO_EEPROM_IO_ERR_TABLE_FULL	-5	/* return value */ -#define PDC_IO_NO_SUSPEND		-6	/* return value */ - -#define PDC_BROADCAST_RESET 136		/* reset all processors		*/ -#define PDC_DO_RESET		0	/* option: perform a broadcast reset */ -#define PDC_DO_FIRM_TEST_RESET	1	/* Do broadcast reset with bitmap */ -#define PDC_BR_RECONFIGURATION	2	/* reset w/reconfiguration	*/ -#define PDC_FIRM_TEST_MAGIC	0xab9ec36fUL    /* for this reboot only	*/ - -#define PDC_LAN_STATION_ID 138		/* Hversion dependent mechanism for */ -#define PDC_LAN_STATION_ID_READ	0	/* getting the lan station address  */ - -#define	PDC_LAN_STATION_ID_SIZE	6 - -#define PDC_CHECK_RANGES 139		/* (sprockets)			*/ - -#define PDC_NV_SECTIONS	141		/* (sprockets)			*/ - -#define PDC_PERFORMANCE	142		/* performance monitoring	*/ - -#define PDC_SYSTEM_INFO	143		/* system information		*/ -#define PDC_SYSINFO_RETURN_INFO_SIZE	0 -#define PDC_SYSINFO_RRETURN_SYS_INFO	1 -#define PDC_SYSINFO_RRETURN_ERRORS	2 -#define PDC_SYSINFO_RRETURN_WARNINGS	3 -#define PDC_SYSINFO_RETURN_REVISIONS	4 -#define PDC_SYSINFO_RRETURN_DIAGNOSE	5 -#define PDC_SYSINFO_RRETURN_HV_DIAGNOSE	1005 - -#define PDC_RDR		144		/* (sprockets)			*/ -#define PDC_RDR_READ_BUFFER	0 -#define PDC_RDR_READ_SINGLE	1 -#define PDC_RDR_WRITE_SINGLE	2 - -#define PDC_INTRIGUE	145 		/* (sprockets)			*/ -#define PDC_INTRIGUE_WRITE_BUFFER 	 0 -#define PDC_INTRIGUE_GET_SCRATCH_BUFSIZE 1 -#define PDC_INTRIGUE_START_CPU_COUNTERS	 2 -#define PDC_INTRIGUE_STOP_CPU_COUNTERS	 3 - -#define PDC_STI		146 		/* STI access			*/ -/* same as PDC_PCI_XXX values (see below) */ - -/* Legacy PDC definitions for same stuff */ -#define PDC_PCI_INDEX	147 -#define PDC_PCI_INTERFACE_INFO		0 -#define PDC_PCI_SLOT_INFO		1 -#define PDC_PCI_INFLIGHT_BYTES		2 -#define PDC_PCI_READ_CONFIG		3 -#define PDC_PCI_WRITE_CONFIG		4 -#define PDC_PCI_READ_PCI_IO		5 -#define PDC_PCI_WRITE_PCI_IO		6 -#define PDC_PCI_READ_CONFIG_DELAY	7 -#define PDC_PCI_UPDATE_CONFIG_DELAY	8 -#define PDC_PCI_PCI_PATH_TO_PCI_HPA	9 -#define PDC_PCI_PCI_HPA_TO_PCI_PATH	10 -#define PDC_PCI_PCI_PATH_TO_PCI_BUS	11 -#define PDC_PCI_PCI_RESERVED		12 -#define PDC_PCI_PCI_INT_ROUTE_SIZE	13 -#define PDC_PCI_GET_INT_TBL_SIZE	PDC_PCI_PCI_INT_ROUTE_SIZE -#define PDC_PCI_PCI_INT_ROUTE		14 -#define PDC_PCI_GET_INT_TBL		PDC_PCI_PCI_INT_ROUTE  -#define PDC_PCI_READ_MON_TYPE		15 -#define PDC_PCI_WRITE_MON_TYPE		16 - - -/* Get SCSI Interface Card info:  SDTR, SCSI ID, mode (SE vs LVD) */ -#define PDC_INITIATOR	163 -#define PDC_GET_INITIATOR	0 -#define PDC_SET_INITIATOR	1 -#define PDC_DELETE_INITIATOR	2 -#define PDC_RETURN_TABLE_SIZE	3 -#define PDC_RETURN_TABLE	4 - -#define PDC_LINK	165 		/* (sprockets)			*/ -#define PDC_LINK_PCI_ENTRY_POINTS	0  /* list (Arg1) = 0 */ -#define PDC_LINK_USB_ENTRY_POINTS	1  /* list (Arg1) = 1 */ - -/* cl_class - * page 3-33 of IO-Firmware ARS - * IODC ENTRY_INIT(Search first) RET[1] - */ -#define	CL_NULL		0	/* invalid */ -#define	CL_RANDOM	1	/* random access (as disk) */ -#define	CL_SEQU		2	/* sequential access (as tape) */ -#define	CL_DUPLEX	7	/* full-duplex point-to-point (RS-232, Net) */ -#define	CL_KEYBD	8	/* half-duplex console (HIL Keyboard) */ -#define	CL_DISPL	9	/* half-duplex console (display) */ -#define	CL_FC		10	/* FiberChannel access media */ - -/* IODC ENTRY_INIT() */ -#define ENTRY_INIT_SRCH_FRST	2 -#define ENTRY_INIT_SRCH_NEXT	3 -#define ENTRY_INIT_MOD_DEV	4 -#define ENTRY_INIT_DEV		5 -#define ENTRY_INIT_MOD		6 -#define ENTRY_INIT_MSG		9 - -/* IODC ENTRY_IO() */ -#define ENTRY_IO_BOOTIN		0 -#define ENTRY_IO_BOOTOUT	1 -#define ENTRY_IO_CIN		2 -#define ENTRY_IO_COUT		3 -#define ENTRY_IO_CLOSE		4 -#define ENTRY_IO_GETMSG		9 -#define ENTRY_IO_BBLOCK_IN	16 -#define ENTRY_IO_BBLOCK_OUT	17 - -/* IODC ENTRY_SPA() */ - -/* IODC ENTRY_CONFIG() */ - -/* IODC ENTRY_TEST() */ - -/* IODC ENTRY_TLB() */ - -/* constants for OS (NVM...) */ -#define OS_ID_NONE		0	/* Undefined OS ID	*/ -#define OS_ID_HPUX		1	/* HP-UX OS		*/ -#define OS_ID_MPEXL		2	/* MPE XL OS		*/ -#define OS_ID_OSF		3	/* OSF OS		*/ -#define OS_ID_HPRT		4	/* HP-RT OS		*/ -#define OS_ID_NOVEL		5	/* NOVELL OS		*/ -#define OS_ID_LINUX		6	/* Linux		*/ - - -/* constants for PDC_CHASSIS */ -#define OSTAT_OFF		0 -#define OSTAT_FLT		1  -#define OSTAT_TEST		2 -#define OSTAT_INIT		3 -#define OSTAT_SHUT		4 -#define OSTAT_WARN		5 -#define OSTAT_RUN		6 -#define OSTAT_ON		7 - -/* Page Zero constant offsets used by the HPMC handler */ -#define BOOT_CONSOLE_HPA_OFFSET  0x3c0 -#define BOOT_CONSOLE_SPA_OFFSET  0x3c4 -#define BOOT_CONSOLE_PATH_OFFSET 0x3a8 - -/* size of the pdc_result buffer for firmware.c */ -#define NUM_PDC_RESULT	32 +#include <uapi/asm/pdc.h>  #if !defined(__ASSEMBLY__) -#include <linux/types.h> - -#ifdef __KERNEL__ - -#include <asm/page.h> /* for __PAGE_OFFSET */ -  extern int pdc_type;  /* Values for pdc_type */ @@ -675,93 +335,5 @@ static inline char * os_id_to_string(u16 os_id) {  	}  } -#endif /* __KERNEL__ */ - -#define PAGE0   ((struct zeropage *)__PAGE_OFFSET) - -/* DEFINITION OF THE ZERO-PAGE (PAG0) */ -/* based on work by Jason Eckhardt (jason@equator.com) */ - -/* flags of the device_path */ -#define	PF_AUTOBOOT	0x80 -#define	PF_AUTOSEARCH	0x40 -#define	PF_TIMER	0x0F - -struct device_path {		/* page 1-69 */ -	unsigned char flags;	/* flags see above! */ -	unsigned char bc[6];	/* bus converter routing info */ -	unsigned char mod; -	unsigned int  layers[6];/* device-specific layer-info */ -} __attribute__((aligned(8))) ; - -struct pz_device { -	struct	device_path dp;	/* see above */ -	/* struct	iomod *hpa; */ -	unsigned int hpa;	/* HPA base address */ -	/* char	*spa; */ -	unsigned int spa;	/* SPA base address */ -	/* int	(*iodc_io)(struct iomod*, ...); */ -	unsigned int iodc_io;	/* device entry point */ -	short	pad;		/* reserved */ -	unsigned short cl_class;/* see below */ -} __attribute__((aligned(8))) ; - -struct zeropage { -	/* [0x000] initialize vectors (VEC) */ -	unsigned int	vec_special;		/* must be zero */ -	/* int	(*vec_pow_fail)(void);*/ -	unsigned int	vec_pow_fail; /* power failure handler */ -	/* int	(*vec_toc)(void); */ -	unsigned int	vec_toc; -	unsigned int	vec_toclen; -	/* int	(*vec_rendz)(void); */ -	unsigned int vec_rendz; -	int	vec_pow_fail_flen; -	int	vec_pad[10];		 -	 -	/* [0x040] reserved processor dependent */ -	int	pad0[112]; - -	/* [0x200] reserved */ -	int	pad1[84]; - -	/* [0x350] memory configuration (MC) */ -	int	memc_cont;		/* contiguous mem size (bytes) */ -	int	memc_phsize;		/* physical memory size */ -	int	memc_adsize;		/* additional mem size, bytes of SPA space used by PDC */ -	unsigned int mem_pdc_hi;	/* used for 64-bit */ - -	/* [0x360] various parameters for the boot-CPU */ -	/* unsigned int *mem_booterr[8]; */ -	unsigned int mem_booterr[8];	/* ptr to boot errors */ -	unsigned int mem_free;		/* first location, where OS can be loaded */ -	/* struct iomod *mem_hpa; */ -	unsigned int mem_hpa;		/* HPA of the boot-CPU */ -	/* int (*mem_pdc)(int, ...); */ -	unsigned int mem_pdc;		/* PDC entry point */ -	unsigned int mem_10msec;	/* number of clock ticks in 10msec */ - -	/* [0x390] initial memory module (IMM) */ -	/* struct iomod *imm_hpa; */ -	unsigned int imm_hpa;		/* HPA of the IMM */ -	int	imm_soft_boot;		/* 0 = was hard boot, 1 = was soft boot */ -	unsigned int	imm_spa_size;		/* SPA size of the IMM in bytes */ -	unsigned int	imm_max_mem;		/* bytes of mem in IMM */ - -	/* [0x3A0] boot console, display device and keyboard */ -	struct pz_device mem_cons;	/* description of console device */ -	struct pz_device mem_boot;	/* description of boot device */ -	struct pz_device mem_kbd;	/* description of keyboard device */ - -	/* [0x430] reserved */ -	int	pad430[116]; - -	/* [0x600] processor dependent */ -	__u32	pad600[1]; -	__u32	proc_sti;		/* pointer to STI ROM */ -	__u32	pad608[126]; -}; -  #endif /* !defined(__ASSEMBLY__) */ -  #endif /* _PARISC_PDC_H */ diff --git a/arch/parisc/include/asm/percpu.h b/arch/parisc/include/asm/percpu.h deleted file mode 100644 index a0dcd197012..00000000000 --- a/arch/parisc/include/asm/percpu.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _PARISC_PERCPU_H -#define _PARISC_PERCPU_H - -#include <asm-generic/percpu.h> - -#endif  - diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h index fc987a1c12a..f213f5b4c42 100644 --- a/arch/parisc/include/asm/pgalloc.h +++ b/arch/parisc/include/asm/pgalloc.h @@ -121,8 +121,12 @@ static inline pgtable_t  pte_alloc_one(struct mm_struct *mm, unsigned long address)  {  	struct page *page = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); -	if (page) -		pgtable_page_ctor(page); +	if (!page) +		return NULL; +	if (!pgtable_page_ctor(page)) { +		__free_page(page); +		return NULL; +	}  	return page;  } diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index 865f37a8a88..22b89d1edba 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h @@ -10,11 +10,14 @@   * we simulate an x86-style page table for the linux mm code   */ -#include <linux/mm.h>		/* for vm_area_struct */  #include <linux/bitops.h> +#include <linux/spinlock.h> +#include <linux/mm_types.h>  #include <asm/processor.h>  #include <asm/cache.h> +extern spinlock_t pa_dbit_lock; +  /*   * kern_addr_valid(ADDR) tests if ADDR is pointing to valid kernel   * memory.  For the return value to be meaningful, ADDR must be >= @@ -38,10 +41,22 @@          do{                                                     \                  *(pteptr) = (pteval);                           \          } while(0) -#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) + +extern void purge_tlb_entries(struct mm_struct *, unsigned long); + +#define set_pte_at(mm, addr, ptep, pteval)                      \ +	do {                                                    \ +		unsigned long flags;				\ +		spin_lock_irqsave(&pa_dbit_lock, flags);	\ +		set_pte(ptep, pteval);                          \ +		purge_tlb_entries(mm, addr);                    \ +		spin_unlock_irqrestore(&pa_dbit_lock, flags);	\ +	} while (0)  #endif /* !__ASSEMBLY__ */ +#include <asm/page.h> +  #define pte_ERROR(e) \  	printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))  #define pmd_ERROR(e) \ @@ -136,8 +151,7 @@  #define _PAGE_NO_CACHE_BIT 24   /* (0x080) Uncached Page (U bit) */  #define _PAGE_ACCESSED_BIT 23   /* (0x100) Software: Page Accessed */  #define _PAGE_PRESENT_BIT  22   /* (0x200) Software: translation valid */ -#define _PAGE_FLUSH_BIT    21   /* (0x400) Software: translation valid */ -				/*             for cache flushing only */ +/* bit 21 was formerly the FLUSH bit but is now unused */  #define _PAGE_USER_BIT     20   /* (0x800) Software: User accessible page */  /* N.B. The bits are defined in terms of a 32 bit word above, so the */ @@ -171,13 +185,15 @@  #define _PAGE_NO_CACHE (1 << xlate_pabit(_PAGE_NO_CACHE_BIT))  #define _PAGE_ACCESSED (1 << xlate_pabit(_PAGE_ACCESSED_BIT))  #define _PAGE_PRESENT  (1 << xlate_pabit(_PAGE_PRESENT_BIT)) -#define _PAGE_FLUSH    (1 << xlate_pabit(_PAGE_FLUSH_BIT))  #define _PAGE_USER     (1 << xlate_pabit(_PAGE_USER_BIT))  #define _PAGE_FILE     (1 << xlate_pabit(_PAGE_FILE_BIT))  #define _PAGE_TABLE	(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE |  _PAGE_DIRTY | _PAGE_ACCESSED)  #define _PAGE_CHG_MASK	(PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) -#define _PAGE_KERNEL	(_PAGE_PRESENT | _PAGE_EXEC | _PAGE_READ | _PAGE_WRITE | _PAGE_DIRTY | _PAGE_ACCESSED) +#define _PAGE_KERNEL_RO	(_PAGE_PRESENT | _PAGE_READ | _PAGE_DIRTY | _PAGE_ACCESSED) +#define _PAGE_KERNEL_EXEC	(_PAGE_KERNEL_RO | _PAGE_EXEC) +#define _PAGE_KERNEL_RWX	(_PAGE_KERNEL_EXEC | _PAGE_WRITE) +#define _PAGE_KERNEL		(_PAGE_KERNEL_RO | _PAGE_WRITE)  /* The pgd/pmd contains a ptr (in phys addr space); since all pgds/pmds   * are page-aligned, we don't care about the PAGE_OFFSET bits, except @@ -208,10 +224,11 @@  #define PAGE_COPY       PAGE_EXECREAD  #define PAGE_RWX        __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_READ | _PAGE_WRITE | _PAGE_EXEC |_PAGE_ACCESSED)  #define PAGE_KERNEL	__pgprot(_PAGE_KERNEL) -#define PAGE_KERNEL_RO	__pgprot(_PAGE_KERNEL & ~_PAGE_WRITE) +#define PAGE_KERNEL_EXEC	__pgprot(_PAGE_KERNEL_EXEC) +#define PAGE_KERNEL_RWX	__pgprot(_PAGE_KERNEL_RWX) +#define PAGE_KERNEL_RO	__pgprot(_PAGE_KERNEL_RO)  #define PAGE_KERNEL_UNC	__pgprot(_PAGE_KERNEL | _PAGE_NO_CACHE)  #define PAGE_GATEWAY    __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_GATEWAY| _PAGE_READ) -#define PAGE_FLUSH      __pgprot(_PAGE_FLUSH)  /* @@ -259,7 +276,7 @@ extern unsigned long *empty_zero_page;  #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) -#define pte_none(x)     ((pte_val(x) == 0) || (pte_val(x) & _PAGE_FLUSH)) +#define pte_none(x)     (pte_val(x) == 0)  #define pte_present(x)	(pte_val(x) & _PAGE_PRESENT)  #define pte_clear(mm,addr,xp)	do { pte_val(*(xp)) = 0; } while (0) @@ -423,50 +440,46 @@ extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *);  static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)  { -#ifdef CONFIG_SMP +	pte_t pte; +	unsigned long flags; +  	if (!pte_young(*ptep))  		return 0; -	return test_and_clear_bit(xlate_pabit(_PAGE_ACCESSED_BIT), &pte_val(*ptep)); -#else -	pte_t pte = *ptep; -	if (!pte_young(pte)) + +	spin_lock_irqsave(&pa_dbit_lock, flags); +	pte = *ptep; +	if (!pte_young(pte)) { +		spin_unlock_irqrestore(&pa_dbit_lock, flags);  		return 0; -	set_pte_at(vma->vm_mm, addr, ptep, pte_mkold(pte)); +	} +	set_pte(ptep, pte_mkold(pte)); +	purge_tlb_entries(vma->vm_mm, addr); +	spin_unlock_irqrestore(&pa_dbit_lock, flags);  	return 1; -#endif  } -extern spinlock_t pa_dbit_lock; -  struct mm_struct;  static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)  {  	pte_t old_pte; -	pte_t pte; +	unsigned long flags; -	spin_lock(&pa_dbit_lock); -	pte = old_pte = *ptep; -	pte_val(pte) &= ~_PAGE_PRESENT; -	pte_val(pte) |= _PAGE_FLUSH; -	set_pte_at(mm,addr,ptep,pte); -	spin_unlock(&pa_dbit_lock); +	spin_lock_irqsave(&pa_dbit_lock, flags); +	old_pte = *ptep; +	pte_clear(mm,addr,ptep); +	purge_tlb_entries(mm, addr); +	spin_unlock_irqrestore(&pa_dbit_lock, flags);  	return old_pte;  }  static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)  { -#ifdef CONFIG_SMP -	unsigned long new, old; - -	do { -		old = pte_val(*ptep); -		new = pte_val(pte_wrprotect(__pte (old))); -	} while (cmpxchg((unsigned long *) ptep, old, new) != old); -#else -	pte_t old_pte = *ptep; -	set_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); -#endif +	unsigned long flags; +	spin_lock_irqsave(&pa_dbit_lock, flags); +	set_pte(ptep, pte_wrprotect(*ptep)); +	purge_tlb_entries(mm, addr); +	spin_unlock_irqrestore(&pa_dbit_lock, flags);  }  #define pte_same(A,B)	(pte_val(A) == pte_val(B)) @@ -493,14 +506,12 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr,  #endif -#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)		\ -		remap_pfn_range(vma, vaddr, pfn, size, prot) -  #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_NO_CACHE)  /* We provide our own get_unmapped_area to provide cache coherency */  #define HAVE_ARCH_UNMAPPED_AREA +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN  #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG  #define __HAVE_ARCH_PTEP_GET_AND_CLEAR diff --git a/arch/parisc/include/asm/poll.h b/arch/parisc/include/asm/poll.h deleted file mode 100644 index c98509d3149..00000000000 --- a/arch/parisc/include/asm/poll.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/poll.h> diff --git a/arch/parisc/include/asm/posix_types.h b/arch/parisc/include/asm/posix_types.h deleted file mode 100644 index 00da29a340b..00000000000 --- a/arch/parisc/include/asm/posix_types.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef __ARCH_PARISC_POSIX_TYPES_H -#define __ARCH_PARISC_POSIX_TYPES_H - -/* - * This file is generally used by user-level software, so you need to - * be a little careful about namespace pollution etc.  Also, we cannot - * assume GCC is being used. - */ -typedef unsigned long		__kernel_ino_t; -typedef unsigned short		__kernel_mode_t; -typedef unsigned short		__kernel_nlink_t; -typedef long			__kernel_off_t; -typedef int			__kernel_pid_t; -typedef unsigned short		__kernel_ipc_pid_t; -typedef unsigned int		__kernel_uid_t; -typedef unsigned int		__kernel_gid_t; -typedef int			__kernel_suseconds_t; -typedef long			__kernel_clock_t; -typedef int			__kernel_timer_t; -typedef int			__kernel_clockid_t; -typedef int			__kernel_daddr_t; -/* Note these change from narrow to wide kernels */ -#ifdef CONFIG_64BIT -typedef unsigned long		__kernel_size_t; -typedef long			__kernel_ssize_t; -typedef long			__kernel_ptrdiff_t; -#else -typedef unsigned int		__kernel_size_t; -typedef int			__kernel_ssize_t; -typedef int			__kernel_ptrdiff_t; -#endif -typedef long			__kernel_time_t; -typedef char *			__kernel_caddr_t; - -typedef unsigned short		__kernel_uid16_t; -typedef unsigned short		__kernel_gid16_t; -typedef unsigned int		__kernel_uid32_t; -typedef unsigned int		__kernel_gid32_t; - -#ifdef __GNUC__ -typedef long long		__kernel_loff_t; -typedef long long		__kernel_off64_t; -typedef unsigned long long	__kernel_ino64_t; -#endif - -typedef unsigned int		__kernel_old_dev_t; - -typedef struct { -	int	val[2]; -} __kernel_fsid_t; - -/* compatibility stuff */ -typedef __kernel_uid_t __kernel_old_uid_t; -typedef __kernel_gid_t __kernel_old_gid_t; - -#if defined(__KERNEL__) - -#undef __FD_SET -static __inline__ void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) -{ -	unsigned long __tmp = __fd / __NFDBITS; -	unsigned long __rem = __fd % __NFDBITS; -	__fdsetp->fds_bits[__tmp] |= (1UL<<__rem); -} - -#undef __FD_CLR -static __inline__ void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp) -{ -	unsigned long __tmp = __fd / __NFDBITS; -	unsigned long __rem = __fd % __NFDBITS; -	__fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem); -} - -#undef __FD_ISSET -static __inline__ int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p) -{  -	unsigned long __tmp = __fd / __NFDBITS; -	unsigned long __rem = __fd % __NFDBITS; -	return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0; -} - -/* - * This will unroll the loop for the normal constant case (8 ints, - * for a 256-bit fd_set) - */ -#undef __FD_ZERO -static __inline__ void __FD_ZERO(__kernel_fd_set *__p) -{ -	unsigned long *__tmp = __p->fds_bits; -	int __i; - -	if (__builtin_constant_p(__FDSET_LONGS)) { -		switch (__FDSET_LONGS) { -		case 16: -			__tmp[ 0] = 0; __tmp[ 1] = 0; -			__tmp[ 2] = 0; __tmp[ 3] = 0; -			__tmp[ 4] = 0; __tmp[ 5] = 0; -			__tmp[ 6] = 0; __tmp[ 7] = 0; -			__tmp[ 8] = 0; __tmp[ 9] = 0; -			__tmp[10] = 0; __tmp[11] = 0; -			__tmp[12] = 0; __tmp[13] = 0; -			__tmp[14] = 0; __tmp[15] = 0; -			return; - -		case 8: -			__tmp[ 0] = 0; __tmp[ 1] = 0; -			__tmp[ 2] = 0; __tmp[ 3] = 0; -			__tmp[ 4] = 0; __tmp[ 5] = 0; -			__tmp[ 6] = 0; __tmp[ 7] = 0; -			return; - -		case 4: -			__tmp[ 0] = 0; __tmp[ 1] = 0; -			__tmp[ 2] = 0; __tmp[ 3] = 0; -			return; -		} -	} -	__i = __FDSET_LONGS; -	while (__i) { -		__i--; -		*__tmp = 0; -		__tmp++; -	} -} - -#endif /* defined(__KERNEL__) */ - -#endif diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h index c5edc60c059..1ee7c82672c 100644 --- a/arch/parisc/include/asm/prefetch.h +++ b/arch/parisc/include/asm/prefetch.h @@ -21,7 +21,12 @@  #define ARCH_HAS_PREFETCH  static inline void prefetch(const void *addr)  { -	__asm__("ldw 0(%0), %%r0" : : "r" (addr)); +	__asm__( +#ifndef CONFIG_PA20 +		/* Need to avoid prefetch of NULL on PA7300LC */ +		"	extrw,u,= %0,31,32,%%r0\n" +#endif +		"	ldw 0(%0), %%r0" : : "r" (addr));  }  /* LDD is a PA2.0 addition. */ diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index 9ce66e9d1c2..d951c9681ab 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h @@ -16,13 +16,9 @@  #include <asm/pdc.h>  #include <asm/ptrace.h>  #include <asm/types.h> -#include <asm/system.h>  #include <asm/percpu.h> -  #endif /* __ASSEMBLY__ */ -#define KERNEL_STACK_SIZE 	(4*PAGE_SIZE) -  /*   * Default implementation of macro that returns current   * instruction pointer ("program counter"). @@ -34,6 +30,8 @@  #endif  #define current_text_addr() ({ void *pc; current_ia(pc); pc; }) +#define HAVE_ARCH_PICK_MMAP_LAYOUT +  #define TASK_SIZE_OF(tsk)       ((tsk)->thread.task_size)  #define TASK_SIZE	        TASK_SIZE_OF(current)  #define TASK_UNMAPPED_BASE      (current->thread.map_base) @@ -57,6 +55,11 @@  #define STACK_TOP	TASK_SIZE  #define STACK_TOP_MAX	DEFAULT_TASK_SIZE +/* Allow bigger stacks for 64-bit processes */ +#define STACK_SIZE_MAX	(USER_WIDE_MODE					\ +			 ? (1 << 30)	/* 1 GB */			\ +			 : (CONFIG_MAX_STACK_SIZE_MB*1024*1024)) +  #endif  #ifndef __ASSEMBLY__ @@ -98,7 +101,6 @@ struct cpuinfo_parisc {  	unsigned long txn_addr;     /* MMIO addr of EIR or id_eid */  #ifdef CONFIG_SMP  	unsigned long pending_ipi;  /* bitmap of type ipi_message_type */ -	unsigned long ipi_count;    /* number ipi Interrupts */  #endif  	unsigned long bh_count;     /* number of times bh was invoked */  	unsigned long prof_counter; /* per CPU profiling support */ @@ -169,6 +171,7 @@ struct thread_struct {   * Return saved PC of a blocked thread.  This is used by ps mostly.   */ +struct task_struct;  unsigned long thread_saved_pc(struct task_struct *t);  void show_trace(struct task_struct *task, unsigned long *stack); @@ -196,7 +199,6 @@ typedef unsigned int elf_caddr_t;  	/* offset pc for priv. level */			\  	pc |= 3;					\  							\ -	set_fs(USER_DS);				\  	regs->iasq[0] = spaceid;			\  	regs->iasq[1] = spaceid;			\  	regs->iaoq[0] = pc;				\ @@ -299,7 +301,6 @@ on downward growing arches, it looks like this:  	elf_addr_t pc = (elf_addr_t)new_pc | 3;		\  	elf_caddr_t *argv = (elf_caddr_t *)bprm->exec + 1;	\  							\ -	set_fs(USER_DS);				\  	regs->iasq[0] = spaceid;			\  	regs->iasq[1] = spaceid;			\  	regs->iaoq[0] = pc;				\ @@ -328,10 +329,6 @@ struct mm_struct;  /* Free all resources held by a thread. */  extern void release_thread(struct task_struct *); -extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); - -/* Prepare to copy thread state - unlazy all lazy status */ -#define prepare_to_copy(tsk)	do { } while (0)  extern void map_hpux_gateway_page(struct task_struct *tsk, struct mm_struct *mm); diff --git a/arch/parisc/include/asm/psw.h b/arch/parisc/include/asm/psw.h index 5a3e23c9ce6..ad69a35e9c0 100644 --- a/arch/parisc/include/asm/psw.h +++ b/arch/parisc/include/asm/psw.h @@ -59,4 +59,45 @@  #define USER_PSW_MASK (WIDE_PSW | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB)  #define USER_PSW      (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I) +#ifndef __ASSEMBLY__ + +/* The program status word as bitfields.  */ +struct pa_psw { +	unsigned int y:1; +	unsigned int z:1; +	unsigned int rv:2; +	unsigned int w:1; +	unsigned int e:1; +	unsigned int s:1; +	unsigned int t:1; + +	unsigned int h:1; +	unsigned int l:1; +	unsigned int n:1; +	unsigned int x:1; +	unsigned int b:1; +	unsigned int c:1; +	unsigned int v:1; +	unsigned int m:1; + +	unsigned int cb:8; + +	unsigned int o:1; +	unsigned int g:1; +	unsigned int f:1; +	unsigned int r:1; +	unsigned int q:1; +	unsigned int p:1; +	unsigned int d:1; +	unsigned int i:1; +}; + +#ifdef CONFIG_64BIT +#define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW + 4)) +#else +#define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW)) +#endif + +#endif /* !__ASSEMBLY__ */ +  #endif diff --git a/arch/parisc/include/asm/ptrace.h b/arch/parisc/include/asm/ptrace.h index 7f09533da77..3c3cb004b7e 100644 --- a/arch/parisc/include/asm/ptrace.h +++ b/arch/parisc/include/asm/ptrace.h @@ -1,49 +1,11 @@ -#ifndef _PARISC_PTRACE_H -#define _PARISC_PTRACE_H -  /* written by Philipp Rumpf, Copyright (C) 1999 SuSE GmbH Nuernberg  ** Copyright (C) 2000 Grant Grundler, Hewlett-Packard  */ +#ifndef _PARISC_PTRACE_H +#define _PARISC_PTRACE_H -#include <linux/types.h> - -/* This struct defines the way the registers are stored on the  - * stack during a system call. - * - * N.B. gdb/strace care about the size and offsets within this - * structure. If you change things, you may break object compatibility - * for those applications. - */ - -struct pt_regs { -	unsigned long gr[32];	/* PSW is in gr[0] */ -	__u64 fr[32]; -	unsigned long sr[ 8]; -	unsigned long iasq[2]; -	unsigned long iaoq[2]; -	unsigned long cr27; -	unsigned long pad0;     /* available for other uses */ -	unsigned long orig_r28; -	unsigned long ksp; -	unsigned long kpc; -	unsigned long sar;	/* CR11 */ -	unsigned long iir;	/* CR19 */ -	unsigned long isr;	/* CR20 */ -	unsigned long ior;	/* CR21 */ -	unsigned long ipsw;	/* CR22 */ -}; - -/* - * The numbers chosen here are somewhat arbitrary but absolutely MUST - * not overlap with any of the number assigned in <linux/ptrace.h>. - * - * These ones are taken from IA-64 on the assumption that theirs are - * the most correct (and we also want to support PTRACE_SINGLEBLOCK - * since we have taken branch traps too) - */ -#define PTRACE_SINGLEBLOCK	12	/* resume execution until next branch */ +#include <uapi/asm/ptrace.h> -#ifdef __KERNEL__  #define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS)) @@ -56,9 +18,10 @@ struct pt_regs {  #define instruction_pointer(regs)	((regs)->iaoq[0] & ~3)  #define user_stack_pointer(regs)	((regs)->gr[30])  unsigned long profile_pc(struct pt_regs *); -extern void show_regs(struct pt_regs *); - -#endif /* __KERNEL__ */ +static inline unsigned long regs_return_value(struct pt_regs *regs) +{ +	return regs->gr[20]; +}  #endif diff --git a/arch/parisc/include/asm/real.h b/arch/parisc/include/asm/real.h deleted file mode 100644 index 82acb25db39..00000000000 --- a/arch/parisc/include/asm/real.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef _PARISC_REAL_H -#define _PARISC_REAL_H - - -#endif diff --git a/arch/parisc/include/asm/resource.h b/arch/parisc/include/asm/resource.h deleted file mode 100644 index 8b06343b62e..00000000000 --- a/arch/parisc/include/asm/resource.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _ASM_PARISC_RESOURCE_H -#define _ASM_PARISC_RESOURCE_H - -#define _STK_LIM_MAX	10 * _STK_LIM -#include <asm-generic/resource.h> - -#endif diff --git a/arch/parisc/include/asm/segment.h b/arch/parisc/include/asm/segment.h deleted file mode 100644 index 26794ddb652..00000000000 --- a/arch/parisc/include/asm/segment.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __PARISC_SEGMENT_H -#define __PARISC_SEGMENT_H - -/* Only here because we have some old header files that expect it.. */ - -#endif diff --git a/arch/parisc/include/asm/serial.h b/arch/parisc/include/asm/serial.h index d7e3cc60dbc..77e9b67c87e 100644 --- a/arch/parisc/include/asm/serial.h +++ b/arch/parisc/include/asm/serial.h @@ -6,5 +6,3 @@   * This is used for 16550-compatible UARTs   */  #define BASE_BAUD ( 1843200 / 16 ) - -#define SERIAL_PORT_DFNS diff --git a/arch/parisc/include/asm/shmparam.h b/arch/parisc/include/asm/shmparam.h index 628ddc22faa..afe1300ab66 100644 --- a/arch/parisc/include/asm/shmparam.h +++ b/arch/parisc/include/asm/shmparam.h @@ -1,8 +1,7 @@  #ifndef _ASMPARISC_SHMPARAM_H  #define _ASMPARISC_SHMPARAM_H -#define __ARCH_FORCE_SHMLBA 	1 - -#define SHMLBA 0x00400000   /* attach addr needs to be 4 Mb aligned */ +#define SHMLBA	   PAGE_SIZE	/* attach addr a multiple of this */ +#define SHM_COLOUR 0x00400000	/* shared mappings colouring */  #endif /* _ASMPARISC_SHMPARAM_H */ diff --git a/arch/parisc/include/asm/signal.h b/arch/parisc/include/asm/signal.h index c20356375d1..81a54577397 100644 --- a/arch/parisc/include/asm/signal.h +++ b/arch/parisc/include/asm/signal.h @@ -1,129 +1,15 @@  #ifndef _ASM_PARISC_SIGNAL_H  #define _ASM_PARISC_SIGNAL_H -#define SIGHUP		 1 -#define SIGINT		 2 -#define SIGQUIT		 3 -#define SIGILL		 4 -#define SIGTRAP		 5 -#define SIGABRT		 6 -#define SIGIOT		 6 -#define SIGEMT		 7 -#define SIGFPE		 8 -#define SIGKILL		 9 -#define SIGBUS		10 -#define SIGSEGV		11 -#define SIGSYS		12 /* Linux doesn't use this */ -#define SIGPIPE		13 -#define SIGALRM		14 -#define SIGTERM		15 -#define SIGUSR1		16 -#define SIGUSR2		17 -#define SIGCHLD		18 -#define SIGPWR		19 -#define SIGVTALRM	20 -#define SIGPROF		21 -#define SIGIO		22 -#define SIGPOLL		SIGIO -#define SIGWINCH	23 -#define SIGSTOP		24 -#define SIGTSTP		25 -#define SIGCONT		26 -#define SIGTTIN		27 -#define SIGTTOU		28 -#define SIGURG		29 -#define SIGLOST		30 /* Linux doesn't use this either */ -#define	SIGUNUSED	31 -#define SIGRESERVE	SIGUNUSED - -#define SIGXCPU		33 -#define SIGXFSZ		34 -#define SIGSTKFLT	36 - -/* These should not be considered constants from userland.  */ -#define SIGRTMIN	37 -#define SIGRTMAX	_NSIG /* it's 44 under HP/UX */ - -/* - * SA_FLAGS values: - * - * SA_ONSTACK indicates that a registered stack_t will be used. - * SA_RESTART flag to get restarting signals (which were the default long ago) - * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. - * SA_RESETHAND clears the handler when the signal is delivered. - * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. - * SA_NODEFER prevents the current signal from being masked in the handler. - * - * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single - * Unix names RESETHAND and NODEFER respectively. - */ -#define SA_ONSTACK	0x00000001 -#define SA_RESETHAND	0x00000004 -#define SA_NOCLDSTOP	0x00000008 -#define SA_SIGINFO	0x00000010 -#define SA_NODEFER	0x00000020 -#define SA_RESTART	0x00000040 -#define SA_NOCLDWAIT	0x00000080 -#define _SA_SIGGFAULT	0x00000100 /* HPUX */ - -#define SA_NOMASK	SA_NODEFER -#define SA_ONESHOT	SA_RESETHAND - -#define SA_RESTORER	0x04000000 /* obsolete -- ignored */ - -/*  - * sigaltstack controls - */ -#define SS_ONSTACK	1 -#define SS_DISABLE	2 - -#define MINSIGSTKSZ	2048 -#define SIGSTKSZ	8192 - -#ifdef __KERNEL__ +#include <uapi/asm/signal.h>  #define _NSIG		64  /* bits-per-word, where word apparently means 'long' not 'int' */  #define _NSIG_BPW	BITS_PER_LONG  #define _NSIG_WORDS	(_NSIG / _NSIG_BPW) -#endif /* __KERNEL__ */ - -#define SIG_BLOCK          0	/* for blocking signals */ -#define SIG_UNBLOCK        1	/* for unblocking signals */ -#define SIG_SETMASK        2	/* for setting the signal mask */ - -#define SIG_DFL	((__sighandler_t)0)	/* default signal handling */ -#define SIG_IGN	((__sighandler_t)1)	/* ignore signal */ -#define SIG_ERR	((__sighandler_t)-1)	/* error return from signal */ -  # ifndef __ASSEMBLY__ -#  include <linux/types.h> - -/* Avoid too many header ordering problems.  */ -struct siginfo; - -/* Type of a signal handler.  */ -#ifdef CONFIG_64BIT -/* function pointers on 64-bit parisc are pointers to little structs and the - * compiler doesn't support code which changes or tests the address of - * the function in the little struct.  This is really ugly -PB - */ -typedef char __user *__sighandler_t; -#else -typedef void __signalfn_t(int); -typedef __signalfn_t __user *__sighandler_t; -#endif - -typedef struct sigaltstack { -	void __user *ss_sp; -	int ss_flags; -	size_t ss_size; -} stack_t; - -#ifdef __KERNEL__ -  /* Most things should be clean enough to redefine this at will, if care     is taken to make libc match.  */ @@ -134,20 +20,15 @@ typedef struct {  	unsigned long sig[_NSIG_WORDS];  } sigset_t; +#ifndef __KERNEL__  struct sigaction {  	__sighandler_t sa_handler;  	unsigned long sa_flags;  	sigset_t sa_mask;		/* mask last for extensibility */  }; - -struct k_sigaction { -	struct sigaction sa; -}; - -#define ptrace_signal_deliver(regs, cookie) do { } while (0) +#endif  #include <asm/sigcontext.h> -#endif /* __KERNEL__ */  #endif /* !__ASSEMBLY */  #endif /* _ASM_PARISC_SIGNAL_H */ diff --git a/arch/parisc/include/asm/smp.h b/arch/parisc/include/asm/smp.h index 2e73623feb6..a5dc9066c6d 100644 --- a/arch/parisc/include/asm/smp.h +++ b/arch/parisc/include/asm/smp.h @@ -25,7 +25,6 @@ typedef unsigned long address_t;  #define cpu_number_map(cpu)	(cpu)  #define cpu_logical_map(cpu)	(cpu) -extern void smp_send_reschedule(int cpu);  extern void smp_send_all_nop(void);  extern void arch_send_call_function_single_ipi(int cpu); @@ -33,15 +32,6 @@ extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);  #endif /* !ASSEMBLY */ -/* - *	This magic constant controls our willingness to transfer - *      a process across CPUs. Such a transfer incurs cache and tlb - *      misses. The current value is inherited from i386. Still needs - *      to be tuned for parisc. - */ -  -#define PROC_CHANGE_PENALTY	15		/* Schedule penalty */ -  #define raw_smp_processor_id()	(current_thread_info()->cpu)  #else /* CONFIG_SMP */ @@ -59,6 +49,5 @@ static inline void __cpu_die (unsigned int cpu) {    while(1)      ;  } -extern int __cpu_up (unsigned int cpu);  #endif /*  __ASM_SMP_H */ diff --git a/arch/parisc/include/asm/socket.h b/arch/parisc/include/asm/socket.h index 225b7d6a1a0..748016cb122 100644 --- a/arch/parisc/include/asm/socket.h +++ b/arch/parisc/include/asm/socket.h @@ -1,69 +1,11 @@  #ifndef _ASM_SOCKET_H  #define _ASM_SOCKET_H -#include <asm/sockios.h> - -/* For setsockopt(2) */ -#define SOL_SOCKET	0xffff - -#define SO_DEBUG	0x0001 -#define SO_REUSEADDR	0x0004 -#define SO_KEEPALIVE	0x0008 -#define SO_DONTROUTE	0x0010 -#define SO_BROADCAST	0x0020 -#define SO_LINGER	0x0080 -#define SO_OOBINLINE	0x0100 -/* To add :#define SO_REUSEPORT 0x0200 */ -#define SO_SNDBUF	0x1001 -#define SO_RCVBUF	0x1002 -#define SO_SNDBUFFORCE	0x100a -#define SO_RCVBUFFORCE	0x100b -#define SO_SNDLOWAT	0x1003 -#define SO_RCVLOWAT	0x1004 -#define SO_SNDTIMEO	0x1005 -#define SO_RCVTIMEO	0x1006 -#define SO_ERROR	0x1007 -#define SO_TYPE		0x1008 -#define SO_PROTOCOL	0x1028 -#define SO_DOMAIN	0x1029 -#define SO_PEERNAME	0x2000 - -#define SO_NO_CHECK	0x400b -#define SO_PRIORITY	0x400c -#define SO_BSDCOMPAT	0x400e -#define SO_PASSCRED	0x4010 -#define SO_PEERCRED	0x4011 -#define SO_TIMESTAMP	0x4012 -#define SCM_TIMESTAMP	SO_TIMESTAMP -#define SO_TIMESTAMPNS	0x4013 -#define SCM_TIMESTAMPNS	SO_TIMESTAMPNS - -/* Security levels - as per NRL IPv6 - don't actually do anything */ -#define SO_SECURITY_AUTHENTICATION		0x4016 -#define SO_SECURITY_ENCRYPTION_TRANSPORT	0x4017 -#define SO_SECURITY_ENCRYPTION_NETWORK		0x4018 - -#define SO_BINDTODEVICE	0x4019 - -/* Socket filtering */ -#define SO_ATTACH_FILTER        0x401a -#define SO_DETACH_FILTER        0x401b - -#define SO_ACCEPTCONN		0x401c - -#define SO_PEERSEC		0x401d -#define SO_PASSSEC		0x401e - -#define SO_MARK			0x401f - -#define SO_TIMESTAMPING		0x4020 -#define SCM_TIMESTAMPING	SO_TIMESTAMPING - -#define SO_RXQ_OVFL             0x4021 +#include <uapi/asm/socket.h>  /* O_NONBLOCK clashes with the bits used for socket types.  Therefore we   * have to define SOCK_NONBLOCK to a different value here.   */ -#define SOCK_NONBLOCK   0x40000000 +#define SOCK_NONBLOCK	0x40000000  #endif /* _ASM_SOCKET_H */ diff --git a/arch/parisc/include/asm/special_insns.h b/arch/parisc/include/asm/special_insns.h new file mode 100644 index 00000000000..e1509308899 --- /dev/null +++ b/arch/parisc/include/asm/special_insns.h @@ -0,0 +1,43 @@ +#ifndef __PARISC_SPECIAL_INSNS_H +#define __PARISC_SPECIAL_INSNS_H + +#define mfctl(reg)	({		\ +	unsigned long cr;		\ +	__asm__ __volatile__(		\ +		"mfctl " #reg ",%0" :	\ +		 "=r" (cr)		\ +	);				\ +	cr;				\ +}) + +#define mtctl(gr, cr) \ +	__asm__ __volatile__("mtctl %0,%1" \ +		: /* no outputs */ \ +		: "r" (gr), "i" (cr) : "memory") + +/* these are here to de-mystefy the calling code, and to provide hooks */ +/* which I needed for debugging EIEM problems -PB */ +#define get_eiem() mfctl(15) +static inline void set_eiem(unsigned long val) +{ +	mtctl(val, 15); +} + +#define mfsp(reg)	({		\ +	unsigned long cr;		\ +	__asm__ __volatile__(		\ +		"mfsp " #reg ",%0" :	\ +		 "=r" (cr)		\ +	);				\ +	cr;				\ +}) + +#define mtsp(val, cr) \ +	{ if (__builtin_constant_p(val) && ((val) == 0)) \ +	 __asm__ __volatile__("mtsp %%r0,%0" : : "i" (cr) : "memory"); \ +	else \ +	 __asm__ __volatile__("mtsp %0,%1" \ +		: /* no outputs */ \ +		: "r" (val), "i" (cr) : "memory"); } + +#endif /* __PARISC_SPECIAL_INSNS_H */ diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index 74036f436a3..64f2992e439 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h @@ -1,7 +1,8 @@  #ifndef __ASM_SPINLOCK_H  #define __ASM_SPINLOCK_H -#include <asm/system.h> +#include <asm/barrier.h> +#include <asm/ldcw.h>  #include <asm/processor.h>  #include <asm/spinlock_types.h> @@ -190,8 +191,4 @@ static __inline__ int arch_write_can_lock(arch_rwlock_t *rw)  #define arch_read_lock_flags(lock, flags) arch_read_lock(lock)  #define arch_write_lock_flags(lock, flags) arch_write_lock(lock) -#define arch_spin_relax(lock)	cpu_relax() -#define arch_read_relax(lock)	cpu_relax() -#define arch_write_relax(lock)	cpu_relax() -  #endif /* __ASM_SPINLOCK_H */ diff --git a/arch/parisc/include/asm/switch_to.h b/arch/parisc/include/asm/switch_to.h new file mode 100644 index 00000000000..8ed8fea1e78 --- /dev/null +++ b/arch/parisc/include/asm/switch_to.h @@ -0,0 +1,12 @@ +#ifndef __PARISC_SWITCH_TO_H +#define __PARISC_SWITCH_TO_H + +struct task_struct; + +extern struct task_struct *_switch_to(struct task_struct *, struct task_struct *); + +#define switch_to(prev, next, last) do {			\ +	(last) = _switch_to(prev, next);			\ +} while(0) + +#endif /* __PARISC_SWITCH_TO_H */ diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h deleted file mode 100644 index b19e63a8e84..00000000000 --- a/arch/parisc/include/asm/system.h +++ /dev/null @@ -1,165 +0,0 @@ -#ifndef __PARISC_SYSTEM_H -#define __PARISC_SYSTEM_H - -#include <linux/irqflags.h> - -/* The program status word as bitfields.  */ -struct pa_psw { -	unsigned int y:1; -	unsigned int z:1; -	unsigned int rv:2; -	unsigned int w:1; -	unsigned int e:1; -	unsigned int s:1; -	unsigned int t:1; - -	unsigned int h:1; -	unsigned int l:1; -	unsigned int n:1; -	unsigned int x:1; -	unsigned int b:1; -	unsigned int c:1; -	unsigned int v:1; -	unsigned int m:1; - -	unsigned int cb:8; - -	unsigned int o:1; -	unsigned int g:1; -	unsigned int f:1; -	unsigned int r:1; -	unsigned int q:1; -	unsigned int p:1; -	unsigned int d:1; -	unsigned int i:1; -}; - -#ifdef CONFIG_64BIT -#define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW + 4)) -#else -#define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW)) -#endif - -struct task_struct; - -extern struct task_struct *_switch_to(struct task_struct *, struct task_struct *); - -#define switch_to(prev, next, last) do {			\ -	(last) = _switch_to(prev, next);			\ -} while(0) - -#define mfctl(reg)	({		\ -	unsigned long cr;		\ -	__asm__ __volatile__(		\ -		"mfctl " #reg ",%0" :	\ -		 "=r" (cr)		\ -	);				\ -	cr;				\ -}) - -#define mtctl(gr, cr) \ -	__asm__ __volatile__("mtctl %0,%1" \ -		: /* no outputs */ \ -		: "r" (gr), "i" (cr) : "memory") - -/* these are here to de-mystefy the calling code, and to provide hooks */ -/* which I needed for debugging EIEM problems -PB */ -#define get_eiem() mfctl(15) -static inline void set_eiem(unsigned long val) -{ -	mtctl(val, 15); -} - -#define mfsp(reg)	({		\ -	unsigned long cr;		\ -	__asm__ __volatile__(		\ -		"mfsp " #reg ",%0" :	\ -		 "=r" (cr)		\ -	);				\ -	cr;				\ -}) - -#define mtsp(gr, cr) \ -	__asm__ __volatile__("mtsp %0,%1" \ -		: /* no outputs */ \ -		: "r" (gr), "i" (cr) : "memory") - - -/* -** This is simply the barrier() macro from linux/kernel.h but when serial.c -** uses tqueue.h uses smp_mb() defined using barrier(), linux/kernel.h -** hasn't yet been included yet so it fails, thus repeating the macro here. -** -** PA-RISC architecture allows for weakly ordered memory accesses although -** none of the processors use it. There is a strong ordered bit that is -** set in the O-bit of the page directory entry. Operating systems that -** can not tolerate out of order accesses should set this bit when mapping -** pages. The O-bit of the PSW should also be set to 1 (I don't believe any -** of the processor implemented the PSW O-bit). The PCX-W ERS states that -** the TLB O-bit is not implemented so the page directory does not need to -** have the O-bit set when mapping pages (section 3.1). This section also -** states that the PSW Y, Z, G, and O bits are not implemented. -** So it looks like nothing needs to be done for parisc-linux (yet). -** (thanks to chada for the above comment -ggg) -** -** The __asm__ op below simple prevents gcc/ld from reordering -** instructions across the mb() "call". -*/ -#define mb()		__asm__ __volatile__("":::"memory")	/* barrier() */ -#define rmb()		mb() -#define wmb()		mb() -#define smp_mb()	mb() -#define smp_rmb()	mb() -#define smp_wmb()	mb() -#define smp_read_barrier_depends()	do { } while(0) -#define read_barrier_depends()		do { } while(0) - -#define set_mb(var, value)		do { var = value; mb(); } while (0) - -#ifndef CONFIG_PA20 -/* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, -   and GCC only guarantees 8-byte alignment for stack locals, we can't -   be assured of 16-byte alignment for atomic lock data even if we -   specify "__attribute ((aligned(16)))" in the type declaration.  So, -   we use a struct containing an array of four ints for the atomic lock -   type and dynamically select the 16-byte aligned int from the array -   for the semaphore.  */ - -#define __PA_LDCW_ALIGNMENT	16 -#define __ldcw_align(a) ({					\ -	unsigned long __ret = (unsigned long) &(a)->lock[0];	\ -	__ret = (__ret + __PA_LDCW_ALIGNMENT - 1)		\ -		& ~(__PA_LDCW_ALIGNMENT - 1);			\ -	(volatile unsigned int *) __ret;			\ -}) -#define __LDCW	"ldcw" - -#else /*CONFIG_PA20*/ -/* From: "Jim Hull" <jim.hull of hp.com> -   I've attached a summary of the change, but basically, for PA 2.0, as -   long as the ",CO" (coherent operation) completer is specified, then the -   16-byte alignment requirement for ldcw and ldcd is relaxed, and instead -   they only require "natural" alignment (4-byte for ldcw, 8-byte for -   ldcd). */ - -#define __PA_LDCW_ALIGNMENT	4 -#define __ldcw_align(a) (&(a)->slock) -#define __LDCW	"ldcw,co" - -#endif /*!CONFIG_PA20*/ - -/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */ -#define __ldcw(a) ({						\ -	unsigned __ret;						\ -	__asm__ __volatile__(__LDCW " 0(%2),%0"			\ -		: "=r" (__ret), "+m" (*(a)) : "r" (a));		\ -	__ret;							\ -}) - -#ifdef CONFIG_SMP -# define __lock_aligned __attribute__((__section__(".data..lock_aligned"))) -#endif - -#define arch_align_stack(x) (x) - -#endif diff --git a/arch/parisc/include/asm/termios.h b/arch/parisc/include/asm/termios.h index a2a57a4548a..9bbc0c8974e 100644 --- a/arch/parisc/include/asm/termios.h +++ b/arch/parisc/include/asm/termios.h @@ -1,45 +1,8 @@  #ifndef _PARISC_TERMIOS_H  #define _PARISC_TERMIOS_H -#include <asm/termbits.h> -#include <asm/ioctls.h> +#include <uapi/asm/termios.h> -struct winsize { -	unsigned short ws_row; -	unsigned short ws_col; -	unsigned short ws_xpixel; -	unsigned short ws_ypixel; -}; - -#define NCC 8 -struct termio { -	unsigned short c_iflag;		/* input mode flags */ -	unsigned short c_oflag;		/* output mode flags */ -	unsigned short c_cflag;		/* control mode flags */ -	unsigned short c_lflag;		/* local mode flags */ -	unsigned char c_line;		/* line discipline */ -	unsigned char c_cc[NCC];	/* control characters */ -}; - -/* modem lines */ -#define TIOCM_LE	0x001 -#define TIOCM_DTR	0x002 -#define TIOCM_RTS	0x004 -#define TIOCM_ST	0x008 -#define TIOCM_SR	0x010 -#define TIOCM_CTS	0x020 -#define TIOCM_CAR	0x040 -#define TIOCM_RNG	0x080 -#define TIOCM_DSR	0x100 -#define TIOCM_CD	TIOCM_CAR -#define TIOCM_RI	TIOCM_RNG -#define TIOCM_OUT1	0x2000 -#define TIOCM_OUT2	0x4000 -#define TIOCM_LOOP	0x8000 - -/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ - -#ifdef __KERNEL__  /*	intr=^C		quit=^\		erase=del	kill=^U  	eof=^D		vtime=\0	vmin=\1		sxtc=\0 @@ -85,6 +48,4 @@ struct termio {  #define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))  #define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios)) -#endif	/* __KERNEL__ */ -  #endif	/* _PARISC_TERMIOS_H */ diff --git a/arch/parisc/include/asm/thread_info.h b/arch/parisc/include/asm/thread_info.h index aa8de727e90..4b9b10ce1f9 100644 --- a/arch/parisc/include/asm/thread_info.h +++ b/arch/parisc/include/asm/thread_info.h @@ -5,6 +5,7 @@  #ifndef __ASSEMBLY__  #include <asm/processor.h> +#include <asm/special_insns.h>  struct thread_info {  	struct task_struct *task;	/* main task structure */ @@ -39,15 +40,12 @@ struct thread_info {  /* thread information allocation */ -#define THREAD_SIZE_ORDER            2 +#define THREAD_SIZE_ORDER	2 /* PA-RISC requires at least 16k stack */  /* Be sure to hunt all references to this down when you change the size of   * the kernel stack */  #define THREAD_SIZE             (PAGE_SIZE << THREAD_SIZE_ORDER)  #define THREAD_SHIFT            (PAGE_SHIFT + THREAD_SIZE_ORDER) -#define PREEMPT_ACTIVE_BIT	28 -#define PREEMPT_ACTIVE		(1 << PREEMPT_ACTIVE_BIT) -  /*   * thread information flags   */ @@ -58,7 +56,7 @@ struct thread_info {  #define TIF_32BIT               4       /* 32 bit binary */  #define TIF_MEMDIE		5	/* is terminating due to OOM killer */  #define TIF_RESTORE_SIGMASK	6	/* restore saved signal mask */ -#define TIF_FREEZE		7	/* is freezing for suspend */ +#define TIF_SYSCALL_AUDIT	7	/* syscall auditing active */  #define TIF_NOTIFY_RESUME	8	/* callback before returning to user */  #define TIF_SINGLESTEP		9	/* single stepping? */  #define TIF_BLOCKSTEP		10	/* branch stepping? */ @@ -68,14 +66,25 @@ struct thread_info {  #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)  #define _TIF_POLLING_NRFLAG	(1 << TIF_POLLING_NRFLAG)  #define _TIF_32BIT		(1 << TIF_32BIT) -#define _TIF_RESTORE_SIGMASK	(1 << TIF_RESTORE_SIGMASK) -#define _TIF_FREEZE		(1 << TIF_FREEZE) +#define _TIF_SYSCALL_AUDIT	(1 << TIF_SYSCALL_AUDIT)  #define _TIF_NOTIFY_RESUME	(1 << TIF_NOTIFY_RESUME)  #define _TIF_SINGLESTEP		(1 << TIF_SINGLESTEP)  #define _TIF_BLOCKSTEP		(1 << TIF_BLOCKSTEP)  #define _TIF_USER_WORK_MASK     (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | \ -                                 _TIF_NEED_RESCHED | _TIF_RESTORE_SIGMASK) +                                 _TIF_NEED_RESCHED) +#define _TIF_SYSCALL_TRACE_MASK (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP |	\ +				 _TIF_BLOCKSTEP | _TIF_SYSCALL_AUDIT) + +#ifdef CONFIG_64BIT +# ifdef CONFIG_COMPAT +#  define is_32bit_task()	(test_thread_flag(TIF_32BIT)) +# else +#  define is_32bit_task()	(0) +# endif +#else +# define is_32bit_task()	(1) +#endif  #endif /* __KERNEL__ */ diff --git a/arch/parisc/include/asm/timex.h b/arch/parisc/include/asm/timex.h index 3b68d77273d..2bd51f6d832 100644 --- a/arch/parisc/include/asm/timex.h +++ b/arch/parisc/include/asm/timex.h @@ -6,7 +6,6 @@  #ifndef _ASMPARISC_TIMEX_H  #define _ASMPARISC_TIMEX_H -#include <asm/system.h>  #define CLOCK_TICK_RATE	1193180 /* Underlying HZ */ diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h index 8f1a8100bf2..9d086a599fa 100644 --- a/arch/parisc/include/asm/tlbflush.h +++ b/arch/parisc/include/asm/tlbflush.h @@ -22,6 +22,8 @@ extern spinlock_t pa_tlb_lock;  extern void flush_tlb_all(void);  extern void flush_tlb_all_local(void *); +#define smp_flush_tlb_all()	flush_tlb_all() +  /*   * flush_tlb_mm()   * @@ -61,13 +63,14 @@ static inline void flush_tlb_mm(struct mm_struct *mm)  static inline void flush_tlb_page(struct vm_area_struct *vma,  	unsigned long addr)  { -	unsigned long flags; +	unsigned long flags, sid;  	/* For one page, it's not worth testing the split_tlb variable */  	mb(); -	mtsp(vma->vm_mm->context,1); +	sid = vma->vm_mm->context;  	purge_tlb_start(flags); +	mtsp(sid, 1);  	pdtlb(addr);  	pitlb(addr);  	purge_tlb_end(flags); diff --git a/arch/parisc/include/asm/topology.h b/arch/parisc/include/asm/topology.h deleted file mode 100644 index d8133eb0b1e..00000000000 --- a/arch/parisc/include/asm/topology.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _ASM_PARISC_TOPOLOGY_H -#define _ASM_PARISC_TOPOLOGY_H - -#include <asm-generic/topology.h> - -#endif /* _ASM_PARISC_TOPOLOGY_H */ diff --git a/arch/parisc/include/asm/traps.h b/arch/parisc/include/asm/traps.h index 1945f995f2d..4736020ba5e 100644 --- a/arch/parisc/include/asm/traps.h +++ b/arch/parisc/include/asm/traps.h @@ -6,7 +6,7 @@ struct pt_regs;  /* traps.c */  void parisc_terminate(char *msg, struct pt_regs *regs, -		int code, unsigned long offset); +		int code, unsigned long offset) __noreturn __cold;  /* mm/fault.c */  void do_page_fault(struct pt_regs *regs, unsigned long code, diff --git a/arch/parisc/include/asm/types.h b/arch/parisc/include/asm/types.h deleted file mode 100644 index 20135cc8003..00000000000 --- a/arch/parisc/include/asm/types.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _PARISC_TYPES_H -#define _PARISC_TYPES_H - -#include <asm-generic/int-ll64.h> - -#ifndef __ASSEMBLY__ - -typedef unsigned short umode_t; - -#endif /* __ASSEMBLY__ */ - -/* - * These aren't exported outside the kernel to avoid name space clashes - */ -#ifdef __KERNEL__ - -#ifndef __ASSEMBLY__ - -/* Dma addresses are 32-bits wide.  */ - -typedef u32 dma_addr_t; -typedef u64 dma64_addr_t; - -#endif /* __ASSEMBLY__ */ - -#endif /* __KERNEL__ */ - -#endif diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h index ff4cf9dab8d..4006964d8e1 100644 --- a/arch/parisc/include/asm/uaccess.h +++ b/arch/parisc/include/asm/uaccess.h @@ -5,7 +5,6 @@   * User space memory access functions   */  #include <asm/page.h> -#include <asm/system.h>  #include <asm/cache.h>  #include <asm/errno.h>  #include <asm-generic/uaccess-unaligned.h> @@ -60,12 +59,13 @@ static inline long access_ok(int type, const void __user * addr,  /*   * The exception table contains two values: the first is an address   * for an instruction that is allowed to fault, and the second is - * the address to the fixup routine.  + * the address to the fixup routine. Even on a 64bit kernel we could + * use a 32bit (unsigned int) address here.   */  struct exception_table_entry { -	unsigned long insn;  /* address of insn that is allowed to fault.   */ -	long fixup;          /* fixup routine */ +	unsigned long insn;	/* address of insn that is allowed to fault. */ +	unsigned long fixup;	/* fixup routine */  };  #define ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr )\ @@ -182,30 +182,24 @@ struct exception_data {  #if !defined(CONFIG_64BIT)  #define __put_kernel_asm64(__val,ptr) do {		    \ -	u64 __val64 = (u64)(__val);			    \ -	u32 hi = (__val64) >> 32;			    \ -	u32 lo = (__val64) & 0xffffffff;		    \  	__asm__ __volatile__ (				    \  		"\n1:\tstw %2,0(%1)"			    \ -		"\n2:\tstw %3,4(%1)\n\t"		    \ +		"\n2:\tstw %R2,4(%1)\n\t"		    \  		ASM_EXCEPTIONTABLE_ENTRY(1b,fixup_put_user_skip_2)\  		ASM_EXCEPTIONTABLE_ENTRY(2b,fixup_put_user_skip_1)\  		: "=r"(__pu_err)                            \ -		: "r"(ptr), "r"(hi), "r"(lo), "0"(__pu_err) \ +		: "r"(ptr), "r"(__val), "0"(__pu_err) \  		: "r1");				    \  } while (0)  #define __put_user_asm64(__val,ptr) do {	    	    \ -	u64 __val64 = (u64)(__val);			    \ -	u32 hi = (__val64) >> 32;			    \ -	u32 lo = (__val64) & 0xffffffff;		    \  	__asm__ __volatile__ (				    \  		"\n1:\tstw %2,0(%%sr3,%1)"		    \ -		"\n2:\tstw %3,4(%%sr3,%1)\n\t"		    \ +		"\n2:\tstw %R2,4(%%sr3,%1)\n\t"		    \  		ASM_EXCEPTIONTABLE_ENTRY(1b,fixup_put_user_skip_2)\  		ASM_EXCEPTIONTABLE_ENTRY(2b,fixup_put_user_skip_1)\  		: "=r"(__pu_err)                            \ -		: "r"(ptr), "r"(hi), "r"(lo), "0"(__pu_err) \ +		: "r"(ptr), "r"(__val), "0"(__pu_err) \  		: "r1");				    \  } while (0) @@ -219,15 +213,14 @@ struct exception_data {  extern unsigned long lcopy_to_user(void __user *, const void *, unsigned long);  extern unsigned long lcopy_from_user(void *, const void __user *, unsigned long);  extern unsigned long lcopy_in_user(void __user *, const void __user *, unsigned long); -extern long lstrncpy_from_user(char *, const char __user *, long); +extern long strncpy_from_user(char *, const char __user *, long);  extern unsigned lclear_user(void __user *,unsigned long);  extern long lstrnlen_user(const char __user *,long); -  /*   * Complex access routines -- macros   */ +#define user_addr_max() (~0UL) -#define strncpy_from_user lstrncpy_from_user  #define strnlen_user lstrnlen_user  #define strlen_user(str) lstrnlen_user(str, 0x7fffffffL)  #define clear_user lclear_user diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h index 3eb82c2a5ec..5f4c68daa26 100644 --- a/arch/parisc/include/asm/unistd.h +++ b/arch/parisc/include/asm/unistd.h @@ -1,832 +1,8 @@  #ifndef _ASM_PARISC_UNISTD_H_  #define _ASM_PARISC_UNISTD_H_ -/* - * This file contains the system call numbers. - */ - -/* - *   HP-UX system calls get their native numbers for binary compatibility. - */ - -#define __NR_HPUX_exit                    1 -#define __NR_HPUX_fork                    2 -#define __NR_HPUX_read                    3 -#define __NR_HPUX_write                   4 -#define __NR_HPUX_open                    5 -#define __NR_HPUX_close                   6 -#define __NR_HPUX_wait                    7 -#define __NR_HPUX_creat                   8 -#define __NR_HPUX_link                    9 -#define __NR_HPUX_unlink                 10 -#define __NR_HPUX_execv                  11 -#define __NR_HPUX_chdir                  12 -#define __NR_HPUX_time                   13 -#define __NR_HPUX_mknod                  14 -#define __NR_HPUX_chmod                  15 -#define __NR_HPUX_chown                  16 -#define __NR_HPUX_break                  17 -#define __NR_HPUX_lchmod                 18 -#define __NR_HPUX_lseek                  19 -#define __NR_HPUX_getpid                 20 -#define __NR_HPUX_mount                  21 -#define __NR_HPUX_umount                 22 -#define __NR_HPUX_setuid                 23 -#define __NR_HPUX_getuid                 24 -#define __NR_HPUX_stime                  25 -#define __NR_HPUX_ptrace                 26 -#define __NR_HPUX_alarm                  27 -#define __NR_HPUX_oldfstat               28 -#define __NR_HPUX_pause                  29 -#define __NR_HPUX_utime                  30 -#define __NR_HPUX_stty                   31 -#define __NR_HPUX_gtty                   32 -#define __NR_HPUX_access                 33 -#define __NR_HPUX_nice                   34 -#define __NR_HPUX_ftime                  35 -#define __NR_HPUX_sync                   36 -#define __NR_HPUX_kill                   37 -#define __NR_HPUX_stat                   38 -#define __NR_HPUX_setpgrp3               39 -#define __NR_HPUX_lstat                  40 -#define __NR_HPUX_dup                    41 -#define __NR_HPUX_pipe                   42 -#define __NR_HPUX_times                  43 -#define __NR_HPUX_profil                 44 -#define __NR_HPUX_ki_call                45 -#define __NR_HPUX_setgid                 46 -#define __NR_HPUX_getgid                 47 -#define __NR_HPUX_sigsys                 48 -#define __NR_HPUX_reserved1              49 -#define __NR_HPUX_reserved2              50 -#define __NR_HPUX_acct                   51 -#define __NR_HPUX_set_userthreadid       52 -#define __NR_HPUX_oldlock                53 -#define __NR_HPUX_ioctl                  54 -#define __NR_HPUX_reboot                 55 -#define __NR_HPUX_symlink                56 -#define __NR_HPUX_utssys                 57 -#define __NR_HPUX_readlink               58 -#define __NR_HPUX_execve                 59 -#define __NR_HPUX_umask                  60 -#define __NR_HPUX_chroot                 61 -#define __NR_HPUX_fcntl                  62 -#define __NR_HPUX_ulimit                 63 -#define __NR_HPUX_getpagesize            64 -#define __NR_HPUX_mremap                 65 -#define __NR_HPUX_vfork                  66 -#define __NR_HPUX_vread                  67 -#define __NR_HPUX_vwrite                 68 -#define __NR_HPUX_sbrk                   69 -#define __NR_HPUX_sstk                   70 -#define __NR_HPUX_mmap                   71 -#define __NR_HPUX_vadvise                72 -#define __NR_HPUX_munmap                 73 -#define __NR_HPUX_mprotect               74 -#define __NR_HPUX_madvise                75 -#define __NR_HPUX_vhangup                76 -#define __NR_HPUX_swapoff                77 -#define __NR_HPUX_mincore                78 -#define __NR_HPUX_getgroups              79 -#define __NR_HPUX_setgroups              80 -#define __NR_HPUX_getpgrp2               81 -#define __NR_HPUX_setpgrp2               82 -#define __NR_HPUX_setitimer              83 -#define __NR_HPUX_wait3                  84 -#define __NR_HPUX_swapon                 85 -#define __NR_HPUX_getitimer              86 -#define __NR_HPUX_gethostname42          87 -#define __NR_HPUX_sethostname42          88 -#define __NR_HPUX_getdtablesize          89 -#define __NR_HPUX_dup2                   90 -#define __NR_HPUX_getdopt                91 -#define __NR_HPUX_fstat                  92 -#define __NR_HPUX_select                 93 -#define __NR_HPUX_setdopt                94 -#define __NR_HPUX_fsync                  95 -#define __NR_HPUX_setpriority            96 -#define __NR_HPUX_socket_old             97 -#define __NR_HPUX_connect_old            98 -#define __NR_HPUX_accept_old             99 -#define __NR_HPUX_getpriority           100 -#define __NR_HPUX_send_old              101 -#define __NR_HPUX_recv_old              102 -#define __NR_HPUX_socketaddr_old        103 -#define __NR_HPUX_bind_old              104 -#define __NR_HPUX_setsockopt_old        105 -#define __NR_HPUX_listen_old            106 -#define __NR_HPUX_vtimes_old            107 -#define __NR_HPUX_sigvector             108 -#define __NR_HPUX_sigblock              109 -#define __NR_HPUX_siggetmask            110 -#define __NR_HPUX_sigpause              111 -#define __NR_HPUX_sigstack              112 -#define __NR_HPUX_recvmsg_old           113 -#define __NR_HPUX_sendmsg_old           114 -#define __NR_HPUX_vtrace_old            115 -#define __NR_HPUX_gettimeofday          116 -#define __NR_HPUX_getrusage             117 -#define __NR_HPUX_getsockopt_old        118 -#define __NR_HPUX_resuba_old            119 -#define __NR_HPUX_readv                 120 -#define __NR_HPUX_writev                121 -#define __NR_HPUX_settimeofday          122 -#define __NR_HPUX_fchown                123 -#define __NR_HPUX_fchmod                124 -#define __NR_HPUX_recvfrom_old          125 -#define __NR_HPUX_setresuid             126 -#define __NR_HPUX_setresgid             127 -#define __NR_HPUX_rename                128 -#define __NR_HPUX_truncate              129 -#define __NR_HPUX_ftruncate             130 -#define __NR_HPUX_flock_old             131 -#define __NR_HPUX_sysconf               132 -#define __NR_HPUX_sendto_old            133 -#define __NR_HPUX_shutdown_old          134 -#define __NR_HPUX_socketpair_old        135 -#define __NR_HPUX_mkdir                 136 -#define __NR_HPUX_rmdir                 137 -#define __NR_HPUX_utimes_old            138 -#define __NR_HPUX_sigcleanup_old        139 -#define __NR_HPUX_setcore               140 -#define __NR_HPUX_getpeername_old       141 -#define __NR_HPUX_gethostid             142 -#define __NR_HPUX_sethostid             143 -#define __NR_HPUX_getrlimit             144 -#define __NR_HPUX_setrlimit             145 -#define __NR_HPUX_killpg_old            146 -#define __NR_HPUX_cachectl              147 -#define __NR_HPUX_quotactl              148 -#define __NR_HPUX_get_sysinfo           149 -#define __NR_HPUX_getsockname_old       150 -#define __NR_HPUX_privgrp               151 -#define __NR_HPUX_rtprio                152 -#define __NR_HPUX_plock                 153 -#define __NR_HPUX_reserved3             154 -#define __NR_HPUX_lockf                 155 -#define __NR_HPUX_semget                156 -#define __NR_HPUX_osemctl               157 -#define __NR_HPUX_semop                 158 -#define __NR_HPUX_msgget                159 -#define __NR_HPUX_omsgctl               160 -#define __NR_HPUX_msgsnd                161 -#define __NR_HPUX_msgrecv               162 -#define __NR_HPUX_shmget                163 -#define __NR_HPUX_oshmctl               164 -#define __NR_HPUX_shmat                 165 -#define __NR_HPUX_shmdt                 166 -#define __NR_HPUX_m68020_advise         167 -/* [168,189] are for Discless/DUX */ -#define __NR_HPUX_csp                   168 -#define __NR_HPUX_cluster               169 -#define __NR_HPUX_mkrnod                170 -#define __NR_HPUX_test                  171 -#define __NR_HPUX_unsp_open             172 -#define __NR_HPUX_reserved4             173 -#define __NR_HPUX_getcontext_old        174 -#define __NR_HPUX_osetcontext           175 -#define __NR_HPUX_bigio                 176 -#define __NR_HPUX_pipenode              177 -#define __NR_HPUX_lsync                 178 -#define __NR_HPUX_getmachineid          179 -#define __NR_HPUX_cnodeid               180 -#define __NR_HPUX_cnodes                181 -#define __NR_HPUX_swapclients           182 -#define __NR_HPUX_rmt_process           183 -#define __NR_HPUX_dskless_stats         184 -#define __NR_HPUX_sigprocmask           185 -#define __NR_HPUX_sigpending            186 -#define __NR_HPUX_sigsuspend            187 -#define __NR_HPUX_sigaction             188 -#define __NR_HPUX_reserved5             189 -#define __NR_HPUX_nfssvc                190 -#define __NR_HPUX_getfh                 191 -#define __NR_HPUX_getdomainname         192 -#define __NR_HPUX_setdomainname         193 -#define __NR_HPUX_async_daemon          194 -#define __NR_HPUX_getdirentries         195 -#define __NR_HPUX_statfs                196 -#define __NR_HPUX_fstatfs               197 -#define __NR_HPUX_vfsmount              198 -#define __NR_HPUX_reserved6             199 -#define __NR_HPUX_waitpid               200 -/* 201 - 223 missing */ -#define __NR_HPUX_sigsetreturn          224 -#define __NR_HPUX_sigsetstatemask       225 -/* 226 missing */ -#define __NR_HPUX_cs                    227 -#define __NR_HPUX_cds                   228 -#define __NR_HPUX_set_no_trunc          229 -#define __NR_HPUX_pathconf              230 -#define __NR_HPUX_fpathconf             231 -/* 232, 233 missing */ -#define __NR_HPUX_nfs_fcntl             234 -#define __NR_HPUX_ogetacl               235 -#define __NR_HPUX_ofgetacl              236 -#define __NR_HPUX_osetacl               237 -#define __NR_HPUX_ofsetacl              238 -#define __NR_HPUX_pstat                 239 -#define __NR_HPUX_getaudid              240 -#define __NR_HPUX_setaudid              241 -#define __NR_HPUX_getaudproc            242 -#define __NR_HPUX_setaudproc            243 -#define __NR_HPUX_getevent              244 -#define __NR_HPUX_setevent              245 -#define __NR_HPUX_audwrite              246 -#define __NR_HPUX_audswitch             247 -#define __NR_HPUX_audctl                248 -#define __NR_HPUX_ogetaccess            249 -#define __NR_HPUX_fsctl                 250 -/* 251 - 258 missing */ -#define __NR_HPUX_swapfs                259 -#define __NR_HPUX_fss                   260 -/* 261 - 266 missing */ -#define __NR_HPUX_tsync                 267 -#define __NR_HPUX_getnumfds             268 -#define __NR_HPUX_poll                  269 -#define __NR_HPUX_getmsg                270 -#define __NR_HPUX_putmsg                271 -#define __NR_HPUX_fchdir                272 -#define __NR_HPUX_getmount_cnt          273 -#define __NR_HPUX_getmount_entry        274 -#define __NR_HPUX_accept                275 -#define __NR_HPUX_bind                  276 -#define __NR_HPUX_connect               277 -#define __NR_HPUX_getpeername           278 -#define __NR_HPUX_getsockname           279 -#define __NR_HPUX_getsockopt            280 -#define __NR_HPUX_listen                281 -#define __NR_HPUX_recv                  282 -#define __NR_HPUX_recvfrom              283 -#define __NR_HPUX_recvmsg               284 -#define __NR_HPUX_send                  285 -#define __NR_HPUX_sendmsg               286 -#define __NR_HPUX_sendto                287 -#define __NR_HPUX_setsockopt            288 -#define __NR_HPUX_shutdown              289 -#define __NR_HPUX_socket                290 -#define __NR_HPUX_socketpair            291 -#define __NR_HPUX_proc_open             292 -#define __NR_HPUX_proc_close            293 -#define __NR_HPUX_proc_send             294 -#define __NR_HPUX_proc_recv             295 -#define __NR_HPUX_proc_sendrecv         296 -#define __NR_HPUX_proc_syscall          297 -/* 298 - 311 missing */ -#define __NR_HPUX_semctl                312 -#define __NR_HPUX_msgctl                313 -#define __NR_HPUX_shmctl                314 -#define __NR_HPUX_mpctl                 315 -#define __NR_HPUX_exportfs              316 -#define __NR_HPUX_getpmsg               317 -#define __NR_HPUX_putpmsg               318 -/* 319 missing */ -#define __NR_HPUX_msync                 320 -#define __NR_HPUX_msleep                321 -#define __NR_HPUX_mwakeup               322 -#define __NR_HPUX_msem_init             323 -#define __NR_HPUX_msem_remove           324 -#define __NR_HPUX_adjtime               325 -#define __NR_HPUX_kload                 326 -#define __NR_HPUX_fattach               327 -#define __NR_HPUX_fdetach               328 -#define __NR_HPUX_serialize             329 -#define __NR_HPUX_statvfs               330 -#define __NR_HPUX_fstatvfs              331 -#define __NR_HPUX_lchown                332 -#define __NR_HPUX_getsid                333 -#define __NR_HPUX_sysfs                 334 -/* 335, 336 missing */ -#define __NR_HPUX_sched_setparam        337 -#define __NR_HPUX_sched_getparam        338 -#define __NR_HPUX_sched_setscheduler    339 -#define __NR_HPUX_sched_getscheduler    340 -#define __NR_HPUX_sched_yield           341 -#define __NR_HPUX_sched_get_priority_max 342 -#define __NR_HPUX_sched_get_priority_min 343 -#define __NR_HPUX_sched_rr_get_interval 344 -#define __NR_HPUX_clock_settime         345 -#define __NR_HPUX_clock_gettime         346 -#define __NR_HPUX_clock_getres          347 -#define __NR_HPUX_timer_create          348 -#define __NR_HPUX_timer_delete          349 -#define __NR_HPUX_timer_settime         350 -#define __NR_HPUX_timer_gettime         351 -#define __NR_HPUX_timer_getoverrun      352 -#define __NR_HPUX_nanosleep             353 -#define __NR_HPUX_toolbox               354 -/* 355 missing */ -#define __NR_HPUX_getdents              356 -#define __NR_HPUX_getcontext            357 -#define __NR_HPUX_sysinfo               358 -#define __NR_HPUX_fcntl64               359 -#define __NR_HPUX_ftruncate64           360 -#define __NR_HPUX_fstat64               361 -#define __NR_HPUX_getdirentries64       362 -#define __NR_HPUX_getrlimit64           363 -#define __NR_HPUX_lockf64               364 -#define __NR_HPUX_lseek64               365 -#define __NR_HPUX_lstat64               366 -#define __NR_HPUX_mmap64                367 -#define __NR_HPUX_setrlimit64           368 -#define __NR_HPUX_stat64                369 -#define __NR_HPUX_truncate64            370 -#define __NR_HPUX_ulimit64              371 -#define __NR_HPUX_pread                 372 -#define __NR_HPUX_preadv                373 -#define __NR_HPUX_pwrite                374 -#define __NR_HPUX_pwritev               375 -#define __NR_HPUX_pread64               376 -#define __NR_HPUX_preadv64              377 -#define __NR_HPUX_pwrite64              378 -#define __NR_HPUX_pwritev64             379 -#define __NR_HPUX_setcontext            380 -#define __NR_HPUX_sigaltstack           381 -#define __NR_HPUX_waitid                382 -#define __NR_HPUX_setpgrp               383 -#define __NR_HPUX_recvmsg2              384 -#define __NR_HPUX_sendmsg2              385 -#define __NR_HPUX_socket2               386 -#define __NR_HPUX_socketpair2           387 -#define __NR_HPUX_setregid              388 -#define __NR_HPUX_lwp_create            389 -#define __NR_HPUX_lwp_terminate         390 -#define __NR_HPUX_lwp_wait              391 -#define __NR_HPUX_lwp_suspend           392 -#define __NR_HPUX_lwp_resume            393 -/* 394 missing */ -#define __NR_HPUX_lwp_abort_syscall     395 -#define __NR_HPUX_lwp_info              396 -#define __NR_HPUX_lwp_kill              397 -#define __NR_HPUX_ksleep                398 -#define __NR_HPUX_kwakeup               399 -/* 400 missing */ -#define __NR_HPUX_pstat_getlwp          401 -#define __NR_HPUX_lwp_exit              402 -#define __NR_HPUX_lwp_continue          403 -#define __NR_HPUX_getacl                404 -#define __NR_HPUX_fgetacl               405 -#define __NR_HPUX_setacl                406 -#define __NR_HPUX_fsetacl               407 -#define __NR_HPUX_getaccess             408 -#define __NR_HPUX_lwp_mutex_init        409 -#define __NR_HPUX_lwp_mutex_lock_sys    410 -#define __NR_HPUX_lwp_mutex_unlock      411 -#define __NR_HPUX_lwp_cond_init         412 -#define __NR_HPUX_lwp_cond_signal       413 -#define __NR_HPUX_lwp_cond_broadcast    414 -#define __NR_HPUX_lwp_cond_wait_sys     415 -#define __NR_HPUX_lwp_getscheduler      416 -#define __NR_HPUX_lwp_setscheduler      417 -#define __NR_HPUX_lwp_getstate          418 -#define __NR_HPUX_lwp_setstate          419 -#define __NR_HPUX_lwp_detach            420 -#define __NR_HPUX_mlock                 421 -#define __NR_HPUX_munlock               422 -#define __NR_HPUX_mlockall              423 -#define __NR_HPUX_munlockall            424 -#define __NR_HPUX_shm_open              425 -#define __NR_HPUX_shm_unlink            426 -#define __NR_HPUX_sigqueue              427 -#define __NR_HPUX_sigwaitinfo           428 -#define __NR_HPUX_sigtimedwait          429 -#define __NR_HPUX_sigwait               430 -#define __NR_HPUX_aio_read              431 -#define __NR_HPUX_aio_write             432 -#define __NR_HPUX_lio_listio            433 -#define __NR_HPUX_aio_error             434 -#define __NR_HPUX_aio_return            435 -#define __NR_HPUX_aio_cancel            436 -#define __NR_HPUX_aio_suspend           437 -#define __NR_HPUX_aio_fsync             438 -#define __NR_HPUX_mq_open               439 -#define __NR_HPUX_mq_close              440 -#define __NR_HPUX_mq_unlink             441 -#define __NR_HPUX_mq_send               442 -#define __NR_HPUX_mq_receive            443 -#define __NR_HPUX_mq_notify             444 -#define __NR_HPUX_mq_setattr            445 -#define __NR_HPUX_mq_getattr            446 -#define __NR_HPUX_ksem_open             447 -#define __NR_HPUX_ksem_unlink           448 -#define __NR_HPUX_ksem_close            449 -#define __NR_HPUX_ksem_post             450 -#define __NR_HPUX_ksem_wait             451 -#define __NR_HPUX_ksem_read             452 -#define __NR_HPUX_ksem_trywait          453 -#define __NR_HPUX_lwp_rwlock_init       454 -#define __NR_HPUX_lwp_rwlock_destroy    455 -#define __NR_HPUX_lwp_rwlock_rdlock_sys 456 -#define __NR_HPUX_lwp_rwlock_wrlock_sys 457 -#define __NR_HPUX_lwp_rwlock_tryrdlock  458 -#define __NR_HPUX_lwp_rwlock_trywrlock  459 -#define __NR_HPUX_lwp_rwlock_unlock     460 -#define __NR_HPUX_ttrace                461 -#define __NR_HPUX_ttrace_wait           462 -#define __NR_HPUX_lf_wire_mem           463 -#define __NR_HPUX_lf_unwire_mem         464 -#define __NR_HPUX_lf_send_pin_map       465 -#define __NR_HPUX_lf_free_buf           466 -#define __NR_HPUX_lf_wait_nq            467 -#define __NR_HPUX_lf_wakeup_conn_q      468 -#define __NR_HPUX_lf_unused             469 -#define __NR_HPUX_lwp_sema_init         470 -#define __NR_HPUX_lwp_sema_post         471 -#define __NR_HPUX_lwp_sema_wait         472 -#define __NR_HPUX_lwp_sema_trywait      473 -#define __NR_HPUX_lwp_sema_destroy      474 -#define __NR_HPUX_statvfs64             475 -#define __NR_HPUX_fstatvfs64            476 -#define __NR_HPUX_msh_register          477 -#define __NR_HPUX_ptrace64              478 -#define __NR_HPUX_sendfile              479 -#define __NR_HPUX_sendpath              480 -#define __NR_HPUX_sendfile64            481 -#define __NR_HPUX_sendpath64            482 -#define __NR_HPUX_modload               483 -#define __NR_HPUX_moduload              484 -#define __NR_HPUX_modpath               485 -#define __NR_HPUX_getksym               486 -#define __NR_HPUX_modadm                487 -#define __NR_HPUX_modstat               488 -#define __NR_HPUX_lwp_detached_exit     489 -#define __NR_HPUX_crashconf             490 -#define __NR_HPUX_siginhibit            491 -#define __NR_HPUX_sigenable             492 -#define __NR_HPUX_spuctl                493 -#define __NR_HPUX_zerokernelsum         494 -#define __NR_HPUX_nfs_kstat             495 -#define __NR_HPUX_aio_read64            496 -#define __NR_HPUX_aio_write64           497 -#define __NR_HPUX_aio_error64           498 -#define __NR_HPUX_aio_return64          499 -#define __NR_HPUX_aio_cancel64          500 -#define __NR_HPUX_aio_suspend64         501 -#define __NR_HPUX_aio_fsync64           502 -#define __NR_HPUX_lio_listio64          503 -#define __NR_HPUX_recv2                 504 -#define __NR_HPUX_recvfrom2             505 -#define __NR_HPUX_send2                 506 -#define __NR_HPUX_sendto2               507 -#define __NR_HPUX_acl                   508 -#define __NR_HPUX___cnx_p2p_ctl         509 -#define __NR_HPUX___cnx_gsched_ctl      510 -#define __NR_HPUX___cnx_pmon_ctl        511 - -#define __NR_HPUX_syscalls		512 - -/* - * Linux system call numbers. - * - * Cary Coutant says that we should just use another syscall gateway - * page to avoid clashing with the HPUX space, and I think he's right: - * it will would keep a branch out of our syscall entry path, at the - * very least.  If we decide to change it later, we can ``just'' tweak - * the LINUX_GATEWAY_ADDR define at the bottom and make __NR_Linux be - * 1024 or something.  Oh, and recompile libc. =) - * - * 64-bit HPUX binaries get the syscall gateway address passed in a register - * from the kernel at startup, which seems a sane strategy. - */ - -#define __NR_Linux                0 -#define __NR_restart_syscall      (__NR_Linux + 0) -#define __NR_exit                 (__NR_Linux + 1) -#define __NR_fork                 (__NR_Linux + 2) -#define __NR_read                 (__NR_Linux + 3) -#define __NR_write                (__NR_Linux + 4) -#define __NR_open                 (__NR_Linux + 5) -#define __NR_close                (__NR_Linux + 6) -#define __NR_waitpid              (__NR_Linux + 7) -#define __NR_creat                (__NR_Linux + 8) -#define __NR_link                 (__NR_Linux + 9) -#define __NR_unlink              (__NR_Linux + 10) -#define __NR_execve              (__NR_Linux + 11) -#define __NR_chdir               (__NR_Linux + 12) -#define __NR_time                (__NR_Linux + 13) -#define __NR_mknod               (__NR_Linux + 14) -#define __NR_chmod               (__NR_Linux + 15) -#define __NR_lchown              (__NR_Linux + 16) -#define __NR_socket              (__NR_Linux + 17) -#define __NR_stat                (__NR_Linux + 18) -#define __NR_lseek               (__NR_Linux + 19) -#define __NR_getpid              (__NR_Linux + 20) -#define __NR_mount               (__NR_Linux + 21) -#define __NR_bind                (__NR_Linux + 22) -#define __NR_setuid              (__NR_Linux + 23) -#define __NR_getuid              (__NR_Linux + 24) -#define __NR_stime               (__NR_Linux + 25) -#define __NR_ptrace              (__NR_Linux + 26) -#define __NR_alarm               (__NR_Linux + 27) -#define __NR_fstat               (__NR_Linux + 28) -#define __NR_pause               (__NR_Linux + 29) -#define __NR_utime               (__NR_Linux + 30) -#define __NR_connect             (__NR_Linux + 31) -#define __NR_listen              (__NR_Linux + 32) -#define __NR_access              (__NR_Linux + 33) -#define __NR_nice                (__NR_Linux + 34) -#define __NR_accept              (__NR_Linux + 35) -#define __NR_sync                (__NR_Linux + 36) -#define __NR_kill                (__NR_Linux + 37) -#define __NR_rename              (__NR_Linux + 38) -#define __NR_mkdir               (__NR_Linux + 39) -#define __NR_rmdir               (__NR_Linux + 40) -#define __NR_dup                 (__NR_Linux + 41) -#define __NR_pipe                (__NR_Linux + 42) -#define __NR_times               (__NR_Linux + 43) -#define __NR_getsockname         (__NR_Linux + 44) -#define __NR_brk                 (__NR_Linux + 45) -#define __NR_setgid              (__NR_Linux + 46) -#define __NR_getgid              (__NR_Linux + 47) -#define __NR_signal              (__NR_Linux + 48) -#define __NR_geteuid             (__NR_Linux + 49) -#define __NR_getegid             (__NR_Linux + 50) -#define __NR_acct                (__NR_Linux + 51) -#define __NR_umount2             (__NR_Linux + 52) -#define __NR_getpeername         (__NR_Linux + 53) -#define __NR_ioctl               (__NR_Linux + 54) -#define __NR_fcntl               (__NR_Linux + 55) -#define __NR_socketpair          (__NR_Linux + 56) -#define __NR_setpgid             (__NR_Linux + 57) -#define __NR_send                (__NR_Linux + 58) -#define __NR_uname               (__NR_Linux + 59) -#define __NR_umask               (__NR_Linux + 60) -#define __NR_chroot              (__NR_Linux + 61) -#define __NR_ustat               (__NR_Linux + 62) -#define __NR_dup2                (__NR_Linux + 63) -#define __NR_getppid             (__NR_Linux + 64) -#define __NR_getpgrp             (__NR_Linux + 65) -#define __NR_setsid              (__NR_Linux + 66) -#define __NR_pivot_root          (__NR_Linux + 67) -#define __NR_sgetmask            (__NR_Linux + 68) -#define __NR_ssetmask            (__NR_Linux + 69) -#define __NR_setreuid            (__NR_Linux + 70) -#define __NR_setregid            (__NR_Linux + 71) -#define __NR_mincore             (__NR_Linux + 72) -#define __NR_sigpending          (__NR_Linux + 73) -#define __NR_sethostname         (__NR_Linux + 74) -#define __NR_setrlimit           (__NR_Linux + 75) -#define __NR_getrlimit           (__NR_Linux + 76) -#define __NR_getrusage           (__NR_Linux + 77) -#define __NR_gettimeofday        (__NR_Linux + 78) -#define __NR_settimeofday        (__NR_Linux + 79) -#define __NR_getgroups           (__NR_Linux + 80) -#define __NR_setgroups           (__NR_Linux + 81) -#define __NR_sendto              (__NR_Linux + 82) -#define __NR_symlink             (__NR_Linux + 83) -#define __NR_lstat               (__NR_Linux + 84) -#define __NR_readlink            (__NR_Linux + 85) -#define __NR_uselib              (__NR_Linux + 86) -#define __NR_swapon              (__NR_Linux + 87) -#define __NR_reboot              (__NR_Linux + 88) -#define __NR_mmap2             (__NR_Linux + 89) -#define __NR_mmap                (__NR_Linux + 90) -#define __NR_munmap              (__NR_Linux + 91) -#define __NR_truncate            (__NR_Linux + 92) -#define __NR_ftruncate           (__NR_Linux + 93) -#define __NR_fchmod              (__NR_Linux + 94) -#define __NR_fchown              (__NR_Linux + 95) -#define __NR_getpriority         (__NR_Linux + 96) -#define __NR_setpriority         (__NR_Linux + 97) -#define __NR_recv                (__NR_Linux + 98) -#define __NR_statfs              (__NR_Linux + 99) -#define __NR_fstatfs            (__NR_Linux + 100) -#define __NR_stat64           (__NR_Linux + 101) -/* #define __NR_socketcall         (__NR_Linux + 102) */ -#define __NR_syslog             (__NR_Linux + 103) -#define __NR_setitimer          (__NR_Linux + 104) -#define __NR_getitimer          (__NR_Linux + 105) -#define __NR_capget             (__NR_Linux + 106) -#define __NR_capset             (__NR_Linux + 107) -#define __NR_pread64            (__NR_Linux + 108) -#define __NR_pwrite64           (__NR_Linux + 109) -#define __NR_getcwd             (__NR_Linux + 110) -#define __NR_vhangup            (__NR_Linux + 111) -#define __NR_fstat64            (__NR_Linux + 112) -#define __NR_vfork              (__NR_Linux + 113) -#define __NR_wait4              (__NR_Linux + 114) -#define __NR_swapoff            (__NR_Linux + 115) -#define __NR_sysinfo            (__NR_Linux + 116) -#define __NR_shutdown           (__NR_Linux + 117) -#define __NR_fsync              (__NR_Linux + 118) -#define __NR_madvise            (__NR_Linux + 119) -#define __NR_clone              (__NR_Linux + 120) -#define __NR_setdomainname      (__NR_Linux + 121) -#define __NR_sendfile           (__NR_Linux + 122) -#define __NR_recvfrom           (__NR_Linux + 123) -#define __NR_adjtimex           (__NR_Linux + 124) -#define __NR_mprotect           (__NR_Linux + 125) -#define __NR_sigprocmask        (__NR_Linux + 126) -#define __NR_create_module      (__NR_Linux + 127) -#define __NR_init_module        (__NR_Linux + 128) -#define __NR_delete_module      (__NR_Linux + 129) -#define __NR_get_kernel_syms    (__NR_Linux + 130) -#define __NR_quotactl           (__NR_Linux + 131) -#define __NR_getpgid            (__NR_Linux + 132) -#define __NR_fchdir             (__NR_Linux + 133) -#define __NR_bdflush            (__NR_Linux + 134) -#define __NR_sysfs              (__NR_Linux + 135) -#define __NR_personality        (__NR_Linux + 136) -#define __NR_afs_syscall        (__NR_Linux + 137) /* Syscall for Andrew File System */ -#define __NR_setfsuid           (__NR_Linux + 138) -#define __NR_setfsgid           (__NR_Linux + 139) -#define __NR__llseek            (__NR_Linux + 140) -#define __NR_getdents           (__NR_Linux + 141) -#define __NR__newselect         (__NR_Linux + 142) -#define __NR_flock              (__NR_Linux + 143) -#define __NR_msync              (__NR_Linux + 144) -#define __NR_readv              (__NR_Linux + 145) -#define __NR_writev             (__NR_Linux + 146) -#define __NR_getsid             (__NR_Linux + 147) -#define __NR_fdatasync          (__NR_Linux + 148) -#define __NR__sysctl            (__NR_Linux + 149) -#define __NR_mlock              (__NR_Linux + 150) -#define __NR_munlock            (__NR_Linux + 151) -#define __NR_mlockall           (__NR_Linux + 152) -#define __NR_munlockall         (__NR_Linux + 153) -#define __NR_sched_setparam             (__NR_Linux + 154) -#define __NR_sched_getparam             (__NR_Linux + 155) -#define __NR_sched_setscheduler         (__NR_Linux + 156) -#define __NR_sched_getscheduler         (__NR_Linux + 157) -#define __NR_sched_yield                (__NR_Linux + 158) -#define __NR_sched_get_priority_max     (__NR_Linux + 159) -#define __NR_sched_get_priority_min     (__NR_Linux + 160) -#define __NR_sched_rr_get_interval      (__NR_Linux + 161) -#define __NR_nanosleep          (__NR_Linux + 162) -#define __NR_mremap             (__NR_Linux + 163) -#define __NR_setresuid          (__NR_Linux + 164) -#define __NR_getresuid          (__NR_Linux + 165) -#define __NR_sigaltstack        (__NR_Linux + 166) -#define __NR_query_module       (__NR_Linux + 167) -#define __NR_poll               (__NR_Linux + 168) -#define __NR_nfsservctl         (__NR_Linux + 169) -#define __NR_setresgid          (__NR_Linux + 170) -#define __NR_getresgid          (__NR_Linux + 171) -#define __NR_prctl              (__NR_Linux + 172) -#define __NR_rt_sigreturn       (__NR_Linux + 173) -#define __NR_rt_sigaction       (__NR_Linux + 174) -#define __NR_rt_sigprocmask     (__NR_Linux + 175) -#define __NR_rt_sigpending      (__NR_Linux + 176) -#define __NR_rt_sigtimedwait    (__NR_Linux + 177) -#define __NR_rt_sigqueueinfo    (__NR_Linux + 178) -#define __NR_rt_sigsuspend      (__NR_Linux + 179) -#define __NR_chown              (__NR_Linux + 180) -#define __NR_setsockopt         (__NR_Linux + 181) -#define __NR_getsockopt         (__NR_Linux + 182) -#define __NR_sendmsg            (__NR_Linux + 183) -#define __NR_recvmsg            (__NR_Linux + 184) -#define __NR_semop              (__NR_Linux + 185) -#define __NR_semget             (__NR_Linux + 186) -#define __NR_semctl             (__NR_Linux + 187) -#define __NR_msgsnd             (__NR_Linux + 188) -#define __NR_msgrcv             (__NR_Linux + 189) -#define __NR_msgget             (__NR_Linux + 190) -#define __NR_msgctl             (__NR_Linux + 191) -#define __NR_shmat              (__NR_Linux + 192) -#define __NR_shmdt              (__NR_Linux + 193) -#define __NR_shmget             (__NR_Linux + 194) -#define __NR_shmctl             (__NR_Linux + 195) - -#define __NR_getpmsg		(__NR_Linux + 196) /* Somebody *wants* streams? */ -#define __NR_putpmsg		(__NR_Linux + 197) +#include <uapi/asm/unistd.h> -#define __NR_lstat64            (__NR_Linux + 198) -#define __NR_truncate64         (__NR_Linux + 199) -#define __NR_ftruncate64        (__NR_Linux + 200) -#define __NR_getdents64         (__NR_Linux + 201) -#define __NR_fcntl64            (__NR_Linux + 202) -#define __NR_attrctl            (__NR_Linux + 203) -#define __NR_acl_get            (__NR_Linux + 204) -#define __NR_acl_set            (__NR_Linux + 205) -#define __NR_gettid             (__NR_Linux + 206) -#define __NR_readahead          (__NR_Linux + 207) -#define __NR_tkill              (__NR_Linux + 208) -#define __NR_sendfile64         (__NR_Linux + 209) -#define __NR_futex              (__NR_Linux + 210) -#define __NR_sched_setaffinity  (__NR_Linux + 211) -#define __NR_sched_getaffinity  (__NR_Linux + 212) -#define __NR_set_thread_area    (__NR_Linux + 213) -#define __NR_get_thread_area    (__NR_Linux + 214) -#define __NR_io_setup           (__NR_Linux + 215) -#define __NR_io_destroy         (__NR_Linux + 216) -#define __NR_io_getevents       (__NR_Linux + 217) -#define __NR_io_submit          (__NR_Linux + 218) -#define __NR_io_cancel          (__NR_Linux + 219) -#define __NR_alloc_hugepages    (__NR_Linux + 220) -#define __NR_free_hugepages     (__NR_Linux + 221) -#define __NR_exit_group         (__NR_Linux + 222) -#define __NR_lookup_dcookie     (__NR_Linux + 223) -#define __NR_epoll_create       (__NR_Linux + 224) -#define __NR_epoll_ctl          (__NR_Linux + 225) -#define __NR_epoll_wait         (__NR_Linux + 226) -#define __NR_remap_file_pages   (__NR_Linux + 227) -#define __NR_semtimedop         (__NR_Linux + 228) -#define __NR_mq_open            (__NR_Linux + 229) -#define __NR_mq_unlink          (__NR_Linux + 230) -#define __NR_mq_timedsend       (__NR_Linux + 231) -#define __NR_mq_timedreceive    (__NR_Linux + 232) -#define __NR_mq_notify          (__NR_Linux + 233) -#define __NR_mq_getsetattr      (__NR_Linux + 234) -#define __NR_waitid		(__NR_Linux + 235) -#define __NR_fadvise64_64	(__NR_Linux + 236) -#define __NR_set_tid_address	(__NR_Linux + 237) -#define __NR_setxattr		(__NR_Linux + 238) -#define __NR_lsetxattr		(__NR_Linux + 239) -#define __NR_fsetxattr		(__NR_Linux + 240) -#define __NR_getxattr		(__NR_Linux + 241) -#define __NR_lgetxattr		(__NR_Linux + 242) -#define __NR_fgetxattr		(__NR_Linux + 243) -#define __NR_listxattr		(__NR_Linux + 244) -#define __NR_llistxattr		(__NR_Linux + 245) -#define __NR_flistxattr		(__NR_Linux + 246) -#define __NR_removexattr	(__NR_Linux + 247) -#define __NR_lremovexattr	(__NR_Linux + 248) -#define __NR_fremovexattr	(__NR_Linux + 249) -#define __NR_timer_create	(__NR_Linux + 250) -#define __NR_timer_settime	(__NR_Linux + 251) -#define __NR_timer_gettime	(__NR_Linux + 252) -#define __NR_timer_getoverrun	(__NR_Linux + 253) -#define __NR_timer_delete	(__NR_Linux + 254) -#define __NR_clock_settime	(__NR_Linux + 255) -#define __NR_clock_gettime	(__NR_Linux + 256) -#define __NR_clock_getres	(__NR_Linux + 257) -#define __NR_clock_nanosleep	(__NR_Linux + 258) -#define __NR_tgkill		(__NR_Linux + 259) -#define __NR_mbind		(__NR_Linux + 260) -#define __NR_get_mempolicy	(__NR_Linux + 261) -#define __NR_set_mempolicy	(__NR_Linux + 262) -#define __NR_vserver		(__NR_Linux + 263) -#define __NR_add_key		(__NR_Linux + 264) -#define __NR_request_key	(__NR_Linux + 265) -#define __NR_keyctl		(__NR_Linux + 266) -#define __NR_ioprio_set		(__NR_Linux + 267) -#define __NR_ioprio_get		(__NR_Linux + 268) -#define __NR_inotify_init	(__NR_Linux + 269) -#define __NR_inotify_add_watch	(__NR_Linux + 270) -#define __NR_inotify_rm_watch	(__NR_Linux + 271) -#define __NR_migrate_pages	(__NR_Linux + 272) -#define __NR_pselect6		(__NR_Linux + 273) -#define __NR_ppoll		(__NR_Linux + 274) -#define __NR_openat		(__NR_Linux + 275) -#define __NR_mkdirat		(__NR_Linux + 276) -#define __NR_mknodat		(__NR_Linux + 277) -#define __NR_fchownat		(__NR_Linux + 278) -#define __NR_futimesat		(__NR_Linux + 279) -#define __NR_fstatat64		(__NR_Linux + 280) -#define __NR_unlinkat		(__NR_Linux + 281) -#define __NR_renameat		(__NR_Linux + 282) -#define __NR_linkat		(__NR_Linux + 283) -#define __NR_symlinkat		(__NR_Linux + 284) -#define __NR_readlinkat		(__NR_Linux + 285) -#define __NR_fchmodat		(__NR_Linux + 286) -#define __NR_faccessat		(__NR_Linux + 287) -#define __NR_unshare		(__NR_Linux + 288) -#define __NR_set_robust_list	(__NR_Linux + 289) -#define __NR_get_robust_list	(__NR_Linux + 290) -#define __NR_splice		(__NR_Linux + 291) -#define __NR_sync_file_range	(__NR_Linux + 292) -#define __NR_tee		(__NR_Linux + 293) -#define __NR_vmsplice		(__NR_Linux + 294) -#define __NR_move_pages		(__NR_Linux + 295) -#define __NR_getcpu		(__NR_Linux + 296) -#define __NR_epoll_pwait	(__NR_Linux + 297) -#define __NR_statfs64		(__NR_Linux + 298) -#define __NR_fstatfs64		(__NR_Linux + 299) -#define __NR_kexec_load		(__NR_Linux + 300) -#define __NR_utimensat		(__NR_Linux + 301) -#define __NR_signalfd		(__NR_Linux + 302) -#define __NR_timerfd		(__NR_Linux + 303) -#define __NR_eventfd		(__NR_Linux + 304) -#define __NR_fallocate		(__NR_Linux + 305) -#define __NR_timerfd_create	(__NR_Linux + 306) -#define __NR_timerfd_settime	(__NR_Linux + 307) -#define __NR_timerfd_gettime	(__NR_Linux + 308) -#define __NR_signalfd4		(__NR_Linux + 309) -#define __NR_eventfd2		(__NR_Linux + 310) -#define __NR_epoll_create1	(__NR_Linux + 311) -#define __NR_dup3		(__NR_Linux + 312) -#define __NR_pipe2		(__NR_Linux + 313) -#define __NR_inotify_init1	(__NR_Linux + 314) -#define __NR_preadv		(__NR_Linux + 315) -#define __NR_pwritev		(__NR_Linux + 316) -#define __NR_rt_tgsigqueueinfo	(__NR_Linux + 317) -#define __NR_perf_event_open	(__NR_Linux + 318) -#define __NR_recvmmsg		(__NR_Linux + 319) -#define __NR_accept4		(__NR_Linux + 320) -#define __NR_prlimit64		(__NR_Linux + 321) - -#define __NR_Linux_syscalls	(__NR_prlimit64 + 1) - - -#define __IGNORE_select		/* newselect */ -#define __IGNORE_fadvise64	/* fadvise64_64 */ -#define __IGNORE_utimes		/* utime */ - - -#define HPUX_GATEWAY_ADDR       0xC0000004 -#define LINUX_GATEWAY_ADDR      0x100 - -#ifdef __KERNEL__  #ifndef __ASSEMBLY__  #define SYS_ify(syscall_name)   __NR_##syscall_name @@ -969,10 +145,10 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5)	\  #define __ARCH_WANT_SYS_ALARM  #define __ARCH_WANT_SYS_GETHOSTNAME  #define __ARCH_WANT_SYS_PAUSE -#define __ARCH_WANT_SYS_SGETMASK  #define __ARCH_WANT_SYS_SIGNAL  #define __ARCH_WANT_SYS_TIME  #define __ARCH_WANT_COMPAT_SYS_TIME +#define __ARCH_WANT_COMPAT_SYS_SCHED_RR_GET_INTERVAL  #define __ARCH_WANT_SYS_UTIME  #define __ARCH_WANT_SYS_WAITPID  #define __ARCH_WANT_SYS_SOCKETCALL @@ -984,21 +160,13 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5)	\  #define __ARCH_WANT_SYS_OLDUMOUNT  #define __ARCH_WANT_SYS_SIGPENDING  #define __ARCH_WANT_SYS_SIGPROCMASK -#define __ARCH_WANT_SYS_RT_SIGACTION -#define __ARCH_WANT_SYS_RT_SIGSUSPEND -#define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND +#define __ARCH_WANT_SYS_FORK +#define __ARCH_WANT_SYS_VFORK +#define __ARCH_WANT_SYS_CLONE +#define __ARCH_WANT_COMPAT_SYS_SENDFILE  #endif /* __ASSEMBLY__ */  #undef STR -/* - * "Conditional" syscalls - * - * What we want is __attribute__((weak,alias("sys_ni_syscall"))), - * but it doesn't work on all toolchains, so we just do it by hand - */ -#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") - -#endif /* __KERNEL__ */  #endif /* _ASM_PARISC_UNISTD_H_ */ diff --git a/arch/parisc/include/asm/user.h b/arch/parisc/include/asm/user.h deleted file mode 100644 index 80224753e50..00000000000 --- a/arch/parisc/include/asm/user.h +++ /dev/null @@ -1,5 +0,0 @@ -/* This file should not exist, but lots of generic code still includes -   it. It's a hangover from old a.out days and the traditional core -   dump format.  We are ELF-only, and so are our core dumps.  If we -   need to support HP/UX core format then we'll do it here -   eventually. */ diff --git a/arch/parisc/include/asm/vga.h b/arch/parisc/include/asm/vga.h deleted file mode 100644 index 171399a88ca..00000000000 --- a/arch/parisc/include/asm/vga.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __ASM_PARISC_VGA_H__ -#define __ASM_PARISC_VGA_H__ - -/* nothing */ - -#endif /* __ASM_PARISC_VGA_H__ */ diff --git a/arch/parisc/include/asm/xor.h b/arch/parisc/include/asm/xor.h deleted file mode 100644 index c82eb12a5b1..00000000000 --- a/arch/parisc/include/asm/xor.h +++ /dev/null @@ -1 +0,0 @@ -#include <asm-generic/xor.h> diff --git a/arch/parisc/include/uapi/asm/Kbuild b/arch/parisc/include/uapi/asm/Kbuild new file mode 100644 index 00000000000..348356c9951 --- /dev/null +++ b/arch/parisc/include/uapi/asm/Kbuild @@ -0,0 +1,32 @@ +# UAPI Header export list +include include/uapi/asm-generic/Kbuild.asm + +generic-y += resource.h + +header-y += bitsperlong.h +header-y += byteorder.h +header-y += errno.h +header-y += fcntl.h +header-y += ioctl.h +header-y += ioctls.h +header-y += ipcbuf.h +header-y += mman.h +header-y += msgbuf.h +header-y += pdc.h +header-y += posix_types.h +header-y += ptrace.h +header-y += sembuf.h +header-y += setup.h +header-y += shmbuf.h +header-y += sigcontext.h +header-y += siginfo.h +header-y += signal.h +header-y += socket.h +header-y += sockios.h +header-y += stat.h +header-y += statfs.h +header-y += swab.h +header-y += termbits.h +header-y += termios.h +header-y += types.h +header-y += unistd.h diff --git a/arch/parisc/include/asm/bitsperlong.h b/arch/parisc/include/uapi/asm/bitsperlong.h index 75196b415d3..75196b415d3 100644 --- a/arch/parisc/include/asm/bitsperlong.h +++ b/arch/parisc/include/uapi/asm/bitsperlong.h diff --git a/arch/parisc/include/asm/byteorder.h b/arch/parisc/include/uapi/asm/byteorder.h index 58af2c5f5d6..58af2c5f5d6 100644 --- a/arch/parisc/include/asm/byteorder.h +++ b/arch/parisc/include/uapi/asm/byteorder.h diff --git a/arch/parisc/include/asm/errno.h b/arch/parisc/include/uapi/asm/errno.h index 9992abdd782..c0ae62520d1 100644 --- a/arch/parisc/include/asm/errno.h +++ b/arch/parisc/include/uapi/asm/errno.h @@ -37,7 +37,7 @@  #define	EBADMSG		67	/* Not a data message */  #define	EUSERS		68	/* Too many users */  #define	EDQUOT		69	/* Quota exceeded */ -#define	ESTALE		70	/* Stale NFS file handle */ +#define	ESTALE		70	/* Stale file handle */  #define	EREMOTE		71	/* Object is remote */  #define	EOVERFLOW	72	/* Value too large for defined data type */ @@ -106,7 +106,7 @@  #define	EALREADY	244	/* Operation already in progress */  #define	EINPROGRESS	245	/* Operation now in progress */ -#define	EWOULDBLOCK	246	/* Operation would block (Linux returns EAGAIN) */ +#define	EWOULDBLOCK	EAGAIN	/* Operation would block (Not HPUX compliant) */  #define	ENOTEMPTY	247	/* Directory not empty */  #define	ENAMETOOLONG	248	/* File name too long */  #define	ELOOP		249	/* Too many symbolic links encountered */ @@ -122,4 +122,6 @@  #define	ERFKILL		256	/* Operation not possible due to RF-kill */ +#define EHWPOISON	257	/* Memory page has hardware error */ +  #endif diff --git a/arch/parisc/include/asm/fcntl.h b/arch/parisc/include/uapi/asm/fcntl.h index f357fc693c8..34a46cbc76e 100644 --- a/arch/parisc/include/asm/fcntl.h +++ b/arch/parisc/include/uapi/asm/fcntl.h @@ -19,6 +19,9 @@  #define O_NOFOLLOW	000000200 /* don't follow links */  #define O_INVISIBLE	004000000 /* invisible I/O, for DMAPI/XDSM */ +#define O_PATH		020000000 +#define __O_TMPFILE	040000000 +  #define F_GETLK64	8  #define F_SETLK64	9  #define F_SETLKW64	10 diff --git a/arch/parisc/include/asm/ioctl.h b/arch/parisc/include/uapi/asm/ioctl.h index ec8efa02bed..ec8efa02bed 100644 --- a/arch/parisc/include/asm/ioctl.h +++ b/arch/parisc/include/uapi/asm/ioctl.h diff --git a/arch/parisc/include/asm/ioctls.h b/arch/parisc/include/uapi/asm/ioctls.h index 4e0614456be..66719c38a36 100644 --- a/arch/parisc/include/asm/ioctls.h +++ b/arch/parisc/include/uapi/asm/ioctls.h @@ -52,7 +52,12 @@  #define TCSETSF2	_IOW('T',0x2D, struct termios2)  #define TIOCGPTN	_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */  #define TIOCSPTLCK	_IOW('T',0x31, int)  /* Lock/unlock Pty */ +#define TIOCGDEV	_IOR('T',0x32, int)  /* Get primary device node of /dev/console */  #define TIOCSIG		_IOW('T',0x36, int)  /* Generate signal on Pty slave */ +#define TIOCVHANGUP	0x5437 +#define TIOCGPKT	_IOR('T', 0x38, int) /* Get packet mode state */ +#define TIOCGPTLCK	_IOR('T', 0x39, int) /* Get Pty lock state */ +#define TIOCGEXCL	_IOR('T', 0x40, int) /* Get exclusive mode state */  #define FIONCLEX	0x5450  /* these numbers need to be adjusted. */  #define FIOCLEX		0x5451 diff --git a/arch/parisc/include/asm/ipcbuf.h b/arch/parisc/include/uapi/asm/ipcbuf.h index bd956c42578..bd956c42578 100644 --- a/arch/parisc/include/asm/ipcbuf.h +++ b/arch/parisc/include/uapi/asm/ipcbuf.h diff --git a/arch/parisc/include/asm/mman.h b/arch/parisc/include/uapi/asm/mman.h index 9749c8afe83..294d251ca7b 100644 --- a/arch/parisc/include/asm/mman.h +++ b/arch/parisc/include/uapi/asm/mman.h @@ -59,8 +59,26 @@  #define MADV_MERGEABLE   65		/* KSM may merge identical pages */  #define MADV_UNMERGEABLE 66		/* KSM may not merge identical pages */ +#define MADV_HUGEPAGE	67		/* Worth backing with hugepages */ +#define MADV_NOHUGEPAGE	68		/* Not worth backing with hugepages */ + +#define MADV_DONTDUMP   69		/* Explicity exclude from the core dump, +					   overrides the coredump filter bits */ +#define MADV_DODUMP	70		/* Clear the MADV_NODUMP flag */ +  /* compatibility flags */  #define MAP_FILE	0  #define MAP_VARIABLE	0 +/* + * When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. + * This gives us 6 bits, which is enough until someone invents 128 bit address + * spaces. + * + * Assume these are all power of twos. + * When 0 use the default page size. + */ +#define MAP_HUGE_SHIFT	26 +#define MAP_HUGE_MASK	0x3f +  #endif /* __PARISC_MMAN_H__ */ diff --git a/arch/parisc/include/asm/msgbuf.h b/arch/parisc/include/uapi/asm/msgbuf.h index fe88f264941..fe88f264941 100644 --- a/arch/parisc/include/asm/msgbuf.h +++ b/arch/parisc/include/uapi/asm/msgbuf.h diff --git a/arch/parisc/include/uapi/asm/pdc.h b/arch/parisc/include/uapi/asm/pdc.h new file mode 100644 index 00000000000..702498f7705 --- /dev/null +++ b/arch/parisc/include/uapi/asm/pdc.h @@ -0,0 +1,427 @@ +#ifndef _UAPI_PARISC_PDC_H +#define _UAPI_PARISC_PDC_H + +/* + *	PDC return values ... + *	All PDC calls return a subset of these errors.  + */ + +#define PDC_WARN		  3	/* Call completed with a warning */ +#define PDC_REQ_ERR_1		  2	/* See above			 */ +#define PDC_REQ_ERR_0		  1	/* Call would generate a requestor error */ +#define PDC_OK			  0	/* Call completed successfully	*/ +#define PDC_BAD_PROC		 -1	/* Called non-existent procedure*/ +#define PDC_BAD_OPTION		 -2	/* Called with non-existent option */ +#define PDC_ERROR		 -3	/* Call could not complete without an error */ +#define PDC_NE_MOD		 -5	/* Module not found		*/ +#define PDC_NE_CELL_MOD		 -7	/* Cell module not found	*/ +#define PDC_INVALID_ARG		-10	/* Called with an invalid argument */ +#define PDC_BUS_POW_WARN	-12	/* Call could not complete in allowed power budget */ +#define PDC_NOT_NARROW		-17	/* Narrow mode not supported	*/ + +/* + *	PDC entry points... + */ + +#define PDC_POW_FAIL	1		/* perform a power-fail		*/ +#define PDC_POW_FAIL_PREPARE	0	/* prepare for powerfail	*/ + +#define PDC_CHASSIS	2		/* PDC-chassis functions	*/ +#define PDC_CHASSIS_DISP	0	/* update chassis display	*/ +#define PDC_CHASSIS_WARN	1	/* return chassis warnings	*/ +#define PDC_CHASSIS_DISPWARN	2	/* update&return chassis status */ +#define PDC_RETURN_CHASSIS_INFO 128	/* HVERSION dependent: return chassis LED/LCD info  */ + +#define PDC_PIM         3               /* Get PIM data                 */ +#define PDC_PIM_HPMC            0       /* Transfer HPMC data           */ +#define PDC_PIM_RETURN_SIZE     1       /* Get Max buffer needed for PIM*/ +#define PDC_PIM_LPMC            2       /* Transfer HPMC data           */ +#define PDC_PIM_SOFT_BOOT       3       /* Transfer Soft Boot data      */ +#define PDC_PIM_TOC             4       /* Transfer TOC data            */ + +#define PDC_MODEL	4		/* PDC model information call	*/ +#define PDC_MODEL_INFO		0	/* returns information 		*/ +#define PDC_MODEL_BOOTID	1	/* set the BOOT_ID		*/ +#define PDC_MODEL_VERSIONS	2	/* returns cpu-internal versions*/ +#define PDC_MODEL_SYSMODEL	3	/* return system model info	*/ +#define PDC_MODEL_ENSPEC	4	/* enable specific option	*/ +#define PDC_MODEL_DISPEC	5	/* disable specific option	*/ +#define PDC_MODEL_CPU_ID	6	/* returns cpu-id (only newer machines!) */ +#define PDC_MODEL_CAPABILITIES	7	/* returns OS32/OS64-flags	*/ +/* Values for PDC_MODEL_CAPABILITIES non-equivalent virtual aliasing support */ +#define  PDC_MODEL_OS64			(1 << 0) +#define  PDC_MODEL_OS32			(1 << 1) +#define  PDC_MODEL_IOPDIR_FDC		(1 << 2) +#define  PDC_MODEL_NVA_MASK		(3 << 4) +#define  PDC_MODEL_NVA_SUPPORTED	(0 << 4) +#define  PDC_MODEL_NVA_SLOW		(1 << 4) +#define  PDC_MODEL_NVA_UNSUPPORTED	(3 << 4) +#define PDC_MODEL_GET_BOOT__OP	8	/* returns boot test options	*/ +#define PDC_MODEL_SET_BOOT__OP	9	/* set boot test options	*/ + +#define PA89_INSTRUCTION_SET	0x4	/* capatibilies returned	*/ +#define PA90_INSTRUCTION_SET	0x8 + +#define PDC_CACHE	5		/* return/set cache (& TLB) info*/ +#define PDC_CACHE_INFO		0	/* returns information 		*/ +#define PDC_CACHE_SET_COH	1	/* set coherence state		*/ +#define PDC_CACHE_RET_SPID	2	/* returns space-ID bits	*/ + +#define PDC_HPA		6		/* return HPA of processor	*/ +#define PDC_HPA_PROCESSOR	0 +#define PDC_HPA_MODULES		1 + +#define PDC_COPROC	7		/* Co-Processor (usually FP unit(s)) */ +#define PDC_COPROC_CFG		0	/* Co-Processor Cfg (FP unit(s) enabled?) */ + +#define PDC_IODC	8		/* talk to IODC			*/ +#define PDC_IODC_READ		0	/* read IODC entry point	*/ +/*      PDC_IODC_RI_			 * INDEX parameter of PDC_IODC_READ */ +#define PDC_IODC_RI_DATA_BYTES	0	/* IODC Data Bytes		*/ +/*				1, 2	   obsolete - HVERSION dependent*/ +#define PDC_IODC_RI_INIT	3	/* Initialize module		*/ +#define PDC_IODC_RI_IO		4	/* Module input/output		*/ +#define PDC_IODC_RI_SPA		5	/* Module input/output		*/ +#define PDC_IODC_RI_CONFIG	6	/* Module input/output		*/ +/*				7	  obsolete - HVERSION dependent */ +#define PDC_IODC_RI_TEST	8	/* Module input/output		*/ +#define PDC_IODC_RI_TLB		9	/* Module input/output		*/ +#define PDC_IODC_NINIT		2	/* non-destructive init		*/ +#define PDC_IODC_DINIT		3	/* destructive init		*/ +#define PDC_IODC_MEMERR		4	/* check for memory errors	*/ +#define PDC_IODC_INDEX_DATA	0	/* get first 16 bytes from mod IODC */ +#define PDC_IODC_BUS_ERROR	-4	/* bus error return value	*/ +#define PDC_IODC_INVALID_INDEX	-5	/* invalid index return value	*/ +#define PDC_IODC_COUNT		-6	/* count is too small		*/ + +#define PDC_TOD		9		/* time-of-day clock (TOD)	*/ +#define PDC_TOD_READ		0	/* read TOD			*/ +#define PDC_TOD_WRITE		1	/* write TOD			*/ + + +#define PDC_STABLE	10		/* stable storage (sprockets)	*/ +#define PDC_STABLE_READ		0 +#define PDC_STABLE_WRITE	1 +#define PDC_STABLE_RETURN_SIZE	2 +#define PDC_STABLE_VERIFY_CONTENTS 3 +#define PDC_STABLE_INITIALIZE	4 + +#define PDC_NVOLATILE	11		/* often not implemented	*/ + +#define PDC_ADD_VALID	12		/* Memory validation PDC call	*/ +#define PDC_ADD_VALID_VERIFY	0	/* Make PDC_ADD_VALID verify region */ + +#define PDC_INSTR	15		/* get instr to invoke PDCE_CHECK() */ + +#define PDC_PROC	16		/* (sprockets)			*/ + +#define PDC_CONFIG	16		/* (sprockets)			*/ +#define PDC_CONFIG_DECONFIG	0 +#define PDC_CONFIG_DRECONFIG	1 +#define PDC_CONFIG_DRETURN_CONFIG 2 + +#define PDC_BLOCK_TLB	18		/* manage hardware block-TLB	*/ +#define PDC_BTLB_INFO		0	/* returns parameter 		*/ +#define PDC_BTLB_INSERT		1	/* insert BTLB entry		*/ +#define PDC_BTLB_PURGE		2	/* purge BTLB entries 		*/ +#define PDC_BTLB_PURGE_ALL	3	/* purge all BTLB entries 	*/ + +#define PDC_TLB		19		/* manage hardware TLB miss handling */ +#define PDC_TLB_INFO		0	/* returns parameter 		*/ +#define PDC_TLB_SETUP		1	/* set up miss handling 	*/ + +#define PDC_MEM		20		/* Manage memory		*/ +#define PDC_MEM_MEMINFO		0 +#define PDC_MEM_ADD_PAGE	1 +#define PDC_MEM_CLEAR_PDT	2 +#define PDC_MEM_READ_PDT	3 +#define PDC_MEM_RESET_CLEAR	4 +#define PDC_MEM_GOODMEM		5 +#define PDC_MEM_TABLE		128	/* Non contig mem map (sprockets) */ +#define PDC_MEM_RETURN_ADDRESS_TABLE	PDC_MEM_TABLE +#define PDC_MEM_GET_MEMORY_SYSTEM_TABLES_SIZE	131 +#define PDC_MEM_GET_MEMORY_SYSTEM_TABLES	132 +#define PDC_MEM_GET_PHYSICAL_LOCATION_FROM_MEMORY_ADDRESS 133 + +#define PDC_MEM_RET_SBE_REPLACED	5	/* PDC_MEM return values */ +#define PDC_MEM_RET_DUPLICATE_ENTRY	4 +#define PDC_MEM_RET_BUF_SIZE_SMALL	1 +#define PDC_MEM_RET_PDT_FULL		-11 +#define PDC_MEM_RET_INVALID_PHYSICAL_LOCATION ~0ULL + +#define PDC_PSW		21		/* Get/Set default System Mask  */ +#define PDC_PSW_MASK		0	/* Return mask                  */ +#define PDC_PSW_GET_DEFAULTS	1	/* Return defaults              */ +#define PDC_PSW_SET_DEFAULTS	2	/* Set default                  */ +#define PDC_PSW_ENDIAN_BIT	1	/* set for big endian           */ +#define PDC_PSW_WIDE_BIT	2	/* set for wide mode            */  + +#define PDC_SYSTEM_MAP	22		/* find system modules		*/ +#define PDC_FIND_MODULE 	0 +#define PDC_FIND_ADDRESS	1 +#define PDC_TRANSLATE_PATH	2 + +#define PDC_SOFT_POWER	23		/* soft power switch		*/ +#define PDC_SOFT_POWER_INFO	0	/* return info about the soft power switch */ +#define PDC_SOFT_POWER_ENABLE	1	/* enable/disable soft power switch */ + + +/* HVERSION dependent */ + +/* The PDC_MEM_MAP calls */ +#define PDC_MEM_MAP	128		/* on s700: return page info	*/ +#define PDC_MEM_MAP_HPA		0	/* returns hpa of a module	*/ + +#define PDC_EEPROM	129		/* EEPROM access		*/ +#define PDC_EEPROM_READ_WORD	0 +#define PDC_EEPROM_WRITE_WORD	1 +#define PDC_EEPROM_READ_BYTE	2 +#define PDC_EEPROM_WRITE_BYTE	3 +#define PDC_EEPROM_EEPROM_PASSWORD -1000 + +#define PDC_NVM		130		/* NVM (non-volatile memory) access */ +#define PDC_NVM_READ_WORD	0 +#define PDC_NVM_WRITE_WORD	1 +#define PDC_NVM_READ_BYTE	2 +#define PDC_NVM_WRITE_BYTE	3 + +#define PDC_SEED_ERROR	132		/* (sprockets)			*/ + +#define PDC_IO		135		/* log error info, reset IO system */ +#define PDC_IO_READ_AND_CLEAR_ERRORS	0 +#define PDC_IO_RESET			1 +#define PDC_IO_RESET_DEVICES		2 +/* sets bits 6&7 (little endian) of the HcControl Register */ +#define PDC_IO_USB_SUSPEND	0xC000000000000000 +#define PDC_IO_EEPROM_IO_ERR_TABLE_FULL	-5	/* return value */ +#define PDC_IO_NO_SUSPEND		-6	/* return value */ + +#define PDC_BROADCAST_RESET 136		/* reset all processors		*/ +#define PDC_DO_RESET		0	/* option: perform a broadcast reset */ +#define PDC_DO_FIRM_TEST_RESET	1	/* Do broadcast reset with bitmap */ +#define PDC_BR_RECONFIGURATION	2	/* reset w/reconfiguration	*/ +#define PDC_FIRM_TEST_MAGIC	0xab9ec36fUL    /* for this reboot only	*/ + +#define PDC_LAN_STATION_ID 138		/* Hversion dependent mechanism for */ +#define PDC_LAN_STATION_ID_READ	0	/* getting the lan station address  */ + +#define	PDC_LAN_STATION_ID_SIZE	6 + +#define PDC_CHECK_RANGES 139		/* (sprockets)			*/ + +#define PDC_NV_SECTIONS	141		/* (sprockets)			*/ + +#define PDC_PERFORMANCE	142		/* performance monitoring	*/ + +#define PDC_SYSTEM_INFO	143		/* system information		*/ +#define PDC_SYSINFO_RETURN_INFO_SIZE	0 +#define PDC_SYSINFO_RRETURN_SYS_INFO	1 +#define PDC_SYSINFO_RRETURN_ERRORS	2 +#define PDC_SYSINFO_RRETURN_WARNINGS	3 +#define PDC_SYSINFO_RETURN_REVISIONS	4 +#define PDC_SYSINFO_RRETURN_DIAGNOSE	5 +#define PDC_SYSINFO_RRETURN_HV_DIAGNOSE	1005 + +#define PDC_RDR		144		/* (sprockets)			*/ +#define PDC_RDR_READ_BUFFER	0 +#define PDC_RDR_READ_SINGLE	1 +#define PDC_RDR_WRITE_SINGLE	2 + +#define PDC_INTRIGUE	145 		/* (sprockets)			*/ +#define PDC_INTRIGUE_WRITE_BUFFER 	 0 +#define PDC_INTRIGUE_GET_SCRATCH_BUFSIZE 1 +#define PDC_INTRIGUE_START_CPU_COUNTERS	 2 +#define PDC_INTRIGUE_STOP_CPU_COUNTERS	 3 + +#define PDC_STI		146 		/* STI access			*/ +/* same as PDC_PCI_XXX values (see below) */ + +/* Legacy PDC definitions for same stuff */ +#define PDC_PCI_INDEX	147 +#define PDC_PCI_INTERFACE_INFO		0 +#define PDC_PCI_SLOT_INFO		1 +#define PDC_PCI_INFLIGHT_BYTES		2 +#define PDC_PCI_READ_CONFIG		3 +#define PDC_PCI_WRITE_CONFIG		4 +#define PDC_PCI_READ_PCI_IO		5 +#define PDC_PCI_WRITE_PCI_IO		6 +#define PDC_PCI_READ_CONFIG_DELAY	7 +#define PDC_PCI_UPDATE_CONFIG_DELAY	8 +#define PDC_PCI_PCI_PATH_TO_PCI_HPA	9 +#define PDC_PCI_PCI_HPA_TO_PCI_PATH	10 +#define PDC_PCI_PCI_PATH_TO_PCI_BUS	11 +#define PDC_PCI_PCI_RESERVED		12 +#define PDC_PCI_PCI_INT_ROUTE_SIZE	13 +#define PDC_PCI_GET_INT_TBL_SIZE	PDC_PCI_PCI_INT_ROUTE_SIZE +#define PDC_PCI_PCI_INT_ROUTE		14 +#define PDC_PCI_GET_INT_TBL		PDC_PCI_PCI_INT_ROUTE  +#define PDC_PCI_READ_MON_TYPE		15 +#define PDC_PCI_WRITE_MON_TYPE		16 + + +/* Get SCSI Interface Card info:  SDTR, SCSI ID, mode (SE vs LVD) */ +#define PDC_INITIATOR	163 +#define PDC_GET_INITIATOR	0 +#define PDC_SET_INITIATOR	1 +#define PDC_DELETE_INITIATOR	2 +#define PDC_RETURN_TABLE_SIZE	3 +#define PDC_RETURN_TABLE	4 + +#define PDC_LINK	165 		/* (sprockets)			*/ +#define PDC_LINK_PCI_ENTRY_POINTS	0  /* list (Arg1) = 0 */ +#define PDC_LINK_USB_ENTRY_POINTS	1  /* list (Arg1) = 1 */ + +/* cl_class + * page 3-33 of IO-Firmware ARS + * IODC ENTRY_INIT(Search first) RET[1] + */ +#define	CL_NULL		0	/* invalid */ +#define	CL_RANDOM	1	/* random access (as disk) */ +#define	CL_SEQU		2	/* sequential access (as tape) */ +#define	CL_DUPLEX	7	/* full-duplex point-to-point (RS-232, Net) */ +#define	CL_KEYBD	8	/* half-duplex console (HIL Keyboard) */ +#define	CL_DISPL	9	/* half-duplex console (display) */ +#define	CL_FC		10	/* FiberChannel access media */ + +/* IODC ENTRY_INIT() */ +#define ENTRY_INIT_SRCH_FRST	2 +#define ENTRY_INIT_SRCH_NEXT	3 +#define ENTRY_INIT_MOD_DEV	4 +#define ENTRY_INIT_DEV		5 +#define ENTRY_INIT_MOD		6 +#define ENTRY_INIT_MSG		9 + +/* IODC ENTRY_IO() */ +#define ENTRY_IO_BOOTIN		0 +#define ENTRY_IO_BOOTOUT	1 +#define ENTRY_IO_CIN		2 +#define ENTRY_IO_COUT		3 +#define ENTRY_IO_CLOSE		4 +#define ENTRY_IO_GETMSG		9 +#define ENTRY_IO_BBLOCK_IN	16 +#define ENTRY_IO_BBLOCK_OUT	17 + +/* IODC ENTRY_SPA() */ + +/* IODC ENTRY_CONFIG() */ + +/* IODC ENTRY_TEST() */ + +/* IODC ENTRY_TLB() */ + +/* constants for OS (NVM...) */ +#define OS_ID_NONE		0	/* Undefined OS ID	*/ +#define OS_ID_HPUX		1	/* HP-UX OS		*/ +#define OS_ID_MPEXL		2	/* MPE XL OS		*/ +#define OS_ID_OSF		3	/* OSF OS		*/ +#define OS_ID_HPRT		4	/* HP-RT OS		*/ +#define OS_ID_NOVEL		5	/* NOVELL OS		*/ +#define OS_ID_LINUX		6	/* Linux		*/ + + +/* constants for PDC_CHASSIS */ +#define OSTAT_OFF		0 +#define OSTAT_FLT		1  +#define OSTAT_TEST		2 +#define OSTAT_INIT		3 +#define OSTAT_SHUT		4 +#define OSTAT_WARN		5 +#define OSTAT_RUN		6 +#define OSTAT_ON		7 + +/* Page Zero constant offsets used by the HPMC handler */ +#define BOOT_CONSOLE_HPA_OFFSET  0x3c0 +#define BOOT_CONSOLE_SPA_OFFSET  0x3c4 +#define BOOT_CONSOLE_PATH_OFFSET 0x3a8 + +/* size of the pdc_result buffer for firmware.c */ +#define NUM_PDC_RESULT	32 + +#if !defined(__ASSEMBLY__) + +#include <linux/types.h> + + +/* flags of the device_path */ +#define	PF_AUTOBOOT	0x80 +#define	PF_AUTOSEARCH	0x40 +#define	PF_TIMER	0x0F + +struct device_path {		/* page 1-69 */ +	unsigned char flags;	/* flags see above! */ +	unsigned char bc[6];	/* bus converter routing info */ +	unsigned char mod; +	unsigned int  layers[6];/* device-specific layer-info */ +} __attribute__((aligned(8))) ; + +struct pz_device { +	struct	device_path dp;	/* see above */ +	/* struct	iomod *hpa; */ +	unsigned int hpa;	/* HPA base address */ +	/* char	*spa; */ +	unsigned int spa;	/* SPA base address */ +	/* int	(*iodc_io)(struct iomod*, ...); */ +	unsigned int iodc_io;	/* device entry point */ +	short	pad;		/* reserved */ +	unsigned short cl_class;/* see below */ +} __attribute__((aligned(8))) ; + +struct zeropage { +	/* [0x000] initialize vectors (VEC) */ +	unsigned int	vec_special;		/* must be zero */ +	/* int	(*vec_pow_fail)(void);*/ +	unsigned int	vec_pow_fail; /* power failure handler */ +	/* int	(*vec_toc)(void); */ +	unsigned int	vec_toc; +	unsigned int	vec_toclen; +	/* int	(*vec_rendz)(void); */ +	unsigned int vec_rendz; +	int	vec_pow_fail_flen; +	int	vec_pad[10];		 +	 +	/* [0x040] reserved processor dependent */ +	int	pad0[112]; + +	/* [0x200] reserved */ +	int	pad1[84]; + +	/* [0x350] memory configuration (MC) */ +	int	memc_cont;		/* contiguous mem size (bytes) */ +	int	memc_phsize;		/* physical memory size */ +	int	memc_adsize;		/* additional mem size, bytes of SPA space used by PDC */ +	unsigned int mem_pdc_hi;	/* used for 64-bit */ + +	/* [0x360] various parameters for the boot-CPU */ +	/* unsigned int *mem_booterr[8]; */ +	unsigned int mem_booterr[8];	/* ptr to boot errors */ +	unsigned int mem_free;		/* first location, where OS can be loaded */ +	/* struct iomod *mem_hpa; */ +	unsigned int mem_hpa;		/* HPA of the boot-CPU */ +	/* int (*mem_pdc)(int, ...); */ +	unsigned int mem_pdc;		/* PDC entry point */ +	unsigned int mem_10msec;	/* number of clock ticks in 10msec */ + +	/* [0x390] initial memory module (IMM) */ +	/* struct iomod *imm_hpa; */ +	unsigned int imm_hpa;		/* HPA of the IMM */ +	int	imm_soft_boot;		/* 0 = was hard boot, 1 = was soft boot */ +	unsigned int	imm_spa_size;		/* SPA size of the IMM in bytes */ +	unsigned int	imm_max_mem;		/* bytes of mem in IMM */ + +	/* [0x3A0] boot console, display device and keyboard */ +	struct pz_device mem_cons;	/* description of console device */ +	struct pz_device mem_boot;	/* description of boot device */ +	struct pz_device mem_kbd;	/* description of keyboard device */ + +	/* [0x430] reserved */ +	int	pad430[116]; + +	/* [0x600] processor dependent */ +	__u32	pad600[1]; +	__u32	proc_sti;		/* pointer to STI ROM */ +	__u32	pad608[126]; +}; + +#endif /* !defined(__ASSEMBLY__) */ + +#endif /* _UAPI_PARISC_PDC_H */ diff --git a/arch/parisc/include/uapi/asm/posix_types.h b/arch/parisc/include/uapi/asm/posix_types.h new file mode 100644 index 00000000000..b9344256f76 --- /dev/null +++ b/arch/parisc/include/uapi/asm/posix_types.h @@ -0,0 +1,24 @@ +#ifndef __ARCH_PARISC_POSIX_TYPES_H +#define __ARCH_PARISC_POSIX_TYPES_H + +/* + * This file is generally used by user-level software, so you need to + * be a little careful about namespace pollution etc.  Also, we cannot + * assume GCC is being used. + */ + +typedef unsigned short		__kernel_mode_t; +#define __kernel_mode_t __kernel_mode_t + +typedef unsigned short		__kernel_ipc_pid_t; +#define __kernel_ipc_pid_t __kernel_ipc_pid_t + +typedef int			__kernel_suseconds_t; +#define __kernel_suseconds_t __kernel_suseconds_t + +typedef long long		__kernel_off64_t; +typedef unsigned long long	__kernel_ino64_t; + +#include <asm-generic/posix_types.h> + +#endif diff --git a/arch/parisc/include/uapi/asm/ptrace.h b/arch/parisc/include/uapi/asm/ptrace.h new file mode 100644 index 00000000000..c4fa6c8b9ad --- /dev/null +++ b/arch/parisc/include/uapi/asm/ptrace.h @@ -0,0 +1,47 @@ +/* written by Philipp Rumpf, Copyright (C) 1999 SuSE GmbH Nuernberg +** Copyright (C) 2000 Grant Grundler, Hewlett-Packard +*/ +#ifndef _UAPI_PARISC_PTRACE_H +#define _UAPI_PARISC_PTRACE_H + + +#include <linux/types.h> + +/* This struct defines the way the registers are stored on the  + * stack during a system call. + * + * N.B. gdb/strace care about the size and offsets within this + * structure. If you change things, you may break object compatibility + * for those applications. + */ + +struct pt_regs { +	unsigned long gr[32];	/* PSW is in gr[0] */ +	__u64 fr[32]; +	unsigned long sr[ 8]; +	unsigned long iasq[2]; +	unsigned long iaoq[2]; +	unsigned long cr27; +	unsigned long pad0;     /* available for other uses */ +	unsigned long orig_r28; +	unsigned long ksp; +	unsigned long kpc; +	unsigned long sar;	/* CR11 */ +	unsigned long iir;	/* CR19 */ +	unsigned long isr;	/* CR20 */ +	unsigned long ior;	/* CR21 */ +	unsigned long ipsw;	/* CR22 */ +}; + +/* + * The numbers chosen here are somewhat arbitrary but absolutely MUST + * not overlap with any of the number assigned in <linux/ptrace.h>. + * + * These ones are taken from IA-64 on the assumption that theirs are + * the most correct (and we also want to support PTRACE_SINGLEBLOCK + * since we have taken branch traps too) + */ +#define PTRACE_SINGLEBLOCK	12	/* resume execution until next branch */ + + +#endif /* _UAPI_PARISC_PTRACE_H */ diff --git a/arch/parisc/include/asm/sembuf.h b/arch/parisc/include/uapi/asm/sembuf.h index 1e59ffd3bd1..1e59ffd3bd1 100644 --- a/arch/parisc/include/asm/sembuf.h +++ b/arch/parisc/include/uapi/asm/sembuf.h diff --git a/arch/parisc/include/asm/setup.h b/arch/parisc/include/uapi/asm/setup.h index 7da2e5b8747..7da2e5b8747 100644 --- a/arch/parisc/include/asm/setup.h +++ b/arch/parisc/include/uapi/asm/setup.h diff --git a/arch/parisc/include/asm/shmbuf.h b/arch/parisc/include/uapi/asm/shmbuf.h index 0a3eada1863..0a3eada1863 100644 --- a/arch/parisc/include/asm/shmbuf.h +++ b/arch/parisc/include/uapi/asm/shmbuf.h diff --git a/arch/parisc/include/asm/sigcontext.h b/arch/parisc/include/uapi/asm/sigcontext.h index 27ef31bb3b6..27ef31bb3b6 100644 --- a/arch/parisc/include/asm/sigcontext.h +++ b/arch/parisc/include/uapi/asm/sigcontext.h diff --git a/arch/parisc/include/asm/siginfo.h b/arch/parisc/include/uapi/asm/siginfo.h index d7034728f37..d7034728f37 100644 --- a/arch/parisc/include/asm/siginfo.h +++ b/arch/parisc/include/uapi/asm/siginfo.h diff --git a/arch/parisc/include/uapi/asm/signal.h b/arch/parisc/include/uapi/asm/signal.h new file mode 100644 index 00000000000..f5645d6a89f --- /dev/null +++ b/arch/parisc/include/uapi/asm/signal.h @@ -0,0 +1,110 @@ +#ifndef _UAPI_ASM_PARISC_SIGNAL_H +#define _UAPI_ASM_PARISC_SIGNAL_H + +#define SIGHUP		 1 +#define SIGINT		 2 +#define SIGQUIT		 3 +#define SIGILL		 4 +#define SIGTRAP		 5 +#define SIGABRT		 6 +#define SIGIOT		 6 +#define SIGEMT		 7 +#define SIGFPE		 8 +#define SIGKILL		 9 +#define SIGBUS		10 +#define SIGSEGV		11 +#define SIGSYS		12 /* Linux doesn't use this */ +#define SIGPIPE		13 +#define SIGALRM		14 +#define SIGTERM		15 +#define SIGUSR1		16 +#define SIGUSR2		17 +#define SIGCHLD		18 +#define SIGPWR		19 +#define SIGVTALRM	20 +#define SIGPROF		21 +#define SIGIO		22 +#define SIGPOLL		SIGIO +#define SIGWINCH	23 +#define SIGSTOP		24 +#define SIGTSTP		25 +#define SIGCONT		26 +#define SIGTTIN		27 +#define SIGTTOU		28 +#define SIGURG		29 +#define SIGLOST		30 /* Linux doesn't use this either */ +#define	SIGUNUSED	31 +#define SIGRESERVE	SIGUNUSED + +#define SIGXCPU		33 +#define SIGXFSZ		34 +#define SIGSTKFLT	36 + +/* These should not be considered constants from userland.  */ +#define SIGRTMIN	37 +#define SIGRTMAX	_NSIG /* it's 44 under HP/UX */ + +/* + * SA_FLAGS values: + * + * SA_ONSTACK indicates that a registered stack_t will be used. + * SA_RESTART flag to get restarting signals (which were the default long ago) + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. + * SA_RESETHAND clears the handler when the signal is delivered. + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. + * SA_NODEFER prevents the current signal from being masked in the handler. + * + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single + * Unix names RESETHAND and NODEFER respectively. + */ +#define SA_ONSTACK	0x00000001 +#define SA_RESETHAND	0x00000004 +#define SA_NOCLDSTOP	0x00000008 +#define SA_SIGINFO	0x00000010 +#define SA_NODEFER	0x00000020 +#define SA_RESTART	0x00000040 +#define SA_NOCLDWAIT	0x00000080 +#define _SA_SIGGFAULT	0x00000100 /* HPUX */ + +#define SA_NOMASK	SA_NODEFER +#define SA_ONESHOT	SA_RESETHAND + +#define MINSIGSTKSZ	2048 +#define SIGSTKSZ	8192 + + +#define SIG_BLOCK          0	/* for blocking signals */ +#define SIG_UNBLOCK        1	/* for unblocking signals */ +#define SIG_SETMASK        2	/* for setting the signal mask */ + +#define SIG_DFL	((__sighandler_t)0)	/* default signal handling */ +#define SIG_IGN	((__sighandler_t)1)	/* ignore signal */ +#define SIG_ERR	((__sighandler_t)-1)	/* error return from signal */ + +# ifndef __ASSEMBLY__ + +#  include <linux/types.h> + +/* Avoid too many header ordering problems.  */ +struct siginfo; + +/* Type of a signal handler.  */ +#ifdef CONFIG_64BIT +/* function pointers on 64-bit parisc are pointers to little structs and the + * compiler doesn't support code which changes or tests the address of + * the function in the little struct.  This is really ugly -PB + */ +typedef char __user *__sighandler_t; +#else +typedef void __signalfn_t(int); +typedef __signalfn_t __user *__sighandler_t; +#endif + +typedef struct sigaltstack { +	void __user *ss_sp; +	int ss_flags; +	size_t ss_size; +} stack_t; + +#endif /* !__ASSEMBLY */ +#endif /* _UAPI_ASM_PARISC_SIGNAL_H */ diff --git a/arch/parisc/include/uapi/asm/socket.h b/arch/parisc/include/uapi/asm/socket.h new file mode 100644 index 00000000000..fe35ceacf0e --- /dev/null +++ b/arch/parisc/include/uapi/asm/socket.h @@ -0,0 +1,82 @@ +#ifndef _UAPI_ASM_SOCKET_H +#define _UAPI_ASM_SOCKET_H + +#include <asm/sockios.h> + +/* For setsockopt(2) */ +#define SOL_SOCKET	0xffff + +#define SO_DEBUG	0x0001 +#define SO_REUSEADDR	0x0004 +#define SO_KEEPALIVE	0x0008 +#define SO_DONTROUTE	0x0010 +#define SO_BROADCAST	0x0020 +#define SO_LINGER	0x0080 +#define SO_OOBINLINE	0x0100 +#define SO_REUSEPORT	0x0200 +#define SO_SNDBUF	0x1001 +#define SO_RCVBUF	0x1002 +#define SO_SNDBUFFORCE	0x100a +#define SO_RCVBUFFORCE	0x100b +#define SO_SNDLOWAT	0x1003 +#define SO_RCVLOWAT	0x1004 +#define SO_SNDTIMEO	0x1005 +#define SO_RCVTIMEO	0x1006 +#define SO_ERROR	0x1007 +#define SO_TYPE		0x1008 +#define SO_PROTOCOL	0x1028 +#define SO_DOMAIN	0x1029 +#define SO_PEERNAME	0x2000 + +#define SO_NO_CHECK	0x400b +#define SO_PRIORITY	0x400c +#define SO_BSDCOMPAT	0x400e +#define SO_PASSCRED	0x4010 +#define SO_PEERCRED	0x4011 +#define SO_TIMESTAMP	0x4012 +#define SCM_TIMESTAMP	SO_TIMESTAMP +#define SO_TIMESTAMPNS	0x4013 +#define SCM_TIMESTAMPNS	SO_TIMESTAMPNS + +/* Security levels - as per NRL IPv6 - don't actually do anything */ +#define SO_SECURITY_AUTHENTICATION		0x4016 +#define SO_SECURITY_ENCRYPTION_TRANSPORT	0x4017 +#define SO_SECURITY_ENCRYPTION_NETWORK		0x4018 + +#define SO_BINDTODEVICE	0x4019 + +/* Socket filtering */ +#define SO_ATTACH_FILTER        0x401a +#define SO_DETACH_FILTER        0x401b +#define SO_GET_FILTER		SO_ATTACH_FILTER + +#define SO_ACCEPTCONN		0x401c + +#define SO_PEERSEC		0x401d +#define SO_PASSSEC		0x401e + +#define SO_MARK			0x401f + +#define SO_TIMESTAMPING		0x4020 +#define SCM_TIMESTAMPING	SO_TIMESTAMPING + +#define SO_RXQ_OVFL             0x4021 + +#define SO_WIFI_STATUS		0x4022 +#define SCM_WIFI_STATUS		SO_WIFI_STATUS +#define SO_PEEK_OFF		0x4023 + +/* Instruct lower device to use last 4-bytes of skb data as FCS */ +#define SO_NOFCS		0x4024 + +#define SO_LOCK_FILTER		0x4025 + +#define SO_SELECT_ERR_QUEUE	0x4026 + +#define SO_BUSY_POLL		0x4027 + +#define SO_MAX_PACING_RATE	0x4028 + +#define SO_BPF_EXTENSIONS	0x4029 + +#endif /* _UAPI_ASM_SOCKET_H */ diff --git a/arch/parisc/include/asm/sockios.h b/arch/parisc/include/uapi/asm/sockios.h index dabfbc7483f..dabfbc7483f 100644 --- a/arch/parisc/include/asm/sockios.h +++ b/arch/parisc/include/uapi/asm/sockios.h diff --git a/arch/parisc/include/asm/stat.h b/arch/parisc/include/uapi/asm/stat.h index 9d5fbbc5c31..b606b366d0a 100644 --- a/arch/parisc/include/asm/stat.h +++ b/arch/parisc/include/uapi/asm/stat.h @@ -5,67 +5,65 @@  struct stat {  	unsigned int	st_dev;		/* dev_t is 32 bits on parisc */ -	ino_t		st_ino;		/* 32 bits */ -	mode_t		st_mode;	/* 16 bits */ -	nlink_t		st_nlink;	/* 16 bits */ +	unsigned int	st_ino;		/* 32 bits */ +	unsigned short	st_mode;	/* 16 bits */ +	unsigned short	st_nlink;	/* 16 bits */  	unsigned short	st_reserved1;	/* old st_uid */  	unsigned short	st_reserved2;	/* old st_gid */  	unsigned int	st_rdev; -	off_t		st_size; -	time_t		st_atime; +	signed int	st_size; +	signed int	st_atime;  	unsigned int	st_atime_nsec; -	time_t		st_mtime; +	signed int	st_mtime;  	unsigned int	st_mtime_nsec; -	time_t		st_ctime; +	signed int	st_ctime;  	unsigned int	st_ctime_nsec;  	int		st_blksize;  	int		st_blocks;  	unsigned int	__unused1;	/* ACL stuff */  	unsigned int	__unused2;	/* network */ -	ino_t		__unused3;	/* network */ +	unsigned int	__unused3;	/* network */  	unsigned int	__unused4;	/* cnodes */  	unsigned short	__unused5;	/* netsite */  	short		st_fstype;  	unsigned int	st_realdev;  	unsigned short	st_basemode;  	unsigned short	st_spareshort; -	uid_t		st_uid; -	gid_t		st_gid; +	unsigned int	st_uid; +	unsigned int	st_gid;  	unsigned int	st_spare4[3];  };  #define STAT_HAVE_NSEC -typedef __kernel_off64_t	off64_t; -  struct hpux_stat64 {  	unsigned int	st_dev;		/* dev_t is 32 bits on parisc */ -	ino_t           st_ino;         /* 32 bits */ -	mode_t		st_mode;	/* 16 bits */ -	nlink_t		st_nlink;	/* 16 bits */ +	unsigned int	st_ino;         /* 32 bits */ +	unsigned short	st_mode;	/* 16 bits */ +	unsigned short	st_nlink;	/* 16 bits */  	unsigned short	st_reserved1;	/* old st_uid */  	unsigned short	st_reserved2;	/* old st_gid */  	unsigned int	st_rdev; -	off64_t		st_size; -	time_t		st_atime; +	signed long long st_size; +	signed int	st_atime;  	unsigned int	st_spare1; -	time_t		st_mtime; +	signed int	st_mtime;  	unsigned int	st_spare2; -	time_t		st_ctime; +	signed int	st_ctime;  	unsigned int	st_spare3;  	int		st_blksize; -	__u64		st_blocks; +	unsigned long long st_blocks;  	unsigned int	__unused1;	/* ACL stuff */  	unsigned int	__unused2;	/* network */ -	ino_t           __unused3;      /* network */ +	unsigned int	__unused3;      /* network */  	unsigned int	__unused4;	/* cnodes */  	unsigned short	__unused5;	/* netsite */  	short		st_fstype;  	unsigned int	st_realdev;  	unsigned short	st_basemode;  	unsigned short	st_spareshort; -	uid_t		st_uid; -	gid_t		st_gid; +	unsigned int	st_uid; +	unsigned int	st_gid;  	unsigned int	st_spare4[3];  }; diff --git a/arch/parisc/include/asm/statfs.h b/arch/parisc/include/uapi/asm/statfs.h index 324bea905dc..324bea905dc 100644 --- a/arch/parisc/include/asm/statfs.h +++ b/arch/parisc/include/uapi/asm/statfs.h diff --git a/arch/parisc/include/asm/swab.h b/arch/parisc/include/uapi/asm/swab.h index e78403b129e..e78403b129e 100644 --- a/arch/parisc/include/asm/swab.h +++ b/arch/parisc/include/uapi/asm/swab.h diff --git a/arch/parisc/include/asm/termbits.h b/arch/parisc/include/uapi/asm/termbits.h index d1ab92177a5..d1ab92177a5 100644 --- a/arch/parisc/include/asm/termbits.h +++ b/arch/parisc/include/uapi/asm/termbits.h diff --git a/arch/parisc/include/uapi/asm/termios.h b/arch/parisc/include/uapi/asm/termios.h new file mode 100644 index 00000000000..f3377395070 --- /dev/null +++ b/arch/parisc/include/uapi/asm/termios.h @@ -0,0 +1,43 @@ +#ifndef _UAPI_PARISC_TERMIOS_H +#define _UAPI_PARISC_TERMIOS_H + +#include <asm/termbits.h> +#include <asm/ioctls.h> + +struct winsize { +	unsigned short ws_row; +	unsigned short ws_col; +	unsigned short ws_xpixel; +	unsigned short ws_ypixel; +}; + +#define NCC 8 +struct termio { +	unsigned short c_iflag;		/* input mode flags */ +	unsigned short c_oflag;		/* output mode flags */ +	unsigned short c_cflag;		/* control mode flags */ +	unsigned short c_lflag;		/* local mode flags */ +	unsigned char c_line;		/* line discipline */ +	unsigned char c_cc[NCC];	/* control characters */ +}; + +/* modem lines */ +#define TIOCM_LE	0x001 +#define TIOCM_DTR	0x002 +#define TIOCM_RTS	0x004 +#define TIOCM_ST	0x008 +#define TIOCM_SR	0x010 +#define TIOCM_CTS	0x020 +#define TIOCM_CAR	0x040 +#define TIOCM_RNG	0x080 +#define TIOCM_DSR	0x100 +#define TIOCM_CD	TIOCM_CAR +#define TIOCM_RI	TIOCM_RNG +#define TIOCM_OUT1	0x2000 +#define TIOCM_OUT2	0x4000 +#define TIOCM_LOOP	0x8000 + +/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ + + +#endif /* _UAPI_PARISC_TERMIOS_H */ diff --git a/arch/parisc/include/uapi/asm/types.h b/arch/parisc/include/uapi/asm/types.h new file mode 100644 index 00000000000..8866f9bbdea --- /dev/null +++ b/arch/parisc/include/uapi/asm/types.h @@ -0,0 +1,6 @@ +#ifndef _PARISC_TYPES_H +#define _PARISC_TYPES_H + +#include <asm-generic/int-ll64.h> + +#endif diff --git a/arch/parisc/include/uapi/asm/unistd.h b/arch/parisc/include/uapi/asm/unistd.h new file mode 100644 index 00000000000..47e0e21d227 --- /dev/null +++ b/arch/parisc/include/uapi/asm/unistd.h @@ -0,0 +1,844 @@ +#ifndef _UAPI_ASM_PARISC_UNISTD_H_ +#define _UAPI_ASM_PARISC_UNISTD_H_ + +/* + * This file contains the system call numbers. + */ + +/* + *   HP-UX system calls get their native numbers for binary compatibility. + */ + +#define __NR_HPUX_exit                    1 +#define __NR_HPUX_fork                    2 +#define __NR_HPUX_read                    3 +#define __NR_HPUX_write                   4 +#define __NR_HPUX_open                    5 +#define __NR_HPUX_close                   6 +#define __NR_HPUX_wait                    7 +#define __NR_HPUX_creat                   8 +#define __NR_HPUX_link                    9 +#define __NR_HPUX_unlink                 10 +#define __NR_HPUX_execv                  11 +#define __NR_HPUX_chdir                  12 +#define __NR_HPUX_time                   13 +#define __NR_HPUX_mknod                  14 +#define __NR_HPUX_chmod                  15 +#define __NR_HPUX_chown                  16 +#define __NR_HPUX_break                  17 +#define __NR_HPUX_lchmod                 18 +#define __NR_HPUX_lseek                  19 +#define __NR_HPUX_getpid                 20 +#define __NR_HPUX_mount                  21 +#define __NR_HPUX_umount                 22 +#define __NR_HPUX_setuid                 23 +#define __NR_HPUX_getuid                 24 +#define __NR_HPUX_stime                  25 +#define __NR_HPUX_ptrace                 26 +#define __NR_HPUX_alarm                  27 +#define __NR_HPUX_oldfstat               28 +#define __NR_HPUX_pause                  29 +#define __NR_HPUX_utime                  30 +#define __NR_HPUX_stty                   31 +#define __NR_HPUX_gtty                   32 +#define __NR_HPUX_access                 33 +#define __NR_HPUX_nice                   34 +#define __NR_HPUX_ftime                  35 +#define __NR_HPUX_sync                   36 +#define __NR_HPUX_kill                   37 +#define __NR_HPUX_stat                   38 +#define __NR_HPUX_setpgrp3               39 +#define __NR_HPUX_lstat                  40 +#define __NR_HPUX_dup                    41 +#define __NR_HPUX_pipe                   42 +#define __NR_HPUX_times                  43 +#define __NR_HPUX_profil                 44 +#define __NR_HPUX_ki_call                45 +#define __NR_HPUX_setgid                 46 +#define __NR_HPUX_getgid                 47 +#define __NR_HPUX_sigsys                 48 +#define __NR_HPUX_reserved1              49 +#define __NR_HPUX_reserved2              50 +#define __NR_HPUX_acct                   51 +#define __NR_HPUX_set_userthreadid       52 +#define __NR_HPUX_oldlock                53 +#define __NR_HPUX_ioctl                  54 +#define __NR_HPUX_reboot                 55 +#define __NR_HPUX_symlink                56 +#define __NR_HPUX_utssys                 57 +#define __NR_HPUX_readlink               58 +#define __NR_HPUX_execve                 59 +#define __NR_HPUX_umask                  60 +#define __NR_HPUX_chroot                 61 +#define __NR_HPUX_fcntl                  62 +#define __NR_HPUX_ulimit                 63 +#define __NR_HPUX_getpagesize            64 +#define __NR_HPUX_mremap                 65 +#define __NR_HPUX_vfork                  66 +#define __NR_HPUX_vread                  67 +#define __NR_HPUX_vwrite                 68 +#define __NR_HPUX_sbrk                   69 +#define __NR_HPUX_sstk                   70 +#define __NR_HPUX_mmap                   71 +#define __NR_HPUX_vadvise                72 +#define __NR_HPUX_munmap                 73 +#define __NR_HPUX_mprotect               74 +#define __NR_HPUX_madvise                75 +#define __NR_HPUX_vhangup                76 +#define __NR_HPUX_swapoff                77 +#define __NR_HPUX_mincore                78 +#define __NR_HPUX_getgroups              79 +#define __NR_HPUX_setgroups              80 +#define __NR_HPUX_getpgrp2               81 +#define __NR_HPUX_setpgrp2               82 +#define __NR_HPUX_setitimer              83 +#define __NR_HPUX_wait3                  84 +#define __NR_HPUX_swapon                 85 +#define __NR_HPUX_getitimer              86 +#define __NR_HPUX_gethostname42          87 +#define __NR_HPUX_sethostname42          88 +#define __NR_HPUX_getdtablesize          89 +#define __NR_HPUX_dup2                   90 +#define __NR_HPUX_getdopt                91 +#define __NR_HPUX_fstat                  92 +#define __NR_HPUX_select                 93 +#define __NR_HPUX_setdopt                94 +#define __NR_HPUX_fsync                  95 +#define __NR_HPUX_setpriority            96 +#define __NR_HPUX_socket_old             97 +#define __NR_HPUX_connect_old            98 +#define __NR_HPUX_accept_old             99 +#define __NR_HPUX_getpriority           100 +#define __NR_HPUX_send_old              101 +#define __NR_HPUX_recv_old              102 +#define __NR_HPUX_socketaddr_old        103 +#define __NR_HPUX_bind_old              104 +#define __NR_HPUX_setsockopt_old        105 +#define __NR_HPUX_listen_old            106 +#define __NR_HPUX_vtimes_old            107 +#define __NR_HPUX_sigvector             108 +#define __NR_HPUX_sigblock              109 +#define __NR_HPUX_siggetmask            110 +#define __NR_HPUX_sigpause              111 +#define __NR_HPUX_sigstack              112 +#define __NR_HPUX_recvmsg_old           113 +#define __NR_HPUX_sendmsg_old           114 +#define __NR_HPUX_vtrace_old            115 +#define __NR_HPUX_gettimeofday          116 +#define __NR_HPUX_getrusage             117 +#define __NR_HPUX_getsockopt_old        118 +#define __NR_HPUX_resuba_old            119 +#define __NR_HPUX_readv                 120 +#define __NR_HPUX_writev                121 +#define __NR_HPUX_settimeofday          122 +#define __NR_HPUX_fchown                123 +#define __NR_HPUX_fchmod                124 +#define __NR_HPUX_recvfrom_old          125 +#define __NR_HPUX_setresuid             126 +#define __NR_HPUX_setresgid             127 +#define __NR_HPUX_rename                128 +#define __NR_HPUX_truncate              129 +#define __NR_HPUX_ftruncate             130 +#define __NR_HPUX_flock_old             131 +#define __NR_HPUX_sysconf               132 +#define __NR_HPUX_sendto_old            133 +#define __NR_HPUX_shutdown_old          134 +#define __NR_HPUX_socketpair_old        135 +#define __NR_HPUX_mkdir                 136 +#define __NR_HPUX_rmdir                 137 +#define __NR_HPUX_utimes_old            138 +#define __NR_HPUX_sigcleanup_old        139 +#define __NR_HPUX_setcore               140 +#define __NR_HPUX_getpeername_old       141 +#define __NR_HPUX_gethostid             142 +#define __NR_HPUX_sethostid             143 +#define __NR_HPUX_getrlimit             144 +#define __NR_HPUX_setrlimit             145 +#define __NR_HPUX_killpg_old            146 +#define __NR_HPUX_cachectl              147 +#define __NR_HPUX_quotactl              148 +#define __NR_HPUX_get_sysinfo           149 +#define __NR_HPUX_getsockname_old       150 +#define __NR_HPUX_privgrp               151 +#define __NR_HPUX_rtprio                152 +#define __NR_HPUX_plock                 153 +#define __NR_HPUX_reserved3             154 +#define __NR_HPUX_lockf                 155 +#define __NR_HPUX_semget                156 +#define __NR_HPUX_osemctl               157 +#define __NR_HPUX_semop                 158 +#define __NR_HPUX_msgget                159 +#define __NR_HPUX_omsgctl               160 +#define __NR_HPUX_msgsnd                161 +#define __NR_HPUX_msgrecv               162 +#define __NR_HPUX_shmget                163 +#define __NR_HPUX_oshmctl               164 +#define __NR_HPUX_shmat                 165 +#define __NR_HPUX_shmdt                 166 +#define __NR_HPUX_m68020_advise         167 +/* [168,189] are for Discless/DUX */ +#define __NR_HPUX_csp                   168 +#define __NR_HPUX_cluster               169 +#define __NR_HPUX_mkrnod                170 +#define __NR_HPUX_test                  171 +#define __NR_HPUX_unsp_open             172 +#define __NR_HPUX_reserved4             173 +#define __NR_HPUX_getcontext_old        174 +#define __NR_HPUX_osetcontext           175 +#define __NR_HPUX_bigio                 176 +#define __NR_HPUX_pipenode              177 +#define __NR_HPUX_lsync                 178 +#define __NR_HPUX_getmachineid          179 +#define __NR_HPUX_cnodeid               180 +#define __NR_HPUX_cnodes                181 +#define __NR_HPUX_swapclients           182 +#define __NR_HPUX_rmt_process           183 +#define __NR_HPUX_dskless_stats         184 +#define __NR_HPUX_sigprocmask           185 +#define __NR_HPUX_sigpending            186 +#define __NR_HPUX_sigsuspend            187 +#define __NR_HPUX_sigaction             188 +#define __NR_HPUX_reserved5             189 +#define __NR_HPUX_nfssvc                190 +#define __NR_HPUX_getfh                 191 +#define __NR_HPUX_getdomainname         192 +#define __NR_HPUX_setdomainname         193 +#define __NR_HPUX_async_daemon          194 +#define __NR_HPUX_getdirentries         195 +#define __NR_HPUX_statfs                196 +#define __NR_HPUX_fstatfs               197 +#define __NR_HPUX_vfsmount              198 +#define __NR_HPUX_reserved6             199 +#define __NR_HPUX_waitpid               200 +/* 201 - 223 missing */ +#define __NR_HPUX_sigsetreturn          224 +#define __NR_HPUX_sigsetstatemask       225 +/* 226 missing */ +#define __NR_HPUX_cs                    227 +#define __NR_HPUX_cds                   228 +#define __NR_HPUX_set_no_trunc          229 +#define __NR_HPUX_pathconf              230 +#define __NR_HPUX_fpathconf             231 +/* 232, 233 missing */ +#define __NR_HPUX_nfs_fcntl             234 +#define __NR_HPUX_ogetacl               235 +#define __NR_HPUX_ofgetacl              236 +#define __NR_HPUX_osetacl               237 +#define __NR_HPUX_ofsetacl              238 +#define __NR_HPUX_pstat                 239 +#define __NR_HPUX_getaudid              240 +#define __NR_HPUX_setaudid              241 +#define __NR_HPUX_getaudproc            242 +#define __NR_HPUX_setaudproc            243 +#define __NR_HPUX_getevent              244 +#define __NR_HPUX_setevent              245 +#define __NR_HPUX_audwrite              246 +#define __NR_HPUX_audswitch             247 +#define __NR_HPUX_audctl                248 +#define __NR_HPUX_ogetaccess            249 +#define __NR_HPUX_fsctl                 250 +/* 251 - 258 missing */ +#define __NR_HPUX_swapfs                259 +#define __NR_HPUX_fss                   260 +/* 261 - 266 missing */ +#define __NR_HPUX_tsync                 267 +#define __NR_HPUX_getnumfds             268 +#define __NR_HPUX_poll                  269 +#define __NR_HPUX_getmsg                270 +#define __NR_HPUX_putmsg                271 +#define __NR_HPUX_fchdir                272 +#define __NR_HPUX_getmount_cnt          273 +#define __NR_HPUX_getmount_entry        274 +#define __NR_HPUX_accept                275 +#define __NR_HPUX_bind                  276 +#define __NR_HPUX_connect               277 +#define __NR_HPUX_getpeername           278 +#define __NR_HPUX_getsockname           279 +#define __NR_HPUX_getsockopt            280 +#define __NR_HPUX_listen                281 +#define __NR_HPUX_recv                  282 +#define __NR_HPUX_recvfrom              283 +#define __NR_HPUX_recvmsg               284 +#define __NR_HPUX_send                  285 +#define __NR_HPUX_sendmsg               286 +#define __NR_HPUX_sendto                287 +#define __NR_HPUX_setsockopt            288 +#define __NR_HPUX_shutdown              289 +#define __NR_HPUX_socket                290 +#define __NR_HPUX_socketpair            291 +#define __NR_HPUX_proc_open             292 +#define __NR_HPUX_proc_close            293 +#define __NR_HPUX_proc_send             294 +#define __NR_HPUX_proc_recv             295 +#define __NR_HPUX_proc_sendrecv         296 +#define __NR_HPUX_proc_syscall          297 +/* 298 - 311 missing */ +#define __NR_HPUX_semctl                312 +#define __NR_HPUX_msgctl                313 +#define __NR_HPUX_shmctl                314 +#define __NR_HPUX_mpctl                 315 +#define __NR_HPUX_exportfs              316 +#define __NR_HPUX_getpmsg               317 +#define __NR_HPUX_putpmsg               318 +/* 319 missing */ +#define __NR_HPUX_msync                 320 +#define __NR_HPUX_msleep                321 +#define __NR_HPUX_mwakeup               322 +#define __NR_HPUX_msem_init             323 +#define __NR_HPUX_msem_remove           324 +#define __NR_HPUX_adjtime               325 +#define __NR_HPUX_kload                 326 +#define __NR_HPUX_fattach               327 +#define __NR_HPUX_fdetach               328 +#define __NR_HPUX_serialize             329 +#define __NR_HPUX_statvfs               330 +#define __NR_HPUX_fstatvfs              331 +#define __NR_HPUX_lchown                332 +#define __NR_HPUX_getsid                333 +#define __NR_HPUX_sysfs                 334 +/* 335, 336 missing */ +#define __NR_HPUX_sched_setparam        337 +#define __NR_HPUX_sched_getparam        338 +#define __NR_HPUX_sched_setscheduler    339 +#define __NR_HPUX_sched_getscheduler    340 +#define __NR_HPUX_sched_yield           341 +#define __NR_HPUX_sched_get_priority_max 342 +#define __NR_HPUX_sched_get_priority_min 343 +#define __NR_HPUX_sched_rr_get_interval 344 +#define __NR_HPUX_clock_settime         345 +#define __NR_HPUX_clock_gettime         346 +#define __NR_HPUX_clock_getres          347 +#define __NR_HPUX_timer_create          348 +#define __NR_HPUX_timer_delete          349 +#define __NR_HPUX_timer_settime         350 +#define __NR_HPUX_timer_gettime         351 +#define __NR_HPUX_timer_getoverrun      352 +#define __NR_HPUX_nanosleep             353 +#define __NR_HPUX_toolbox               354 +/* 355 missing */ +#define __NR_HPUX_getdents              356 +#define __NR_HPUX_getcontext            357 +#define __NR_HPUX_sysinfo               358 +#define __NR_HPUX_fcntl64               359 +#define __NR_HPUX_ftruncate64           360 +#define __NR_HPUX_fstat64               361 +#define __NR_HPUX_getdirentries64       362 +#define __NR_HPUX_getrlimit64           363 +#define __NR_HPUX_lockf64               364 +#define __NR_HPUX_lseek64               365 +#define __NR_HPUX_lstat64               366 +#define __NR_HPUX_mmap64                367 +#define __NR_HPUX_setrlimit64           368 +#define __NR_HPUX_stat64                369 +#define __NR_HPUX_truncate64            370 +#define __NR_HPUX_ulimit64              371 +#define __NR_HPUX_pread                 372 +#define __NR_HPUX_preadv                373 +#define __NR_HPUX_pwrite                374 +#define __NR_HPUX_pwritev               375 +#define __NR_HPUX_pread64               376 +#define __NR_HPUX_preadv64              377 +#define __NR_HPUX_pwrite64              378 +#define __NR_HPUX_pwritev64             379 +#define __NR_HPUX_setcontext            380 +#define __NR_HPUX_sigaltstack           381 +#define __NR_HPUX_waitid                382 +#define __NR_HPUX_setpgrp               383 +#define __NR_HPUX_recvmsg2              384 +#define __NR_HPUX_sendmsg2              385 +#define __NR_HPUX_socket2               386 +#define __NR_HPUX_socketpair2           387 +#define __NR_HPUX_setregid              388 +#define __NR_HPUX_lwp_create            389 +#define __NR_HPUX_lwp_terminate         390 +#define __NR_HPUX_lwp_wait              391 +#define __NR_HPUX_lwp_suspend           392 +#define __NR_HPUX_lwp_resume            393 +/* 394 missing */ +#define __NR_HPUX_lwp_abort_syscall     395 +#define __NR_HPUX_lwp_info              396 +#define __NR_HPUX_lwp_kill              397 +#define __NR_HPUX_ksleep                398 +#define __NR_HPUX_kwakeup               399 +/* 400 missing */ +#define __NR_HPUX_pstat_getlwp          401 +#define __NR_HPUX_lwp_exit              402 +#define __NR_HPUX_lwp_continue          403 +#define __NR_HPUX_getacl                404 +#define __NR_HPUX_fgetacl               405 +#define __NR_HPUX_setacl                406 +#define __NR_HPUX_fsetacl               407 +#define __NR_HPUX_getaccess             408 +#define __NR_HPUX_lwp_mutex_init        409 +#define __NR_HPUX_lwp_mutex_lock_sys    410 +#define __NR_HPUX_lwp_mutex_unlock      411 +#define __NR_HPUX_lwp_cond_init         412 +#define __NR_HPUX_lwp_cond_signal       413 +#define __NR_HPUX_lwp_cond_broadcast    414 +#define __NR_HPUX_lwp_cond_wait_sys     415 +#define __NR_HPUX_lwp_getscheduler      416 +#define __NR_HPUX_lwp_setscheduler      417 +#define __NR_HPUX_lwp_getstate          418 +#define __NR_HPUX_lwp_setstate          419 +#define __NR_HPUX_lwp_detach            420 +#define __NR_HPUX_mlock                 421 +#define __NR_HPUX_munlock               422 +#define __NR_HPUX_mlockall              423 +#define __NR_HPUX_munlockall            424 +#define __NR_HPUX_shm_open              425 +#define __NR_HPUX_shm_unlink            426 +#define __NR_HPUX_sigqueue              427 +#define __NR_HPUX_sigwaitinfo           428 +#define __NR_HPUX_sigtimedwait          429 +#define __NR_HPUX_sigwait               430 +#define __NR_HPUX_aio_read              431 +#define __NR_HPUX_aio_write             432 +#define __NR_HPUX_lio_listio            433 +#define __NR_HPUX_aio_error             434 +#define __NR_HPUX_aio_return            435 +#define __NR_HPUX_aio_cancel            436 +#define __NR_HPUX_aio_suspend           437 +#define __NR_HPUX_aio_fsync             438 +#define __NR_HPUX_mq_open               439 +#define __NR_HPUX_mq_close              440 +#define __NR_HPUX_mq_unlink             441 +#define __NR_HPUX_mq_send               442 +#define __NR_HPUX_mq_receive            443 +#define __NR_HPUX_mq_notify             444 +#define __NR_HPUX_mq_setattr            445 +#define __NR_HPUX_mq_getattr            446 +#define __NR_HPUX_ksem_open             447 +#define __NR_HPUX_ksem_unlink           448 +#define __NR_HPUX_ksem_close            449 +#define __NR_HPUX_ksem_post             450 +#define __NR_HPUX_ksem_wait             451 +#define __NR_HPUX_ksem_read             452 +#define __NR_HPUX_ksem_trywait          453 +#define __NR_HPUX_lwp_rwlock_init       454 +#define __NR_HPUX_lwp_rwlock_destroy    455 +#define __NR_HPUX_lwp_rwlock_rdlock_sys 456 +#define __NR_HPUX_lwp_rwlock_wrlock_sys 457 +#define __NR_HPUX_lwp_rwlock_tryrdlock  458 +#define __NR_HPUX_lwp_rwlock_trywrlock  459 +#define __NR_HPUX_lwp_rwlock_unlock     460 +#define __NR_HPUX_ttrace                461 +#define __NR_HPUX_ttrace_wait           462 +#define __NR_HPUX_lf_wire_mem           463 +#define __NR_HPUX_lf_unwire_mem         464 +#define __NR_HPUX_lf_send_pin_map       465 +#define __NR_HPUX_lf_free_buf           466 +#define __NR_HPUX_lf_wait_nq            467 +#define __NR_HPUX_lf_wakeup_conn_q      468 +#define __NR_HPUX_lf_unused             469 +#define __NR_HPUX_lwp_sema_init         470 +#define __NR_HPUX_lwp_sema_post         471 +#define __NR_HPUX_lwp_sema_wait         472 +#define __NR_HPUX_lwp_sema_trywait      473 +#define __NR_HPUX_lwp_sema_destroy      474 +#define __NR_HPUX_statvfs64             475 +#define __NR_HPUX_fstatvfs64            476 +#define __NR_HPUX_msh_register          477 +#define __NR_HPUX_ptrace64              478 +#define __NR_HPUX_sendfile              479 +#define __NR_HPUX_sendpath              480 +#define __NR_HPUX_sendfile64            481 +#define __NR_HPUX_sendpath64            482 +#define __NR_HPUX_modload               483 +#define __NR_HPUX_moduload              484 +#define __NR_HPUX_modpath               485 +#define __NR_HPUX_getksym               486 +#define __NR_HPUX_modadm                487 +#define __NR_HPUX_modstat               488 +#define __NR_HPUX_lwp_detached_exit     489 +#define __NR_HPUX_crashconf             490 +#define __NR_HPUX_siginhibit            491 +#define __NR_HPUX_sigenable             492 +#define __NR_HPUX_spuctl                493 +#define __NR_HPUX_zerokernelsum         494 +#define __NR_HPUX_nfs_kstat             495 +#define __NR_HPUX_aio_read64            496 +#define __NR_HPUX_aio_write64           497 +#define __NR_HPUX_aio_error64           498 +#define __NR_HPUX_aio_return64          499 +#define __NR_HPUX_aio_cancel64          500 +#define __NR_HPUX_aio_suspend64         501 +#define __NR_HPUX_aio_fsync64           502 +#define __NR_HPUX_lio_listio64          503 +#define __NR_HPUX_recv2                 504 +#define __NR_HPUX_recvfrom2             505 +#define __NR_HPUX_send2                 506 +#define __NR_HPUX_sendto2               507 +#define __NR_HPUX_acl                   508 +#define __NR_HPUX___cnx_p2p_ctl         509 +#define __NR_HPUX___cnx_gsched_ctl      510 +#define __NR_HPUX___cnx_pmon_ctl        511 + +#define __NR_HPUX_syscalls		512 + +/* + * Linux system call numbers. + * + * Cary Coutant says that we should just use another syscall gateway + * page to avoid clashing with the HPUX space, and I think he's right: + * it will would keep a branch out of our syscall entry path, at the + * very least.  If we decide to change it later, we can ``just'' tweak + * the LINUX_GATEWAY_ADDR define at the bottom and make __NR_Linux be + * 1024 or something.  Oh, and recompile libc. =) + * + * 64-bit HPUX binaries get the syscall gateway address passed in a register + * from the kernel at startup, which seems a sane strategy. + */ + +#define __NR_Linux                0 +#define __NR_restart_syscall      (__NR_Linux + 0) +#define __NR_exit                 (__NR_Linux + 1) +#define __NR_fork                 (__NR_Linux + 2) +#define __NR_read                 (__NR_Linux + 3) +#define __NR_write                (__NR_Linux + 4) +#define __NR_open                 (__NR_Linux + 5) +#define __NR_close                (__NR_Linux + 6) +#define __NR_waitpid              (__NR_Linux + 7) +#define __NR_creat                (__NR_Linux + 8) +#define __NR_link                 (__NR_Linux + 9) +#define __NR_unlink              (__NR_Linux + 10) +#define __NR_execve              (__NR_Linux + 11) +#define __NR_chdir               (__NR_Linux + 12) +#define __NR_time                (__NR_Linux + 13) +#define __NR_mknod               (__NR_Linux + 14) +#define __NR_chmod               (__NR_Linux + 15) +#define __NR_lchown              (__NR_Linux + 16) +#define __NR_socket              (__NR_Linux + 17) +#define __NR_stat                (__NR_Linux + 18) +#define __NR_lseek               (__NR_Linux + 19) +#define __NR_getpid              (__NR_Linux + 20) +#define __NR_mount               (__NR_Linux + 21) +#define __NR_bind                (__NR_Linux + 22) +#define __NR_setuid              (__NR_Linux + 23) +#define __NR_getuid              (__NR_Linux + 24) +#define __NR_stime               (__NR_Linux + 25) +#define __NR_ptrace              (__NR_Linux + 26) +#define __NR_alarm               (__NR_Linux + 27) +#define __NR_fstat               (__NR_Linux + 28) +#define __NR_pause               (__NR_Linux + 29) +#define __NR_utime               (__NR_Linux + 30) +#define __NR_connect             (__NR_Linux + 31) +#define __NR_listen              (__NR_Linux + 32) +#define __NR_access              (__NR_Linux + 33) +#define __NR_nice                (__NR_Linux + 34) +#define __NR_accept              (__NR_Linux + 35) +#define __NR_sync                (__NR_Linux + 36) +#define __NR_kill                (__NR_Linux + 37) +#define __NR_rename              (__NR_Linux + 38) +#define __NR_mkdir               (__NR_Linux + 39) +#define __NR_rmdir               (__NR_Linux + 40) +#define __NR_dup                 (__NR_Linux + 41) +#define __NR_pipe                (__NR_Linux + 42) +#define __NR_times               (__NR_Linux + 43) +#define __NR_getsockname         (__NR_Linux + 44) +#define __NR_brk                 (__NR_Linux + 45) +#define __NR_setgid              (__NR_Linux + 46) +#define __NR_getgid              (__NR_Linux + 47) +#define __NR_signal              (__NR_Linux + 48) +#define __NR_geteuid             (__NR_Linux + 49) +#define __NR_getegid             (__NR_Linux + 50) +#define __NR_acct                (__NR_Linux + 51) +#define __NR_umount2             (__NR_Linux + 52) +#define __NR_getpeername         (__NR_Linux + 53) +#define __NR_ioctl               (__NR_Linux + 54) +#define __NR_fcntl               (__NR_Linux + 55) +#define __NR_socketpair          (__NR_Linux + 56) +#define __NR_setpgid             (__NR_Linux + 57) +#define __NR_send                (__NR_Linux + 58) +#define __NR_uname               (__NR_Linux + 59) +#define __NR_umask               (__NR_Linux + 60) +#define __NR_chroot              (__NR_Linux + 61) +#define __NR_ustat               (__NR_Linux + 62) +#define __NR_dup2                (__NR_Linux + 63) +#define __NR_getppid             (__NR_Linux + 64) +#define __NR_getpgrp             (__NR_Linux + 65) +#define __NR_setsid              (__NR_Linux + 66) +#define __NR_pivot_root          (__NR_Linux + 67) +#define __NR_sgetmask            (__NR_Linux + 68) +#define __NR_ssetmask            (__NR_Linux + 69) +#define __NR_setreuid            (__NR_Linux + 70) +#define __NR_setregid            (__NR_Linux + 71) +#define __NR_mincore             (__NR_Linux + 72) +#define __NR_sigpending          (__NR_Linux + 73) +#define __NR_sethostname         (__NR_Linux + 74) +#define __NR_setrlimit           (__NR_Linux + 75) +#define __NR_getrlimit           (__NR_Linux + 76) +#define __NR_getrusage           (__NR_Linux + 77) +#define __NR_gettimeofday        (__NR_Linux + 78) +#define __NR_settimeofday        (__NR_Linux + 79) +#define __NR_getgroups           (__NR_Linux + 80) +#define __NR_setgroups           (__NR_Linux + 81) +#define __NR_sendto              (__NR_Linux + 82) +#define __NR_symlink             (__NR_Linux + 83) +#define __NR_lstat               (__NR_Linux + 84) +#define __NR_readlink            (__NR_Linux + 85) +#define __NR_uselib              (__NR_Linux + 86) +#define __NR_swapon              (__NR_Linux + 87) +#define __NR_reboot              (__NR_Linux + 88) +#define __NR_mmap2             (__NR_Linux + 89) +#define __NR_mmap                (__NR_Linux + 90) +#define __NR_munmap              (__NR_Linux + 91) +#define __NR_truncate            (__NR_Linux + 92) +#define __NR_ftruncate           (__NR_Linux + 93) +#define __NR_fchmod              (__NR_Linux + 94) +#define __NR_fchown              (__NR_Linux + 95) +#define __NR_getpriority         (__NR_Linux + 96) +#define __NR_setpriority         (__NR_Linux + 97) +#define __NR_recv                (__NR_Linux + 98) +#define __NR_statfs              (__NR_Linux + 99) +#define __NR_fstatfs            (__NR_Linux + 100) +#define __NR_stat64           (__NR_Linux + 101) +/* #define __NR_socketcall         (__NR_Linux + 102) */ +#define __NR_syslog             (__NR_Linux + 103) +#define __NR_setitimer          (__NR_Linux + 104) +#define __NR_getitimer          (__NR_Linux + 105) +#define __NR_capget             (__NR_Linux + 106) +#define __NR_capset             (__NR_Linux + 107) +#define __NR_pread64            (__NR_Linux + 108) +#define __NR_pwrite64           (__NR_Linux + 109) +#define __NR_getcwd             (__NR_Linux + 110) +#define __NR_vhangup            (__NR_Linux + 111) +#define __NR_fstat64            (__NR_Linux + 112) +#define __NR_vfork              (__NR_Linux + 113) +#define __NR_wait4              (__NR_Linux + 114) +#define __NR_swapoff            (__NR_Linux + 115) +#define __NR_sysinfo            (__NR_Linux + 116) +#define __NR_shutdown           (__NR_Linux + 117) +#define __NR_fsync              (__NR_Linux + 118) +#define __NR_madvise            (__NR_Linux + 119) +#define __NR_clone              (__NR_Linux + 120) +#define __NR_setdomainname      (__NR_Linux + 121) +#define __NR_sendfile           (__NR_Linux + 122) +#define __NR_recvfrom           (__NR_Linux + 123) +#define __NR_adjtimex           (__NR_Linux + 124) +#define __NR_mprotect           (__NR_Linux + 125) +#define __NR_sigprocmask        (__NR_Linux + 126) +#define __NR_create_module      (__NR_Linux + 127) +#define __NR_init_module        (__NR_Linux + 128) +#define __NR_delete_module      (__NR_Linux + 129) +#define __NR_get_kernel_syms    (__NR_Linux + 130) +#define __NR_quotactl           (__NR_Linux + 131) +#define __NR_getpgid            (__NR_Linux + 132) +#define __NR_fchdir             (__NR_Linux + 133) +#define __NR_bdflush            (__NR_Linux + 134) +#define __NR_sysfs              (__NR_Linux + 135) +#define __NR_personality        (__NR_Linux + 136) +#define __NR_afs_syscall        (__NR_Linux + 137) /* Syscall for Andrew File System */ +#define __NR_setfsuid           (__NR_Linux + 138) +#define __NR_setfsgid           (__NR_Linux + 139) +#define __NR__llseek            (__NR_Linux + 140) +#define __NR_getdents           (__NR_Linux + 141) +#define __NR__newselect         (__NR_Linux + 142) +#define __NR_flock              (__NR_Linux + 143) +#define __NR_msync              (__NR_Linux + 144) +#define __NR_readv              (__NR_Linux + 145) +#define __NR_writev             (__NR_Linux + 146) +#define __NR_getsid             (__NR_Linux + 147) +#define __NR_fdatasync          (__NR_Linux + 148) +#define __NR__sysctl            (__NR_Linux + 149) +#define __NR_mlock              (__NR_Linux + 150) +#define __NR_munlock            (__NR_Linux + 151) +#define __NR_mlockall           (__NR_Linux + 152) +#define __NR_munlockall         (__NR_Linux + 153) +#define __NR_sched_setparam             (__NR_Linux + 154) +#define __NR_sched_getparam             (__NR_Linux + 155) +#define __NR_sched_setscheduler         (__NR_Linux + 156) +#define __NR_sched_getscheduler         (__NR_Linux + 157) +#define __NR_sched_yield                (__NR_Linux + 158) +#define __NR_sched_get_priority_max     (__NR_Linux + 159) +#define __NR_sched_get_priority_min     (__NR_Linux + 160) +#define __NR_sched_rr_get_interval      (__NR_Linux + 161) +#define __NR_nanosleep          (__NR_Linux + 162) +#define __NR_mremap             (__NR_Linux + 163) +#define __NR_setresuid          (__NR_Linux + 164) +#define __NR_getresuid          (__NR_Linux + 165) +#define __NR_sigaltstack        (__NR_Linux + 166) +#define __NR_query_module       (__NR_Linux + 167) +#define __NR_poll               (__NR_Linux + 168) +#define __NR_nfsservctl         (__NR_Linux + 169) +#define __NR_setresgid          (__NR_Linux + 170) +#define __NR_getresgid          (__NR_Linux + 171) +#define __NR_prctl              (__NR_Linux + 172) +#define __NR_rt_sigreturn       (__NR_Linux + 173) +#define __NR_rt_sigaction       (__NR_Linux + 174) +#define __NR_rt_sigprocmask     (__NR_Linux + 175) +#define __NR_rt_sigpending      (__NR_Linux + 176) +#define __NR_rt_sigtimedwait    (__NR_Linux + 177) +#define __NR_rt_sigqueueinfo    (__NR_Linux + 178) +#define __NR_rt_sigsuspend      (__NR_Linux + 179) +#define __NR_chown              (__NR_Linux + 180) +#define __NR_setsockopt         (__NR_Linux + 181) +#define __NR_getsockopt         (__NR_Linux + 182) +#define __NR_sendmsg            (__NR_Linux + 183) +#define __NR_recvmsg            (__NR_Linux + 184) +#define __NR_semop              (__NR_Linux + 185) +#define __NR_semget             (__NR_Linux + 186) +#define __NR_semctl             (__NR_Linux + 187) +#define __NR_msgsnd             (__NR_Linux + 188) +#define __NR_msgrcv             (__NR_Linux + 189) +#define __NR_msgget             (__NR_Linux + 190) +#define __NR_msgctl             (__NR_Linux + 191) +#define __NR_shmat              (__NR_Linux + 192) +#define __NR_shmdt              (__NR_Linux + 193) +#define __NR_shmget             (__NR_Linux + 194) +#define __NR_shmctl             (__NR_Linux + 195) + +#define __NR_getpmsg		(__NR_Linux + 196) /* Somebody *wants* streams? */ +#define __NR_putpmsg		(__NR_Linux + 197) + +#define __NR_lstat64            (__NR_Linux + 198) +#define __NR_truncate64         (__NR_Linux + 199) +#define __NR_ftruncate64        (__NR_Linux + 200) +#define __NR_getdents64         (__NR_Linux + 201) +#define __NR_fcntl64            (__NR_Linux + 202) +#define __NR_attrctl            (__NR_Linux + 203) +#define __NR_acl_get            (__NR_Linux + 204) +#define __NR_acl_set            (__NR_Linux + 205) +#define __NR_gettid             (__NR_Linux + 206) +#define __NR_readahead          (__NR_Linux + 207) +#define __NR_tkill              (__NR_Linux + 208) +#define __NR_sendfile64         (__NR_Linux + 209) +#define __NR_futex              (__NR_Linux + 210) +#define __NR_sched_setaffinity  (__NR_Linux + 211) +#define __NR_sched_getaffinity  (__NR_Linux + 212) +#define __NR_set_thread_area    (__NR_Linux + 213) +#define __NR_get_thread_area    (__NR_Linux + 214) +#define __NR_io_setup           (__NR_Linux + 215) +#define __NR_io_destroy         (__NR_Linux + 216) +#define __NR_io_getevents       (__NR_Linux + 217) +#define __NR_io_submit          (__NR_Linux + 218) +#define __NR_io_cancel          (__NR_Linux + 219) +#define __NR_alloc_hugepages    (__NR_Linux + 220) +#define __NR_free_hugepages     (__NR_Linux + 221) +#define __NR_exit_group         (__NR_Linux + 222) +#define __NR_lookup_dcookie     (__NR_Linux + 223) +#define __NR_epoll_create       (__NR_Linux + 224) +#define __NR_epoll_ctl          (__NR_Linux + 225) +#define __NR_epoll_wait         (__NR_Linux + 226) +#define __NR_remap_file_pages   (__NR_Linux + 227) +#define __NR_semtimedop         (__NR_Linux + 228) +#define __NR_mq_open            (__NR_Linux + 229) +#define __NR_mq_unlink          (__NR_Linux + 230) +#define __NR_mq_timedsend       (__NR_Linux + 231) +#define __NR_mq_timedreceive    (__NR_Linux + 232) +#define __NR_mq_notify          (__NR_Linux + 233) +#define __NR_mq_getsetattr      (__NR_Linux + 234) +#define __NR_waitid		(__NR_Linux + 235) +#define __NR_fadvise64_64	(__NR_Linux + 236) +#define __NR_set_tid_address	(__NR_Linux + 237) +#define __NR_setxattr		(__NR_Linux + 238) +#define __NR_lsetxattr		(__NR_Linux + 239) +#define __NR_fsetxattr		(__NR_Linux + 240) +#define __NR_getxattr		(__NR_Linux + 241) +#define __NR_lgetxattr		(__NR_Linux + 242) +#define __NR_fgetxattr		(__NR_Linux + 243) +#define __NR_listxattr		(__NR_Linux + 244) +#define __NR_llistxattr		(__NR_Linux + 245) +#define __NR_flistxattr		(__NR_Linux + 246) +#define __NR_removexattr	(__NR_Linux + 247) +#define __NR_lremovexattr	(__NR_Linux + 248) +#define __NR_fremovexattr	(__NR_Linux + 249) +#define __NR_timer_create	(__NR_Linux + 250) +#define __NR_timer_settime	(__NR_Linux + 251) +#define __NR_timer_gettime	(__NR_Linux + 252) +#define __NR_timer_getoverrun	(__NR_Linux + 253) +#define __NR_timer_delete	(__NR_Linux + 254) +#define __NR_clock_settime	(__NR_Linux + 255) +#define __NR_clock_gettime	(__NR_Linux + 256) +#define __NR_clock_getres	(__NR_Linux + 257) +#define __NR_clock_nanosleep	(__NR_Linux + 258) +#define __NR_tgkill		(__NR_Linux + 259) +#define __NR_mbind		(__NR_Linux + 260) +#define __NR_get_mempolicy	(__NR_Linux + 261) +#define __NR_set_mempolicy	(__NR_Linux + 262) +#define __NR_vserver		(__NR_Linux + 263) +#define __NR_add_key		(__NR_Linux + 264) +#define __NR_request_key	(__NR_Linux + 265) +#define __NR_keyctl		(__NR_Linux + 266) +#define __NR_ioprio_set		(__NR_Linux + 267) +#define __NR_ioprio_get		(__NR_Linux + 268) +#define __NR_inotify_init	(__NR_Linux + 269) +#define __NR_inotify_add_watch	(__NR_Linux + 270) +#define __NR_inotify_rm_watch	(__NR_Linux + 271) +#define __NR_migrate_pages	(__NR_Linux + 272) +#define __NR_pselect6		(__NR_Linux + 273) +#define __NR_ppoll		(__NR_Linux + 274) +#define __NR_openat		(__NR_Linux + 275) +#define __NR_mkdirat		(__NR_Linux + 276) +#define __NR_mknodat		(__NR_Linux + 277) +#define __NR_fchownat		(__NR_Linux + 278) +#define __NR_futimesat		(__NR_Linux + 279) +#define __NR_fstatat64		(__NR_Linux + 280) +#define __NR_unlinkat		(__NR_Linux + 281) +#define __NR_renameat		(__NR_Linux + 282) +#define __NR_linkat		(__NR_Linux + 283) +#define __NR_symlinkat		(__NR_Linux + 284) +#define __NR_readlinkat		(__NR_Linux + 285) +#define __NR_fchmodat		(__NR_Linux + 286) +#define __NR_faccessat		(__NR_Linux + 287) +#define __NR_unshare		(__NR_Linux + 288) +#define __NR_set_robust_list	(__NR_Linux + 289) +#define __NR_get_robust_list	(__NR_Linux + 290) +#define __NR_splice		(__NR_Linux + 291) +#define __NR_sync_file_range	(__NR_Linux + 292) +#define __NR_tee		(__NR_Linux + 293) +#define __NR_vmsplice		(__NR_Linux + 294) +#define __NR_move_pages		(__NR_Linux + 295) +#define __NR_getcpu		(__NR_Linux + 296) +#define __NR_epoll_pwait	(__NR_Linux + 297) +#define __NR_statfs64		(__NR_Linux + 298) +#define __NR_fstatfs64		(__NR_Linux + 299) +#define __NR_kexec_load		(__NR_Linux + 300) +#define __NR_utimensat		(__NR_Linux + 301) +#define __NR_signalfd		(__NR_Linux + 302) +#define __NR_timerfd		(__NR_Linux + 303) +#define __NR_eventfd		(__NR_Linux + 304) +#define __NR_fallocate		(__NR_Linux + 305) +#define __NR_timerfd_create	(__NR_Linux + 306) +#define __NR_timerfd_settime	(__NR_Linux + 307) +#define __NR_timerfd_gettime	(__NR_Linux + 308) +#define __NR_signalfd4		(__NR_Linux + 309) +#define __NR_eventfd2		(__NR_Linux + 310) +#define __NR_epoll_create1	(__NR_Linux + 311) +#define __NR_dup3		(__NR_Linux + 312) +#define __NR_pipe2		(__NR_Linux + 313) +#define __NR_inotify_init1	(__NR_Linux + 314) +#define __NR_preadv		(__NR_Linux + 315) +#define __NR_pwritev		(__NR_Linux + 316) +#define __NR_rt_tgsigqueueinfo	(__NR_Linux + 317) +#define __NR_perf_event_open	(__NR_Linux + 318) +#define __NR_recvmmsg		(__NR_Linux + 319) +#define __NR_accept4		(__NR_Linux + 320) +#define __NR_prlimit64		(__NR_Linux + 321) +#define __NR_fanotify_init	(__NR_Linux + 322) +#define __NR_fanotify_mark	(__NR_Linux + 323) +#define __NR_clock_adjtime	(__NR_Linux + 324) +#define __NR_name_to_handle_at	(__NR_Linux + 325) +#define __NR_open_by_handle_at	(__NR_Linux + 326) +#define __NR_syncfs		(__NR_Linux + 327) +#define __NR_setns		(__NR_Linux + 328) +#define __NR_sendmmsg		(__NR_Linux + 329) +#define __NR_process_vm_readv	(__NR_Linux + 330) +#define __NR_process_vm_writev	(__NR_Linux + 331) +#define __NR_kcmp		(__NR_Linux + 332) +#define __NR_finit_module	(__NR_Linux + 333) +#define __NR_sched_setattr	(__NR_Linux + 334) +#define __NR_sched_getattr	(__NR_Linux + 335) +#define __NR_utimes		(__NR_Linux + 336) +#define __NR_renameat2		(__NR_Linux + 337) + +#define __NR_Linux_syscalls	(__NR_renameat2 + 1) + + +#define __IGNORE_select		/* newselect */ +#define __IGNORE_fadvise64	/* fadvise64_64 */ + + +#define HPUX_GATEWAY_ADDR       0xC0000004 +#define LINUX_GATEWAY_ADDR      0x100 + +#endif /* _UAPI_ASM_PARISC_UNISTD_H_ */  | 
