Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: Documentation/feature-removal-schedule.txt drivers/scsi/fcoe/fcoe.c net/core/drop_monitor.c net/core/net-traces.c
This commit is contained in:
@@ -161,5 +161,5 @@ static inline int __atomic24_sub(int i, atomic24_t *v)
|
||||
|
||||
#endif /* !(__KERNEL__) */
|
||||
|
||||
#include <asm-generic/atomic.h>
|
||||
#include <asm-generic/atomic-long.h>
|
||||
#endif /* !(__ARCH_SPARC_ATOMIC__) */
|
||||
|
@@ -114,5 +114,5 @@ static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
|
||||
#define smp_mb__before_atomic_inc() barrier()
|
||||
#define smp_mb__after_atomic_inc() barrier()
|
||||
|
||||
#include <asm-generic/atomic.h>
|
||||
#include <asm-generic/atomic-long.h>
|
||||
#endif /* !(__ARCH_SPARC64_ATOMIC__) */
|
||||
|
13
arch/sparc/include/asm/bitsperlong.h
Normal file
13
arch/sparc/include/asm/bitsperlong.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef __ASM_ALPHA_BITSPERLONG_H
|
||||
#define __ASM_ALPHA_BITSPERLONG_H
|
||||
|
||||
#if defined(__sparc__) && defined(__arch64__)
|
||||
#define __BITS_PER_LONG 64
|
||||
#else
|
||||
#define __BITS_PER_LONG 32
|
||||
#endif
|
||||
|
||||
#include <asm-generic/bitsperlong.h>
|
||||
|
||||
#endif /* __ASM_ALPHA_BITSPERLONG_H */
|
||||
|
@@ -208,8 +208,9 @@ do { unsigned long new_flags = current_thread_info()->flags; \
|
||||
else \
|
||||
clear_thread_flag(TIF_ABI_PENDING); \
|
||||
/* flush_thread will update pgd cache */ \
|
||||
if (current->personality != PER_LINUX32) \
|
||||
set_personality(PER_LINUX); \
|
||||
if (personality(current->personality) != PER_LINUX32) \
|
||||
set_personality(PER_LINUX | \
|
||||
(current->personality & (~PER_MASK))); \
|
||||
} while (0)
|
||||
|
||||
#endif /* !(__ASM_SPARC64_ELF_H) */
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#ifndef __SPARC_MMAN_H__
|
||||
#define __SPARC_MMAN_H__
|
||||
|
||||
#include <asm-generic/mman.h>
|
||||
#include <asm-generic/mman-common.h>
|
||||
|
||||
/* SunOS'ified... */
|
||||
|
||||
|
@@ -152,6 +152,6 @@ extern unsigned long pfn_base;
|
||||
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
|
||||
|
||||
#include <asm-generic/memory_model.h>
|
||||
#include <asm-generic/page.h>
|
||||
#include <asm-generic/getorder.h>
|
||||
|
||||
#endif /* _SPARC_PAGE_H */
|
||||
|
@@ -132,6 +132,6 @@ typedef struct page *pgtable_t;
|
||||
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
|
||||
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
|
||||
|
||||
#include <asm-generic/page.h>
|
||||
#include <asm-generic/getorder.h>
|
||||
|
||||
#endif /* _SPARC64_PAGE_H */
|
||||
|
@@ -176,7 +176,7 @@ struct sigstack {
|
||||
#define SA_STATIC_ALLOC 0x8000
|
||||
#endif
|
||||
|
||||
#include <asm-generic/signal.h>
|
||||
#include <asm-generic/signal-defs.h>
|
||||
|
||||
struct __new_sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
|
@@ -102,8 +102,8 @@ struct thread_info {
|
||||
#define TI_KERN_CNTD1 0x00000488
|
||||
#define TI_PCR 0x00000490
|
||||
#define TI_RESTART_BLOCK 0x00000498
|
||||
#define TI_KUNA_REGS 0x000004c0
|
||||
#define TI_KUNA_INSN 0x000004c8
|
||||
#define TI_KUNA_REGS 0x000004c8
|
||||
#define TI_KUNA_INSN 0x000004d0
|
||||
#define TI_FPREGS 0x00000500
|
||||
|
||||
/* We embed this in the uppermost byte of thread_info->flags */
|
||||
|
@@ -21,8 +21,6 @@ typedef unsigned short umode_t;
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define BITS_PER_LONG 64
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/* Dma addresses come in generic and 64-bit flavours. */
|
||||
@@ -46,8 +44,6 @@ typedef unsigned short umode_t;
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define BITS_PER_LONG 32
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef u32 dma_addr_t;
|
||||
|
@@ -17,6 +17,9 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define ARCH_HAS_SORT_EXTABLE
|
||||
#define ARCH_HAS_SEARCH_EXTABLE
|
||||
|
||||
/* Sparc is not segmented, however we need to be able to fool access_ok()
|
||||
* when doing system calls from kernel mode legitimately.
|
||||
*
|
||||
|
@@ -12,7 +12,7 @@
|
||||
#include <asm/asi.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/spitfire.h>
|
||||
#include <asm-generic/uaccess.h>
|
||||
#include <asm-generic/uaccess-unaligned.h>
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
@@ -318,10 +318,12 @@ static void sun4u_irq_enable(unsigned int virt_irq)
|
||||
}
|
||||
}
|
||||
|
||||
static void sun4u_set_affinity(unsigned int virt_irq,
|
||||
static int sun4u_set_affinity(unsigned int virt_irq,
|
||||
const struct cpumask *mask)
|
||||
{
|
||||
sun4u_irq_enable(virt_irq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Don't do anything. The desc->status check for IRQ_DISABLED in
|
||||
@@ -377,7 +379,7 @@ static void sun4v_irq_enable(unsigned int virt_irq)
|
||||
ino, err);
|
||||
}
|
||||
|
||||
static void sun4v_set_affinity(unsigned int virt_irq,
|
||||
static int sun4v_set_affinity(unsigned int virt_irq,
|
||||
const struct cpumask *mask)
|
||||
{
|
||||
unsigned int ino = virt_irq_table[virt_irq].dev_ino;
|
||||
@@ -388,6 +390,8 @@ static void sun4v_set_affinity(unsigned int virt_irq,
|
||||
if (err != HV_EOK)
|
||||
printk(KERN_ERR "sun4v_intr_settarget(%x,%lu): "
|
||||
"err(%d)\n", ino, cpuid, err);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sun4v_irq_disable(unsigned int virt_irq)
|
||||
@@ -445,7 +449,7 @@ static void sun4v_virq_enable(unsigned int virt_irq)
|
||||
dev_handle, dev_ino, err);
|
||||
}
|
||||
|
||||
static void sun4v_virt_set_affinity(unsigned int virt_irq,
|
||||
static int sun4v_virt_set_affinity(unsigned int virt_irq,
|
||||
const struct cpumask *mask)
|
||||
{
|
||||
unsigned long cpuid, dev_handle, dev_ino;
|
||||
@@ -461,6 +465,8 @@ static void sun4v_virt_set_affinity(unsigned int virt_irq,
|
||||
printk(KERN_ERR "sun4v_vintr_set_target(%lx,%lx,%lu): "
|
||||
"err(%d)\n",
|
||||
dev_handle, dev_ino, cpuid, err);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sun4v_virq_disable(unsigned int virt_irq)
|
||||
|
@@ -75,8 +75,6 @@ void *module_alloc(unsigned long size)
|
||||
void module_free(struct module *mod, void *module_region)
|
||||
{
|
||||
vfree(module_region);
|
||||
/* FIXME: If module_region == mod->init_region, trim exception
|
||||
table entries. */
|
||||
}
|
||||
|
||||
/* Make generic code ignore STT_REGISTER dummy undefined symbols. */
|
||||
|
@@ -5,7 +5,7 @@
|
||||
|
||||
#define EX_LD(x) \
|
||||
98: x; \
|
||||
.section .fixup; \
|
||||
.section .fixup, "ax"; \
|
||||
.align 4; \
|
||||
99: retl; \
|
||||
mov -1, %o0; \
|
||||
|
@@ -5,7 +5,7 @@
|
||||
|
||||
#define EX_ST(x) \
|
||||
98: x; \
|
||||
.section .fixup; \
|
||||
.section .fixup,"ax"; \
|
||||
.align 4; \
|
||||
99: retl; \
|
||||
mov -1, %o0; \
|
||||
|
@@ -28,6 +28,10 @@ search_extable(const struct exception_table_entry *start,
|
||||
* word 3: last insn address + 4 bytes
|
||||
* word 4: fixup code address
|
||||
*
|
||||
* Deleted entries are encoded as:
|
||||
* word 1: unused
|
||||
* word 2: -1
|
||||
*
|
||||
* See asm/uaccess.h for more details.
|
||||
*/
|
||||
|
||||
@@ -39,6 +43,10 @@ search_extable(const struct exception_table_entry *start,
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A deleted entry; see trim_init_extable */
|
||||
if (walk->fixup == -1)
|
||||
continue;
|
||||
|
||||
if (walk->insn == value)
|
||||
return walk;
|
||||
}
|
||||
@@ -57,6 +65,27 @@ search_extable(const struct exception_table_entry *start,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MODULES
|
||||
/* We could memmove them around; easier to mark the trimmed ones. */
|
||||
void trim_init_extable(struct module *m)
|
||||
{
|
||||
unsigned int i;
|
||||
bool range;
|
||||
|
||||
for (i = 0; i < m->num_exentries; i += range ? 2 : 1) {
|
||||
range = m->extable[i].fixup == 0;
|
||||
|
||||
if (within_module_init(m->extable[i].insn, m)) {
|
||||
m->extable[i].fixup = -1;
|
||||
if (range)
|
||||
m->extable[i+1].fixup = -1;
|
||||
}
|
||||
if (range)
|
||||
i++;
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
||||
/* Special extable search, which handles ranges. Returns fixup */
|
||||
unsigned long search_extables_range(unsigned long addr, unsigned long *g2)
|
||||
{
|
||||
|
Reference in New Issue
Block a user