提交 808c783e 编写于 作者: L Linus Torvalds
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.15-rc2 # Linux kernel version: 2.6.16-rc4
# Thu Nov 24 01:06:21 2005 # Tue Feb 21 13:44:31 2006
# #
CONFIG_MIPS=y CONFIG_MIPS=y
...@@ -144,7 +144,6 @@ CONFIG_PREEMPT_BKL=y ...@@ -144,7 +144,6 @@ CONFIG_PREEMPT_BKL=y
# Code maturity level options # Code maturity level options
# #
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_LOCK_KERNEL=y CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_INIT_ENV_ARG_LIMIT=32
...@@ -250,6 +249,7 @@ CONFIG_NET=y ...@@ -250,6 +249,7 @@ CONFIG_NET=y
# #
# Networking options # Networking options
# #
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y CONFIG_UNIX=y
...@@ -289,6 +289,7 @@ CONFIG_TCP_CONG_BIC=y ...@@ -289,6 +289,7 @@ CONFIG_TCP_CONG_BIC=y
# SCTP Configuration (EXPERIMENTAL) # SCTP Configuration (EXPERIMENTAL)
# #
# CONFIG_IP_SCTP is not set # CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
# CONFIG_BRIDGE is not set # CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set # CONFIG_VLAN_8021Q is not set
...@@ -448,7 +449,7 @@ CONFIG_SCSI_SAS_ATTRS=m ...@@ -448,7 +449,7 @@ CONFIG_SCSI_SAS_ATTRS=m
# #
# SCSI low-level drivers # SCSI low-level drivers
# #
CONFIG_ISCSI_TCP=m # CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_ACARD is not set
...@@ -773,6 +774,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y ...@@ -773,6 +774,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
# SN Devices # SN Devices
# #
#
# EDAC - error detection and reporting (RAS)
#
# #
# File systems # File systems
# #
......
...@@ -103,8 +103,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) ...@@ -103,8 +103,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
* one divide. * one divide.
*/ */
u64 nsec = (u64)jiffies * TICK_NSEC; u64 nsec = (u64)jiffies * TICK_NSEC;
value->tv_sec = div_long_long_rem(nsec, NSEC_PER_SEC, &value->tv_usec); long rem;
value->tv_usec /= NSEC_PER_USEC; value->tv_sec = div_long_long_rem(nsec, NSEC_PER_SEC, &rem);
value->tv_usec = rem / NSEC_PER_USEC;
} }
#define ELF_CORE_EFLAGS EF_MIPS_ABI2 #define ELF_CORE_EFLAGS EF_MIPS_ABI2
......
...@@ -105,8 +105,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) ...@@ -105,8 +105,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
* one divide. * one divide.
*/ */
u64 nsec = (u64)jiffies * TICK_NSEC; u64 nsec = (u64)jiffies * TICK_NSEC;
value->tv_sec = div_long_long_rem(nsec, NSEC_PER_SEC, &value->tv_usec); long rem;
value->tv_usec /= NSEC_PER_USEC; value->tv_sec = div_long_long_rem(nsec, NSEC_PER_SEC, &rem);
value->tv_usec = rem / NSEC_PER_USEC;
} }
#undef ELF_CORE_COPY_REGS #undef ELF_CORE_COPY_REGS
......
...@@ -230,6 +230,9 @@ sysn32_waitid(int which, compat_pid_t pid, ...@@ -230,6 +230,9 @@ sysn32_waitid(int which, compat_pid_t pid,
long ret; long ret;
mm_segment_t old_fs = get_fs(); mm_segment_t old_fs = get_fs();
if (!access_ok(VERIFY_WRITE, uinfo, sizeof(*uinfo)))
return -EFAULT;
set_fs (KERNEL_DS); set_fs (KERNEL_DS);
ret = sys_waitid(which, pid, uinfo, options, ret = sys_waitid(which, pid, uinfo, options,
uru ? (struct rusage __user *) &ru : NULL); uru ? (struct rusage __user *) &ru : NULL);
...@@ -1450,25 +1453,6 @@ sys32_timer_create(u32 clock, struct sigevent32 __user *se32, timer_t __user *ti ...@@ -1450,25 +1453,6 @@ sys32_timer_create(u32 clock, struct sigevent32 __user *se32, timer_t __user *ti
return sys_timer_create(clock, p, timer_id); return sys_timer_create(clock, p, timer_id);
} }
asmlinkage long
sysn32_rt_sigtimedwait(const sigset_t __user *uthese,
siginfo_t __user *uinfo,
const struct compat_timespec __user *uts32,
size_t sigsetsize)
{
struct timespec __user *uts = NULL;
if (uts32) {
struct timespec ts;
uts = compat_alloc_user_space(sizeof(struct timespec));
if (get_user(ts.tv_sec, &uts32->tv_sec) ||
get_user(ts.tv_nsec, &uts32->tv_nsec) ||
copy_to_user (uts, &ts, sizeof (ts)))
return -EFAULT;
}
return sys_rt_sigtimedwait(uthese, uinfo, uts, sigsetsize);
}
save_static_function(sys32_clone); save_static_function(sys32_clone);
__attribute_used__ noinline static int __attribute_used__ noinline static int
_sys32_clone(nabi_no_regargs struct pt_regs regs) _sys32_clone(nabi_no_regargs struct pt_regs regs)
......
...@@ -245,9 +245,9 @@ EXPORT(sysn32_call_table) ...@@ -245,9 +245,9 @@ EXPORT(sysn32_call_table)
PTR sys_capget PTR sys_capget
PTR sys_capset PTR sys_capset
PTR sys32_rt_sigpending /* 6125 */ PTR sys32_rt_sigpending /* 6125 */
PTR sysn32_rt_sigtimedwait PTR compat_sys_rt_sigtimedwait
PTR sys_rt_sigqueueinfo PTR sys_rt_sigqueueinfo
PTR sys32_rt_sigsuspend PTR sysn32_rt_sigsuspend
PTR sys32_sigaltstack PTR sys32_sigaltstack
PTR compat_sys_utime /* 6130 */ PTR compat_sys_utime /* 6130 */
PTR sys_mknod PTR sys_mknod
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* for more details. * for more details.
* *
* Copyright (C) 1991, 1992 Linus Torvalds * Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 1994 - 2000 Ralf Baechle * Copyright (C) 1994 - 2000, 2006 Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
*/ */
#include <linux/cache.h> #include <linux/cache.h>
...@@ -106,8 +106,6 @@ typedef struct compat_siginfo { ...@@ -106,8 +106,6 @@ typedef struct compat_siginfo {
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
extern int do_signal32(sigset_t *oldset, struct pt_regs *regs);
/* 32-bit compatibility types */ /* 32-bit compatibility types */
#define _NSIG_BPW32 32 #define _NSIG_BPW32 32
...@@ -198,7 +196,7 @@ __attribute_used__ noinline static int ...@@ -198,7 +196,7 @@ __attribute_used__ noinline static int
_sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
{ {
compat_sigset_t *uset; compat_sigset_t *uset;
sigset_t newset, saveset; sigset_t newset;
uset = (compat_sigset_t *) regs.regs[4]; uset = (compat_sigset_t *) regs.regs[4];
if (get_sigset(&newset, uset)) if (get_sigset(&newset, uset))
...@@ -206,19 +204,15 @@ _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs) ...@@ -206,19 +204,15 @@ _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
sigdelsetmask(&newset, ~_BLOCKABLE); sigdelsetmask(&newset, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock); spin_lock_irq(&current->sighand->siglock);
saveset = current->blocked; current->saved_sigmask = current->blocked;
current->blocked = newset; current->blocked = newset;
recalc_sigpending(); recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock); spin_unlock_irq(&current->sighand->siglock);
regs.regs[2] = EINTR;
regs.regs[7] = 1;
while (1) {
current->state = TASK_INTERRUPTIBLE; current->state = TASK_INTERRUPTIBLE;
schedule(); schedule();
if (do_signal32(&saveset, &regs)) set_thread_flag(TIF_RESTORE_SIGMASK);
return -EINTR; return -ERESTARTNOHAND;
}
} }
save_static_function(sys32_rt_sigsuspend); save_static_function(sys32_rt_sigsuspend);
...@@ -226,7 +220,7 @@ __attribute_used__ noinline static int ...@@ -226,7 +220,7 @@ __attribute_used__ noinline static int
_sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
{ {
compat_sigset_t *uset; compat_sigset_t *uset;
sigset_t newset, saveset; sigset_t newset;
size_t sigsetsize; size_t sigsetsize;
/* XXX Don't preclude handling different sized sigset_t's. */ /* XXX Don't preclude handling different sized sigset_t's. */
...@@ -240,19 +234,15 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs) ...@@ -240,19 +234,15 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
sigdelsetmask(&newset, ~_BLOCKABLE); sigdelsetmask(&newset, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock); spin_lock_irq(&current->sighand->siglock);
saveset = current->blocked; current->saved_sigmask = current->blocked;
current->blocked = newset; current->blocked = newset;
recalc_sigpending(); recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock); spin_unlock_irq(&current->sighand->siglock);
regs.regs[2] = EINTR;
regs.regs[7] = 1;
while (1) {
current->state = TASK_INTERRUPTIBLE; current->state = TASK_INTERRUPTIBLE;
schedule(); schedule();
if (do_signal32(&saveset, &regs)) set_thread_flag(TIF_RESTORE_SIGMASK);
return -EINTR; return -ERESTARTNOHAND;
}
} }
asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act, asmlinkage int sys32_sigaction(int sig, const struct sigaction32 *act,
...@@ -783,7 +773,7 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info, ...@@ -783,7 +773,7 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info,
regs->regs[2] = EINTR; regs->regs[2] = EINTR;
break; break;
case ERESTARTSYS: case ERESTARTSYS:
if(!(ka->sa.sa_flags & SA_RESTART)) { if (!(ka->sa.sa_flags & SA_RESTART)) {
regs->regs[2] = EINTR; regs->regs[2] = EINTR;
break; break;
} }
...@@ -810,9 +800,10 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info, ...@@ -810,9 +800,10 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info,
return ret; return ret;
} }
int do_signal32(sigset_t *oldset, struct pt_regs *regs) void do_signal32(struct pt_regs *regs)
{ {
struct k_sigaction ka; struct k_sigaction ka;
sigset_t *oldset;
siginfo_t info; siginfo_t info;
int signr; int signr;
...@@ -822,17 +813,30 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs) ...@@ -822,17 +813,30 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
* if so. * if so.
*/ */
if (!user_mode(regs)) if (!user_mode(regs))
return 1; return;
if (try_to_freeze()) if (try_to_freeze())
goto no_signal; goto no_signal;
if (!oldset) if (test_thread_flag(TIF_RESTORE_SIGMASK))
oldset = &current->saved_sigmask;
else
oldset = &current->blocked; oldset = &current->blocked;
signr = get_signal_to_deliver(&info, &ka, regs, NULL); signr = get_signal_to_deliver(&info, &ka, regs, NULL);
if (signr > 0) if (signr > 0) {
return handle_signal(signr, &info, &ka, oldset, regs); /* Whee! Actually deliver the signal. */
if (handle_signal(signr, &info, &ka, oldset, regs) == 0) {
/*
* A signal was successfully delivered; the saved
* sigmask will have been stored in the signal frame,
* and will be restored by sigreturn, so we can simply
* clear the TIF_RESTORE_SIGMASK flag.
*/
if (test_thread_flag(TIF_RESTORE_SIGMASK))
clear_thread_flag(TIF_RESTORE_SIGMASK);
}
}
no_signal: no_signal:
/* /*
...@@ -853,7 +857,15 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs) ...@@ -853,7 +857,15 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
regs->cp0_epc -= 4; regs->cp0_epc -= 4;
} }
} }
return 0;
/*
* If there's no signal to deliver, we just put the saved sigmask
* back
*/
if (test_thread_flag(TIF_RESTORE_SIGMASK)) {
clear_thread_flag(TIF_RESTORE_SIGMASK);
sigprocmask(SIG_SETMASK, &current->saved_sigmask, NULL);
}
} }
asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act, asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 *act,
......
...@@ -81,6 +81,39 @@ struct rt_sigframe_n32 { ...@@ -81,6 +81,39 @@ struct rt_sigframe_n32 {
#endif #endif
}; };
extern void sigset_from_compat (sigset_t *set, compat_sigset_t *compat);
save_static_function(sysn32_rt_sigsuspend);
__attribute_used__ noinline static int
_sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
{
compat_sigset_t __user *unewset, uset;
size_t sigsetsize;
sigset_t newset;
/* XXX Don't preclude handling different sized sigset_t's. */
sigsetsize = regs.regs[5];
if (sigsetsize != sizeof(sigset_t))
return -EINVAL;
unewset = (compat_sigset_t __user *) regs.regs[4];
if (copy_from_user(&uset, unewset, sizeof(uset)))
return -EFAULT;
sigset_from_compat (&newset, &uset);
sigdelsetmask(&newset, ~_BLOCKABLE);
spin_lock_irq(&current->sighand->siglock);
current->saved_sigmask = current->blocked;
current->blocked = newset;
recalc_sigpending();
spin_unlock_irq(&current->sighand->siglock);
current->state = TASK_INTERRUPTIBLE;
schedule();
set_thread_flag(TIF_RESTORE_SIGMASK);
return -ERESTARTNOHAND;
}
save_static_function(sysn32_rt_sigreturn); save_static_function(sysn32_rt_sigreturn);
__attribute_used__ noinline static void __attribute_used__ noinline static void
_sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs) _sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <linux/timex.h> #include <linux/timex.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <linux/cpu.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#include <asm/cpu.h> #include <asm/cpu.h>
...@@ -424,6 +425,25 @@ void flush_tlb_one(unsigned long vaddr) ...@@ -424,6 +425,25 @@ void flush_tlb_one(unsigned long vaddr)
local_flush_tlb_one(vaddr); local_flush_tlb_one(vaddr);
} }
static DEFINE_PER_CPU(struct cpu, cpu_devices);
static int __init topology_init(void)
{
int cpu;
int ret;
for_each_cpu(cpu) {
ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu, NULL);
if (ret)
printk(KERN_WARNING "topology_init: register_cpu %d "
"failed (%d)\n", cpu, ret);
}
return 0;
}
subsys_initcall(topology_init);
EXPORT_SYMBOL(flush_tlb_page); EXPORT_SYMBOL(flush_tlb_page);
EXPORT_SYMBOL(flush_tlb_one); EXPORT_SYMBOL(flush_tlb_one);
EXPORT_SYMBOL(cpu_data); EXPORT_SYMBOL(cpu_data);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1994 - 1999, 2000, 01 Ralf Baechle * Copyright (C) 1994 - 1999, 2000, 01, 06 Ralf Baechle
* Copyright (C) 1995, 1996 Paul M. Antoine * Copyright (C) 1995, 1996 Paul M. Antoine
* Copyright (C) 1998 Ulf Carlsson * Copyright (C) 1998 Ulf Carlsson
* Copyright (C) 1999 Silicon Graphics, Inc. * Copyright (C) 1999 Silicon Graphics, Inc.
...@@ -548,6 +548,8 @@ asmlinkage void do_ov(struct pt_regs *regs) ...@@ -548,6 +548,8 @@ asmlinkage void do_ov(struct pt_regs *regs)
{ {
siginfo_t info; siginfo_t info;
die_if_kernel("Integer overflow", regs);
info.si_code = FPE_INTOVF; info.si_code = FPE_INTOVF;
info.si_signo = SIGFPE; info.si_signo = SIGFPE;
info.si_errno = 0; info.si_errno = 0;
......
...@@ -64,7 +64,7 @@ LEAF(except_vec2_sb1) ...@@ -64,7 +64,7 @@ LEAF(except_vec2_sb1)
sd k0,0x170($0) sd k0,0x170($0)
sd k1,0x178($0) sd k1,0x178($0)
#if CONFIG_SB1_CEX_ALWAYS_FATAL #ifdef CONFIG_SB1_CEX_ALWAYS_FATAL
j handle_vec2_sb1 j handle_vec2_sb1
nop nop
#else #else
......
...@@ -94,7 +94,7 @@ void __init prom_prepare_cpus(unsigned int max_cpus) ...@@ -94,7 +94,7 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
void prom_boot_secondary(int cpu, struct task_struct *idle) void prom_boot_secondary(int cpu, struct task_struct *idle)
{ {
unsigned long gp = (unsigned long) task_thread_info(idle); unsigned long gp = (unsigned long) task_thread_info(idle);
unsigned long sp = __KSTK_TOP(idle); unsigned long sp = __KSTK_TOS(idle);
secondary_sp = sp; secondary_sp = sp;
secondary_gp = gp; secondary_gp = gp;
......
...@@ -102,11 +102,11 @@ config SIMULATION ...@@ -102,11 +102,11 @@ config SIMULATION
Build a kernel suitable for running under the GDB simulator. Build a kernel suitable for running under the GDB simulator.
Primarily adjusts the kernel's notion of time. Primarily adjusts the kernel's notion of time.
config CONFIG_SB1_CEX_ALWAYS_FATAL config SB1_CEX_ALWAYS_FATAL
bool "All cache exceptions considered fatal (no recovery attempted)" bool "All cache exceptions considered fatal (no recovery attempted)"
depends on SIBYTE_SB1xxx_SOC depends on SIBYTE_SB1xxx_SOC
config CONFIG_SB1_CERR_STALL config SB1_CERR_STALL
bool "Stall (rather than panic) on fatal cache error" bool "Stall (rather than panic) on fatal cache error"
depends on SIBYTE_SB1xxx_SOC depends on SIBYTE_SB1xxx_SOC
......
...@@ -139,7 +139,7 @@ void bcm1480_unmask_irq(int cpu, int irq) ...@@ -139,7 +139,7 @@ void bcm1480_unmask_irq(int cpu, int irq)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask) static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask)
{ {
int i = 0, old_cpu, cpu, int_on; int i = 0, old_cpu, cpu, int_on, k;
u64 cur_ints; u64 cur_ints;
irq_desc_t *desc = irq_desc + irq; irq_desc_t *desc = irq_desc + irq;
unsigned long flags; unsigned long flags;
...@@ -165,7 +165,6 @@ static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask) ...@@ -165,7 +165,6 @@ static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask)
irq_dirty -= BCM1480_NR_IRQS_HALF; irq_dirty -= BCM1480_NR_IRQS_HALF;
} }
int k;
for (k=0; k<2; k++) { /* Loop through high and low interrupt mask register */ for (k=0; k<2; k++) { /* Loop through high and low interrupt mask register */
cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(old_cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING))); cur_ints = ____raw_readq(IOADDR(A_BCM1480_IMR_MAPPER(old_cpu) + R_BCM1480_IMR_INTERRUPT_MASK_H + (k*BCM1480_IMR_HL_SPACING)));
int_on = !(cur_ints & (((u64) 1) << irq_dirty)); int_on = !(cur_ints & (((u64) 1) << irq_dirty));
...@@ -216,6 +215,7 @@ static void ack_bcm1480_irq(unsigned int irq) ...@@ -216,6 +215,7 @@ static void ack_bcm1480_irq(unsigned int irq)
{ {
u64 pending; u64 pending;
unsigned int irq_dirty; unsigned int irq_dirty;
int k;
/* /*
* If the interrupt was an HT interrupt, now is the time to * If the interrupt was an HT interrupt, now is the time to
...@@ -227,7 +227,6 @@ static void ack_bcm1480_irq(unsigned int irq) ...@@ -227,7 +227,6 @@ static void ack_bcm1480_irq(unsigned int irq)
if ((irq_dirty >= BCM1480_NR_IRQS_HALF) && (irq_dirty <= BCM1480_NR_IRQS)) { if ((irq_dirty >= BCM1480_NR_IRQS_HALF) && (irq_dirty <= BCM1480_NR_IRQS)) {
irq_dirty -= BCM1480_NR_IRQS_HALF; irq_dirty -= BCM1480_NR_IRQS_HALF;
} }
int k;
for (k=0; k<2; k++) { /* Loop through high and low LDT interrupts */ for (k=0; k<2; k++) { /* Loop through high and low LDT interrupts */
pending = __raw_readq(IOADDR(A_BCM1480_IMR_REGISTER(bcm1480_irq_owner[irq], pending = __raw_readq(IOADDR(A_BCM1480_IMR_REGISTER(bcm1480_irq_owner[irq],
R_BCM1480_IMR_LDT_INTERRUPT_H + (k*BCM1480_IMR_HL_SPACING)))); R_BCM1480_IMR_LDT_INTERRUPT_H + (k*BCM1480_IMR_HL_SPACING))));
......
...@@ -233,7 +233,7 @@ do { \ ...@@ -233,7 +233,7 @@ do { \
#define __get_user_check(x,ptr,size) \ #define __get_user_check(x,ptr,size) \
({ \ ({ \
long __gu_err = -EFAULT; \ long __gu_err = -EFAULT; \
const void __user * __gu_ptr = (ptr); \ const __typeof__(*(ptr)) __user * __gu_ptr = (ptr); \
\ \
if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) \ if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) \
__get_user_common((x), size, __gu_ptr); \ __get_user_common((x), size, __gu_ptr); \
...@@ -258,7 +258,7 @@ do { \ ...@@ -258,7 +258,7 @@ do { \
: "=r" (__gu_err), "=r" (__gu_tmp) \ : "=r" (__gu_err), "=r" (__gu_tmp) \
: "0" (0), "o" (__m(addr)), "i" (-EFAULT)); \ : "0" (0), "o" (__m(addr)), "i" (-EFAULT)); \
\ \
(val) = (__typeof__(val)) __gu_tmp; \ (val) = (__typeof__(*(addr))) __gu_tmp; \
} }
/* /*
...@@ -284,7 +284,7 @@ do { \ ...@@ -284,7 +284,7 @@ do { \
" .previous \n" \ " .previous \n" \
: "=r" (__gu_err), "=&r" (__gu_tmp) \ : "=r" (__gu_err), "=&r" (__gu_tmp) \
: "0" (0), "r" (addr), "i" (-EFAULT)); \ : "0" (0), "r" (addr), "i" (-EFAULT)); \
(val) = __gu_tmp; \ (val) = (__typeof__(*(addr))) __gu_tmp; \
} }
/* /*
......
...@@ -313,7 +313,7 @@ ...@@ -313,7 +313,7 @@
#define __NR_mknodat (__NR_Linux + 290) #define __NR_mknodat (__NR_Linux + 290)
#define __NR_fchownat (__NR_Linux + 291) #define __NR_fchownat (__NR_Linux + 291)
#define __NR_futimesat (__NR_Linux + 292) #define __NR_futimesat (__NR_Linux + 292)
#define __NR_newfstatat (__NR_Linux + 293) #define __NR_fstatat (__NR_Linux + 293)
#define __NR_unlinkat (__NR_Linux + 294) #define __NR_unlinkat (__NR_Linux + 294)
#define __NR_renameat (__NR_Linux + 295) #define __NR_renameat (__NR_Linux + 295)
#define __NR_linkat (__NR_Linux + 296) #define __NR_linkat (__NR_Linux + 296)
...@@ -593,7 +593,7 @@ ...@@ -593,7 +593,7 @@
#define __NR_mknodat (__NR_Linux + 249) #define __NR_mknodat (__NR_Linux + 249)
#define __NR_fchownat (__NR_Linux + 250) #define __NR_fchownat (__NR_Linux + 250)
#define __NR_futimesat (__NR_Linux + 251) #define __NR_futimesat (__NR_Linux + 251)
#define __NR_newfstatat (__NR_Linux + 252) #define __NR_fstatat (__NR_Linux + 252)
#define __NR_unlinkat (__NR_Linux + 253) #define __NR_unlinkat (__NR_Linux + 253)
#define __NR_renameat (__NR_Linux + 254) #define __NR_renameat (__NR_Linux + 254)
#define __NR_linkat (__NR_Linux + 255) #define __NR_linkat (__NR_Linux + 255)
...@@ -877,7 +877,7 @@ ...@@ -877,7 +877,7 @@
#define __NR_mknodat (__NR_Linux + 253) #define __NR_mknodat (__NR_Linux + 253)
#define __NR_fchownat (__NR_Linux + 254) #define __NR_fchownat (__NR_Linux + 254)
#define __NR_futimesat (__NR_Linux + 255) #define __NR_futimesat (__NR_Linux + 255)
#define __NR_newfstatat (__NR_Linux + 256) #define __NR_fstatat (__NR_Linux + 256)
#define __NR_unlinkat (__NR_Linux + 257) #define __NR_unlinkat (__NR_Linux + 257)
#define __NR_renameat (__NR_Linux + 258) #define __NR_renameat (__NR_Linux + 258)
#define __NR_linkat (__NR_Linux + 259) #define __NR_linkat (__NR_Linux + 259)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册