Merge master.kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6
This commit is contained in:
+69
-15
@@ -1,9 +1,13 @@
|
||||
/* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
|
||||
* Copyright (C) 2006 Kyle McMartin <kyle@parisc-linux.org>
|
||||
*/
|
||||
|
||||
#ifndef _ASM_PARISC_ATOMIC_H_
|
||||
#define _ASM_PARISC_ATOMIC_H_
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/system.h>
|
||||
/* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>. */
|
||||
|
||||
/*
|
||||
* Atomic operations that C can't guarantee us. Useful for
|
||||
@@ -46,15 +50,6 @@ extern raw_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned;
|
||||
# define _atomic_spin_unlock_irqrestore(l,f) do { local_irq_restore(f); } while (0)
|
||||
#endif
|
||||
|
||||
/* Note that we need not lock read accesses - aligned word writes/reads
|
||||
* are atomic, so a reader never sees unconsistent values.
|
||||
*
|
||||
* Cache-line alignment would conflict with, for example, linux/module.h
|
||||
*/
|
||||
|
||||
typedef struct { volatile int counter; } atomic_t;
|
||||
|
||||
|
||||
/* This should get optimized out since it's never called.
|
||||
** Or get a link error if xchg is used "wrong".
|
||||
*/
|
||||
@@ -69,10 +64,9 @@ 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)
|
||||
static __inline__ unsigned long
|
||||
__xchg(unsigned long x, __volatile__ void * ptr, int size)
|
||||
{
|
||||
|
||||
switch(size) {
|
||||
#ifdef __LP64__
|
||||
case 8: return __xchg64(x,(unsigned long *) ptr);
|
||||
@@ -129,7 +123,13 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)
|
||||
(unsigned long)_n_, sizeof(*(ptr))); \
|
||||
})
|
||||
|
||||
/* Note that we need not lock read accesses - aligned word writes/reads
|
||||
* are atomic, so a reader never sees unconsistent values.
|
||||
*
|
||||
* Cache-line alignment would conflict with, for example, linux/module.h
|
||||
*/
|
||||
|
||||
typedef struct { volatile int counter; } atomic_t;
|
||||
|
||||
/* It's possible to reduce all atomic operations to either
|
||||
* __atomic_add_return, atomic_set and atomic_read (the latter
|
||||
@@ -210,12 +210,66 @@ static __inline__ int atomic_read(const atomic_t *v)
|
||||
|
||||
#define atomic_dec_and_test(v) (atomic_dec_return(v) == 0)
|
||||
|
||||
#define ATOMIC_INIT(i) { (i) }
|
||||
#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()
|
||||
|
||||
#ifdef __LP64__
|
||||
|
||||
typedef struct { volatile s64 counter; } atomic64_t;
|
||||
|
||||
#define ATOMIC64_INIT(i) ((atomic64_t) { (i) })
|
||||
|
||||
static __inline__ int
|
||||
__atomic64_add_return(s64 i, atomic64_t *v)
|
||||
{
|
||||
int ret;
|
||||
unsigned long flags;
|
||||
_atomic_spin_lock_irqsave(v, flags);
|
||||
|
||||
ret = (v->counter += i);
|
||||
|
||||
_atomic_spin_unlock_irqrestore(v, flags);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
atomic64_set(atomic64_t *v, s64 i)
|
||||
{
|
||||
unsigned long flags;
|
||||
_atomic_spin_lock_irqsave(v, flags);
|
||||
|
||||
v->counter = i;
|
||||
|
||||
_atomic_spin_unlock_irqrestore(v, flags);
|
||||
}
|
||||
|
||||
static __inline__ s64
|
||||
atomic64_read(const atomic64_t *v)
|
||||
{
|
||||
return v->counter;
|
||||
}
|
||||
|
||||
#define atomic64_add(i,v) ((void)(__atomic64_add_return( ((s64)i),(v))))
|
||||
#define atomic64_sub(i,v) ((void)(__atomic64_add_return(-((s64)i),(v))))
|
||||
#define atomic64_inc(v) ((void)(__atomic64_add_return( 1,(v))))
|
||||
#define atomic64_dec(v) ((void)(__atomic64_add_return( -1,(v))))
|
||||
|
||||
#define atomic64_add_return(i,v) (__atomic64_add_return( ((s64)i),(v)))
|
||||
#define atomic64_sub_return(i,v) (__atomic64_add_return(-((s64)i),(v)))
|
||||
#define atomic64_inc_return(v) (__atomic64_add_return( 1,(v)))
|
||||
#define atomic64_dec_return(v) (__atomic64_add_return( -1,(v)))
|
||||
|
||||
#define atomic64_add_negative(a, v) (atomic64_add_return((a), (v)) < 0)
|
||||
|
||||
#define atomic64_inc_and_test(v) (atomic64_inc_return(v) == 0)
|
||||
#define atomic64_dec_and_test(v) (atomic64_dec_return(v) == 0)
|
||||
|
||||
#endif /* __LP64__ */
|
||||
|
||||
#include <asm-generic/atomic.h>
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_PARISC_ATOMIC_H_ */
|
||||
|
||||
@@ -183,4 +183,10 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
|
||||
__flush_cache_page(vma, vmaddr);
|
||||
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_RODATA
|
||||
void mark_rodata_ro(void);
|
||||
#endif
|
||||
|
||||
#endif /* _PARISC_CACHEFLUSH_H */
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#ifndef _ASM_PARISC_COMPAT_UCONTEXT_H
|
||||
#define _ASM_PARISC_COMPAT_UCONTEXT_H
|
||||
|
||||
#include<linux/compat.h>
|
||||
#include<asm/compat_signal.h>
|
||||
#include <linux/compat.h>
|
||||
|
||||
/* 32-bit ucontext as seen from an 64-bit kernel */
|
||||
struct compat_ucontext {
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
#define CRT_ID_ELK_1024DB 0x27849CA5 /* Elk 1024x768 double buffer */
|
||||
#define CRT_ID_ELK_GS S9000_ID_A1924A /* Elk 1280x1024 GreyScale */
|
||||
#define CRT_ID_CRX24 S9000_ID_A1439A /* Piranha */
|
||||
#define CRT_ID_VISUALIZE_EG 0x2D08C0A7 /* Graffiti (built-in B132+/B160L) */
|
||||
#define CRT_ID_VISUALIZE_EG 0x2D08C0A7 /* Graffiti, A4450A (built-in B132+/B160L) */
|
||||
#define CRT_ID_THUNDER 0x2F23E5FC /* Thunder 1 VISUALIZE 48*/
|
||||
#define CRT_ID_THUNDER2 0x2F8D570E /* Thunder 2 VISUALIZE 48 XP*/
|
||||
#define CRT_ID_HCRX S9000_ID_HCRX /* Hyperdrive HCRX */
|
||||
|
||||
@@ -18,6 +18,18 @@
|
||||
*/
|
||||
#define PCI_MAX_BUSSES 256
|
||||
|
||||
|
||||
/* To be used as: mdelay(pci_post_reset_delay);
|
||||
*
|
||||
* post_reset is the time the kernel should stall to prevent anyone from
|
||||
* accessing the PCI bus once #RESET is de-asserted.
|
||||
* PCI spec somewhere says 1 second but with multi-PCI bus systems,
|
||||
* this makes the boot time much longer than necessary.
|
||||
* 20ms seems to work for all the HP PCI implementations to date.
|
||||
*/
|
||||
#define pci_post_reset_delay 50
|
||||
|
||||
|
||||
/*
|
||||
** pci_hba_data (aka H2P_OBJECT in HP/UX)
|
||||
**
|
||||
@@ -83,7 +95,7 @@ static __inline__ int pci_is_lmmio(struct pci_hba_data *hba, unsigned long a)
|
||||
|
||||
/*
|
||||
** Convert between PCI (IO_VIEW) addresses and processor (PA_VIEW) addresses.
|
||||
** See pcibios.c for more conversions used by Generic PCI code.
|
||||
** 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
|
||||
@@ -191,9 +203,6 @@ struct pci_bios_ops {
|
||||
*/
|
||||
extern struct pci_port_ops *pci_port;
|
||||
extern struct pci_bios_ops *pci_bios;
|
||||
extern int pci_post_reset_delay; /* delay after de-asserting #RESET */
|
||||
extern int pci_hba_count;
|
||||
extern struct pci_hba_data *parisc_pci_hba[];
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
extern void pcibios_register_hba(struct pci_hba_data *);
|
||||
|
||||
@@ -137,7 +137,6 @@ static inline void pte_free_kernel(pte_t *pte)
|
||||
|
||||
#define pte_free(page) pte_free_kernel(page_address(page))
|
||||
|
||||
extern int do_check_pgt_cache(int, int);
|
||||
#define check_pgt_cache() do { } while (0)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -213,7 +213,7 @@ extern void *vmalloc_start;
|
||||
#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_PRESENT | _PAGE_EXEC | _PAGE_READ | _PAGE_DIRTY | _PAGE_ACCESSED)
|
||||
#define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)
|
||||
#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)
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
#ifndef _ASM_PARISC_RT_SIGFRAME_H
|
||||
#define _ASM_PARISC_RT_SIGFRAME_H
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <asm/compat_rt_sigframe.h>
|
||||
#endif
|
||||
|
||||
#define SIGRETURN_TRAMP 4
|
||||
#define SIGRESTARTBLOCK_TRAMP 5
|
||||
#define TRAMP_SIZE (SIGRETURN_TRAMP + SIGRESTARTBLOCK_TRAMP)
|
||||
|
||||
@@ -761,8 +761,27 @@
|
||||
#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_newfstatat (__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_Linux_syscalls 269
|
||||
#define __NR_Linux_syscalls 288
|
||||
|
||||
#define HPUX_GATEWAY_ADDR 0xC0000004
|
||||
#define LINUX_GATEWAY_ADDR 0x100
|
||||
|
||||
Reference in New Issue
Block a user