Commit 1e1b793f authored by James Simmons's avatar James Simmons

Merge kozmo.(none):/usr/src/linus-2.5

into kozmo.(none):/usr/src/fbdev-2.5
parents 2cb43aa0 064d7c46
...@@ -30,6 +30,7 @@ ifneq ($(IS_EGCS),y) ...@@ -30,6 +30,7 @@ ifneq ($(IS_EGCS),y)
CFLAGS := $(CFLAGS) -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 CFLAGS := $(CFLAGS) -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
else else
CFLAGS := $(CFLAGS) -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 CFLAGS := $(CFLAGS) -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
AFLAGS := $(AFLAGS) -m32
endif endif
#LDFLAGS_vmlinux = -N -Ttext 0xf0004000 #LDFLAGS_vmlinux = -N -Ttext 0xf0004000
......
This diff is collapsed.
...@@ -113,7 +113,7 @@ asmlinkage int sparc_pipe(struct pt_regs *regs) ...@@ -113,7 +113,7 @@ asmlinkage int sparc_pipe(struct pt_regs *regs)
* This is really horribly ugly. * This is really horribly ugly.
*/ */
asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, long fifth) asmlinkage int sys_ipc (uint call, int first, int second, int third, void __user *ptr, long fifth)
{ {
int version, err; int version, err;
...@@ -123,7 +123,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -123,7 +123,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
if (call <= SEMCTL) if (call <= SEMCTL)
switch (call) { switch (call) {
case SEMOP: case SEMOP:
err = sys_semop (first, (struct sembuf *)ptr, second); err = sys_semop (first, (struct sembuf __user *)ptr, second);
goto out; goto out;
case SEMGET: case SEMGET:
err = sys_semget (first, second, third); err = sys_semget (first, second, third);
...@@ -134,7 +134,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -134,7 +134,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
if (!ptr) if (!ptr)
goto out; goto out;
err = -EFAULT; err = -EFAULT;
if(get_user(fourth.__pad, (void **)ptr)) if(get_user(fourth.__pad, (void __user **)ptr))
goto out; goto out;
err = sys_semctl (first, second, third, fourth); err = sys_semctl (first, second, third, fourth);
goto out; goto out;
...@@ -146,7 +146,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -146,7 +146,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
if (call <= MSGCTL) if (call <= MSGCTL)
switch (call) { switch (call) {
case MSGSND: case MSGSND:
err = sys_msgsnd (first, (struct msgbuf *) ptr, err = sys_msgsnd (first, (struct msgbuf __user *) ptr,
second, third); second, third);
goto out; goto out;
case MSGRCV: case MSGRCV:
...@@ -157,7 +157,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -157,7 +157,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
if (!ptr) if (!ptr)
goto out; goto out;
err = -EFAULT; err = -EFAULT;
if(copy_from_user(&tmp,(struct ipc_kludge *) ptr, sizeof (tmp))) if (copy_from_user(&tmp, (struct ipc_kludge __user *) ptr, sizeof (tmp)))
goto out; goto out;
err = sys_msgrcv (first, tmp.msgp, second, tmp.msgtyp, third); err = sys_msgrcv (first, tmp.msgp, second, tmp.msgtyp, third);
goto out; goto out;
...@@ -170,7 +170,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -170,7 +170,7 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
err = sys_msgget ((key_t) first, second); err = sys_msgget ((key_t) first, second);
goto out; goto out;
case MSGCTL: case MSGCTL:
err = sys_msgctl (first, second, (struct msqid_ds *) ptr); err = sys_msgctl (first, second, (struct msqid_ds __user *) ptr);
goto out; goto out;
default: default:
err = -ENOSYS; err = -ENOSYS;
...@@ -182,27 +182,27 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr, ...@@ -182,27 +182,27 @@ asmlinkage int sys_ipc (uint call, int first, int second, int third, void *ptr,
switch (version) { switch (version) {
case 0: default: { case 0: default: {
ulong raddr; ulong raddr;
err = sys_shmat (first, (char *) ptr, second, &raddr); err = sys_shmat (first, (char __user *) ptr, second, &raddr);
if (err) if (err)
goto out; goto out;
err = -EFAULT; err = -EFAULT;
if(put_user (raddr, (ulong *) third)) if (put_user (raddr, (ulong __user *) third))
goto out; goto out;
err = 0; err = 0;
goto out; goto out;
} }
case 1: /* iBCS2 emulator entry point */ case 1: /* iBCS2 emulator entry point */
err = sys_shmat (first, (char *) ptr, second, (ulong *) third); err = sys_shmat (first, (char __user *) ptr, second, (ulong __user *) third);
goto out; goto out;
} }
case SHMDT: case SHMDT:
err = sys_shmdt ((char *)ptr); err = sys_shmdt ((char __user *)ptr);
goto out; goto out;
case SHMGET: case SHMGET:
err = sys_shmget (first, second, third); err = sys_shmget (first, second, third);
goto out; goto out;
case SHMCTL: case SHMCTL:
err = sys_shmctl (first, second, (struct shmid_ds *) ptr); err = sys_shmctl (first, second, (struct shmid_ds __user *) ptr);
goto out; goto out;
default: default:
err = -ENOSYS; err = -ENOSYS;
...@@ -344,9 +344,11 @@ asmlinkage unsigned long ...@@ -344,9 +344,11 @@ asmlinkage unsigned long
c_sys_nis_syscall (struct pt_regs *regs) c_sys_nis_syscall (struct pt_regs *regs)
{ {
static int count = 0; static int count = 0;
if (count++ > 5) return -ENOSYS; if (count++ > 5)
printk ("%s[%d]: Unimplemented SPARC system call %d\n", current->comm, current->pid, (int)regs->u_regs[1]); return -ENOSYS;
printk ("%s[%d]: Unimplemented SPARC system call %d\n",
current->comm, current->pid, (int)regs->u_regs[1]);
#ifdef DEBUG_UNIMP_SYSCALL #ifdef DEBUG_UNIMP_SYSCALL
show_regs (regs); show_regs (regs);
#endif #endif
...@@ -378,8 +380,8 @@ sparc_breakpoint (struct pt_regs *regs) ...@@ -378,8 +380,8 @@ sparc_breakpoint (struct pt_regs *regs)
} }
asmlinkage int asmlinkage int
sparc_sigaction (int sig, const struct old_sigaction *act, sparc_sigaction (int sig, const struct old_sigaction __user *act,
struct old_sigaction *oact) struct old_sigaction __user *oact)
{ {
struct k_sigaction new_ka, old_ka; struct k_sigaction new_ka, old_ka;
int ret; int ret;
...@@ -422,8 +424,11 @@ sparc_sigaction (int sig, const struct old_sigaction *act, ...@@ -422,8 +424,11 @@ sparc_sigaction (int sig, const struct old_sigaction *act,
} }
asmlinkage int asmlinkage int
sys_rt_sigaction(int sig, const struct sigaction *act, struct sigaction *oact, sys_rt_sigaction(int sig,
void *restorer, size_t sigsetsize) const struct sigaction __user *act,
struct sigaction __user *oact,
void __user *restorer,
size_t sigsetsize)
{ {
struct k_sigaction new_ka, old_ka; struct k_sigaction new_ka, old_ka;
int ret; int ret;
...@@ -453,7 +458,7 @@ sys_rt_sigaction(int sig, const struct sigaction *act, struct sigaction *oact, ...@@ -453,7 +458,7 @@ sys_rt_sigaction(int sig, const struct sigaction *act, struct sigaction *oact,
return ret; return ret;
} }
asmlinkage int sys_getdomainname(char *name, int len) asmlinkage int sys_getdomainname(char __user *name, int len)
{ {
int nlen; int nlen;
int err = -EFAULT; int err = -EFAULT;
...@@ -464,9 +469,9 @@ asmlinkage int sys_getdomainname(char *name, int len) ...@@ -464,9 +469,9 @@ asmlinkage int sys_getdomainname(char *name, int len)
if (nlen < len) if (nlen < len)
len = nlen; len = nlen;
if(len > __NEW_UTS_LEN) if (len > __NEW_UTS_LEN)
goto done; goto done;
if(copy_to_user(name, system_utsname.domainname, len)) if (copy_to_user(name, system_utsname.domainname, len))
goto done; goto done;
err = 0; err = 0;
done: done:
......
This diff is collapsed.
...@@ -473,7 +473,7 @@ static unsigned long clone_stackframe(unsigned long csp, unsigned long psp) ...@@ -473,7 +473,7 @@ static unsigned long clone_stackframe(unsigned long csp, unsigned long psp)
distance = fp - psp; distance = fp - psp;
rval = (csp - distance); rval = (csp - distance);
if (copy_in_user(rval, psp, distance)) if (copy_in_user((void __user *) rval, (void __user *) psp, distance))
rval = 0; rval = 0;
else if (test_thread_flag(TIF_32BIT)) { else if (test_thread_flag(TIF_32BIT)) {
if (put_user(((u32)csp), &(((struct reg_window32 *)rval)->ins[6]))) if (put_user(((u32)csp), &(((struct reg_window32 *)rval)->ins[6])))
......
...@@ -42,8 +42,8 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs, ...@@ -42,8 +42,8 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs,
/* {set, get}context() needed for 64-bit SparcLinux userland. */ /* {set, get}context() needed for 64-bit SparcLinux userland. */
asmlinkage void sparc64_set_context(struct pt_regs *regs) asmlinkage void sparc64_set_context(struct pt_regs *regs)
{ {
struct ucontext *ucp = (struct ucontext *) regs->u_regs[UREG_I0]; struct ucontext *ucp = (struct ucontext __user *) regs->u_regs[UREG_I0];
mc_gregset_t *grp; mc_gregset_t __user *grp;
unsigned long pc, npc, tstate; unsigned long pc, npc, tstate;
unsigned long fp, i7; unsigned long fp, i7;
unsigned char fenab; unsigned char fenab;
...@@ -104,9 +104,9 @@ asmlinkage void sparc64_set_context(struct pt_regs *regs) ...@@ -104,9 +104,9 @@ asmlinkage void sparc64_set_context(struct pt_regs *regs)
err |= __get_user(fp, &(ucp->uc_mcontext.mc_fp)); err |= __get_user(fp, &(ucp->uc_mcontext.mc_fp));
err |= __get_user(i7, &(ucp->uc_mcontext.mc_i7)); err |= __get_user(i7, &(ucp->uc_mcontext.mc_i7));
err |= __put_user(fp, err |= __put_user(fp,
(&(((struct reg_window *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[6]))); (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[6])));
err |= __put_user(i7, err |= __put_user(i7,
(&(((struct reg_window *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[7]))); (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[7])));
err |= __get_user(fenab, &(ucp->uc_mcontext.mc_fpregs.mcfpu_enab)); err |= __get_user(fenab, &(ucp->uc_mcontext.mc_fpregs.mcfpu_enab));
if (fenab) { if (fenab) {
...@@ -121,7 +121,7 @@ asmlinkage void sparc64_set_context(struct pt_regs *regs) ...@@ -121,7 +121,7 @@ asmlinkage void sparc64_set_context(struct pt_regs *regs)
(sizeof(unsigned int) * 32)); (sizeof(unsigned int) * 32));
if (fprs & FPRS_DU) if (fprs & FPRS_DU)
err |= copy_from_user(fpregs+16, err |= copy_from_user(fpregs+16,
((unsigned long *)&(ucp->uc_mcontext.mc_fpregs.mcfpu_fregs))+16, ((unsigned long __user *)&(ucp->uc_mcontext.mc_fpregs.mcfpu_fregs))+16,
(sizeof(unsigned int) * 32)); (sizeof(unsigned int) * 32));
err |= __get_user(current_thread_info()->xfsr[0], err |= __get_user(current_thread_info()->xfsr[0],
&(ucp->uc_mcontext.mc_fpregs.mcfpu_fsr)); &(ucp->uc_mcontext.mc_fpregs.mcfpu_fsr));
...@@ -139,9 +139,9 @@ asmlinkage void sparc64_set_context(struct pt_regs *regs) ...@@ -139,9 +139,9 @@ asmlinkage void sparc64_set_context(struct pt_regs *regs)
asmlinkage void sparc64_get_context(struct pt_regs *regs) asmlinkage void sparc64_get_context(struct pt_regs *regs)
{ {
struct ucontext *ucp = (struct ucontext *) regs->u_regs[UREG_I0]; struct ucontext *ucp = (struct ucontext __user *) regs->u_regs[UREG_I0];
mc_gregset_t *grp; mc_gregset_t __user *grp;
mcontext_t *mcp; mcontext_t __user *mcp;
unsigned long fp, i7; unsigned long fp, i7;
unsigned char fenab; unsigned char fenab;
int err; int err;
...@@ -170,7 +170,7 @@ asmlinkage void sparc64_get_context(struct pt_regs *regs) ...@@ -170,7 +170,7 @@ asmlinkage void sparc64_get_context(struct pt_regs *regs)
err = 0; err = 0;
if (_NSIG_WORDS == 1) if (_NSIG_WORDS == 1)
err |= __put_user(current->blocked.sig[0], err |= __put_user(current->blocked.sig[0],
(unsigned long *)&ucp->uc_sigmask); (unsigned long __user *)&ucp->uc_sigmask);
else else
err |= __copy_to_user(&ucp->uc_sigmask, &current->blocked, err |= __copy_to_user(&ucp->uc_sigmask, &current->blocked,
sizeof(sigset_t)); sizeof(sigset_t));
...@@ -196,9 +196,9 @@ asmlinkage void sparc64_get_context(struct pt_regs *regs) ...@@ -196,9 +196,9 @@ asmlinkage void sparc64_get_context(struct pt_regs *regs)
err |= __put_user(regs->u_regs[UREG_I7], &((*grp)[MC_O7])); err |= __put_user(regs->u_regs[UREG_I7], &((*grp)[MC_O7]));
err |= __get_user(fp, err |= __get_user(fp,
(&(((struct reg_window *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[6]))); (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[6])));
err |= __get_user(i7, err |= __get_user(i7,
(&(((struct reg_window *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[7]))); (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[7])));
err |= __put_user(fp, &(mcp->mc_fp)); err |= __put_user(fp, &(mcp->mc_fp));
err |= __put_user(i7, &(mcp->mc_i7)); err |= __put_user(i7, &(mcp->mc_i7));
...@@ -213,7 +213,7 @@ asmlinkage void sparc64_get_context(struct pt_regs *regs) ...@@ -213,7 +213,7 @@ asmlinkage void sparc64_get_context(struct pt_regs *regs)
(sizeof(unsigned int) * 32)); (sizeof(unsigned int) * 32));
if (fprs & FPRS_DU) if (fprs & FPRS_DU)
err |= copy_to_user( err |= copy_to_user(
((unsigned long *)&(mcp->mc_fpregs.mcfpu_fregs))+16, fpregs+16, ((unsigned long __user *)&(mcp->mc_fpregs.mcfpu_fregs))+16, fpregs+16,
(sizeof(unsigned int) * 32)); (sizeof(unsigned int) * 32));
err |= __put_user(current_thread_info()->xfsr[0], &(mcp->mc_fpregs.mcfpu_fsr)); err |= __put_user(current_thread_info()->xfsr[0], &(mcp->mc_fpregs.mcfpu_fsr));
err |= __put_user(current_thread_info()->gsr[0], &(mcp->mc_fpregs.mcfpu_gsr)); err |= __put_user(current_thread_info()->gsr[0], &(mcp->mc_fpregs.mcfpu_gsr));
...@@ -231,7 +231,7 @@ struct rt_signal_frame { ...@@ -231,7 +231,7 @@ struct rt_signal_frame {
struct sparc_stackf ss; struct sparc_stackf ss;
siginfo_t info; siginfo_t info;
struct pt_regs regs; struct pt_regs regs;
__siginfo_fpu_t * fpu_save; __siginfo_fpu_t __user *fpu_save;
stack_t stack; stack_t stack;
sigset_t mask; sigset_t mask;
__siginfo_fpu_t fpu_state; __siginfo_fpu_t fpu_state;
...@@ -300,7 +300,7 @@ asmlinkage void do_sigsuspend(struct pt_regs *regs) ...@@ -300,7 +300,7 @@ asmlinkage void do_sigsuspend(struct pt_regs *regs)
_sigpause_common(regs->u_regs[UREG_I0], regs); _sigpause_common(regs->u_regs[UREG_I0], regs);
} }
asmlinkage void do_rt_sigsuspend(sigset_t *uset, size_t sigsetsize, struct pt_regs *regs) asmlinkage void do_rt_sigsuspend(sigset_t __user *uset, size_t sigsetsize, struct pt_regs *regs)
{ {
sigset_t oldset, set; sigset_t oldset, set;
...@@ -351,7 +351,7 @@ asmlinkage void do_rt_sigsuspend(sigset_t *uset, size_t sigsetsize, struct pt_re ...@@ -351,7 +351,7 @@ asmlinkage void do_rt_sigsuspend(sigset_t *uset, size_t sigsetsize, struct pt_re
} }
static inline int static inline int
restore_fpu_state(struct pt_regs *regs, __siginfo_fpu_t *fpu) restore_fpu_state(struct pt_regs *regs, __siginfo_fpu_t __user *fpu)
{ {
unsigned long *fpregs = current_thread_info()->fpregs; unsigned long *fpregs = current_thread_info()->fpregs;
unsigned long fprs; unsigned long fprs;
...@@ -374,16 +374,16 @@ restore_fpu_state(struct pt_regs *regs, __siginfo_fpu_t *fpu) ...@@ -374,16 +374,16 @@ restore_fpu_state(struct pt_regs *regs, __siginfo_fpu_t *fpu)
void do_rt_sigreturn(struct pt_regs *regs) void do_rt_sigreturn(struct pt_regs *regs)
{ {
struct rt_signal_frame *sf; struct rt_signal_frame __user *sf;
unsigned long tpc, tnpc, tstate; unsigned long tpc, tnpc, tstate;
__siginfo_fpu_t *fpu_save; __siginfo_fpu_t __user *fpu_save;
mm_segment_t old_fs; mm_segment_t old_fs;
sigset_t set; sigset_t set;
stack_t st; stack_t st;
int err; int err;
synchronize_user_stack (); synchronize_user_stack ();
sf = (struct rt_signal_frame *) sf = (struct rt_signal_frame __user *)
(regs->u_regs [UREG_FP] + STACK_BIAS); (regs->u_regs [UREG_FP] + STACK_BIAS);
/* 1. Make sure we are not getting garbage from the user */ /* 1. Make sure we are not getting garbage from the user */
...@@ -438,7 +438,7 @@ void do_rt_sigreturn(struct pt_regs *regs) ...@@ -438,7 +438,7 @@ void do_rt_sigreturn(struct pt_regs *regs)
} }
/* Checks if the fp is valid */ /* Checks if the fp is valid */
static int invalid_frame_pointer(void *fp, int fplen) static int invalid_frame_pointer(void __user *fp, int fplen)
{ {
if (((unsigned long) fp) & 7) if (((unsigned long) fp) & 7)
return 1; return 1;
...@@ -446,7 +446,7 @@ static int invalid_frame_pointer(void *fp, int fplen) ...@@ -446,7 +446,7 @@ static int invalid_frame_pointer(void *fp, int fplen)
} }
static inline int static inline int
save_fpu_state(struct pt_regs *regs, __siginfo_fpu_t *fpu) save_fpu_state(struct pt_regs *regs, __siginfo_fpu_t __user *fpu)
{ {
unsigned long *fpregs = (unsigned long *)(regs+1); unsigned long *fpregs = (unsigned long *)(regs+1);
unsigned long fprs; unsigned long fprs;
...@@ -466,7 +466,7 @@ save_fpu_state(struct pt_regs *regs, __siginfo_fpu_t *fpu) ...@@ -466,7 +466,7 @@ save_fpu_state(struct pt_regs *regs, __siginfo_fpu_t *fpu)
return err; return err;
} }
static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, unsigned long framesize) static inline void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, unsigned long framesize)
{ {
unsigned long sp; unsigned long sp;
...@@ -478,14 +478,14 @@ static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, u ...@@ -478,14 +478,14 @@ static inline void *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, u
!((current->sas_ss_sp + current->sas_ss_size) & 7)) !((current->sas_ss_sp + current->sas_ss_size) & 7))
sp = current->sas_ss_sp + current->sas_ss_size; sp = current->sas_ss_sp + current->sas_ss_size;
} }
return (void *)(sp - framesize); return (void __user *)(sp - framesize);
} }
static inline void static inline void
setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs, setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs,
int signo, sigset_t *oldset, siginfo_t *info) int signo, sigset_t *oldset, siginfo_t *info)
{ {
struct rt_signal_frame *sf; struct rt_signal_frame __user *sf;
int sigframe_size, err; int sigframe_size, err;
/* 1. Make sure everything is clean */ /* 1. Make sure everything is clean */
...@@ -496,7 +496,8 @@ setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs, ...@@ -496,7 +496,8 @@ setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs,
if (!(current_thread_info()->fpsaved[0] & FPRS_FEF)) if (!(current_thread_info()->fpsaved[0] & FPRS_FEF))
sigframe_size -= sizeof(__siginfo_fpu_t); sigframe_size -= sizeof(__siginfo_fpu_t);
sf = (struct rt_signal_frame *)get_sigframe(ka, regs, sigframe_size); sf = (struct rt_signal_frame __user *)
get_sigframe(ka, regs, sigframe_size);
if (invalid_frame_pointer (sf, sigframe_size)) if (invalid_frame_pointer (sf, sigframe_size))
goto sigill; goto sigill;
...@@ -521,8 +522,8 @@ setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs, ...@@ -521,8 +522,8 @@ setup_rt_frame(struct k_sigaction *ka, struct pt_regs *regs,
err |= copy_to_user(&sf->mask, oldset, sizeof(sigset_t)); err |= copy_to_user(&sf->mask, oldset, sizeof(sigset_t));
err |= copy_in_user((u64 *)sf, err |= copy_in_user((u64 __user *)sf,
(u64 *)(regs->u_regs[UREG_FP]+STACK_BIAS), (u64 __user *)(regs->u_regs[UREG_FP]+STACK_BIAS),
sizeof(struct reg_window)); sizeof(struct reg_window));
if (info) if (info)
...@@ -560,7 +561,8 @@ static inline void handle_signal(unsigned long signr, struct k_sigaction *ka, ...@@ -560,7 +561,8 @@ static inline void handle_signal(unsigned long signr, struct k_sigaction *ka,
siginfo_t *info, siginfo_t *info,
sigset_t *oldset, struct pt_regs *regs) sigset_t *oldset, struct pt_regs *regs)
{ {
setup_rt_frame(ka, regs, signr, oldset, (ka->sa.sa_flags & SA_SIGINFO) ? info : NULL); setup_rt_frame(ka, regs, signr, oldset,
(ka->sa.sa_flags & SA_SIGINFO) ? info : NULL);
if (ka->sa.sa_flags & SA_ONESHOT) if (ka->sa.sa_flags & SA_ONESHOT)
ka->sa.sa_handler = SIG_DFL; ka->sa.sa_handler = SIG_DFL;
if (!(ka->sa.sa_flags & SA_NOMASK)) { if (!(ka->sa.sa_flags & SA_NOMASK)) {
......
This diff is collapsed.
...@@ -245,9 +245,9 @@ asmlinkage int sys_ipc (unsigned call, int first, int second, unsigned long thir ...@@ -245,9 +245,9 @@ asmlinkage int sys_ipc (unsigned call, int first, int second, unsigned long thir
return err; return err;
} }
extern asmlinkage int sys_newuname(struct new_utsname * name); extern asmlinkage int sys_newuname(struct new_utsname __user *name);
asmlinkage int sparc64_newuname(struct new_utsname * name) asmlinkage int sparc64_newuname(struct new_utsname __user *name)
{ {
int ret = sys_newuname(name); int ret = sys_newuname(name);
...@@ -421,7 +421,7 @@ sparc_breakpoint (struct pt_regs *regs) ...@@ -421,7 +421,7 @@ sparc_breakpoint (struct pt_regs *regs)
extern void check_pending(int signum); extern void check_pending(int signum);
asmlinkage int sys_getdomainname(char *name, int len) asmlinkage int sys_getdomainname(char __user *name, int len)
{ {
int nlen; int nlen;
int err = -EFAULT; int err = -EFAULT;
...@@ -432,9 +432,9 @@ asmlinkage int sys_getdomainname(char *name, int len) ...@@ -432,9 +432,9 @@ asmlinkage int sys_getdomainname(char *name, int len)
if (nlen < len) if (nlen < len)
len = nlen; len = nlen;
if(len > __NEW_UTS_LEN) if (len > __NEW_UTS_LEN)
goto done; goto done;
if(copy_to_user(name, system_utsname.domainname, len)) if (copy_to_user(name, system_utsname.domainname, len))
goto done; goto done;
err = 0; err = 0;
done: done:
...@@ -458,7 +458,7 @@ asmlinkage int solaris_syscall(struct pt_regs *regs) ...@@ -458,7 +458,7 @@ asmlinkage int solaris_syscall(struct pt_regs *regs)
regs->tpc &= 0xffffffff; regs->tpc &= 0xffffffff;
regs->tnpc &= 0xffffffff; regs->tnpc &= 0xffffffff;
} }
if(++count <= 5) { if (++count <= 5) {
printk ("For Solaris binary emulation you need solaris module loaded\n"); printk ("For Solaris binary emulation you need solaris module loaded\n");
show_regs (regs); show_regs (regs);
} }
...@@ -478,7 +478,7 @@ asmlinkage int sunos_syscall(struct pt_regs *regs) ...@@ -478,7 +478,7 @@ asmlinkage int sunos_syscall(struct pt_regs *regs)
regs->tpc &= 0xffffffff; regs->tpc &= 0xffffffff;
regs->tnpc &= 0xffffffff; regs->tnpc &= 0xffffffff;
} }
if(++count <= 20) if (++count <= 20)
printk ("SunOS binary emulation not compiled in\n"); printk ("SunOS binary emulation not compiled in\n");
force_sig(SIGSEGV, current); force_sig(SIGSEGV, current);
...@@ -486,9 +486,11 @@ asmlinkage int sunos_syscall(struct pt_regs *regs) ...@@ -486,9 +486,11 @@ asmlinkage int sunos_syscall(struct pt_regs *regs)
} }
#endif #endif
asmlinkage int sys_utrap_install(utrap_entry_t type, utrap_handler_t new_p, asmlinkage int sys_utrap_install(utrap_entry_t type,
utrap_handler_t new_p,
utrap_handler_t new_d, utrap_handler_t new_d,
utrap_handler_t *old_p, utrap_handler_t *old_d) utrap_handler_t __user *old_p,
utrap_handler_t __user *old_d)
{ {
if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31) if (type < UT_INSTRUCTION_EXCEPTION || type > UT_TRAP_INSTRUCTION_31)
return -EINVAL; return -EINVAL;
...@@ -511,9 +513,11 @@ asmlinkage int sys_utrap_install(utrap_entry_t type, utrap_handler_t new_p, ...@@ -511,9 +513,11 @@ asmlinkage int sys_utrap_install(utrap_entry_t type, utrap_handler_t new_p,
if (!current_thread_info()->utraps) { if (!current_thread_info()->utraps) {
current_thread_info()->utraps = current_thread_info()->utraps =
kmalloc((UT_TRAP_INSTRUCTION_31+1)*sizeof(long), GFP_KERNEL); kmalloc((UT_TRAP_INSTRUCTION_31+1)*sizeof(long), GFP_KERNEL);
if (!current_thread_info()->utraps) return -ENOMEM; if (!current_thread_info()->utraps)
return -ENOMEM;
current_thread_info()->utraps[0] = 1; current_thread_info()->utraps[0] = 1;
memset(current_thread_info()->utraps+1, 0, UT_TRAP_INSTRUCTION_31*sizeof(long)); memset(current_thread_info()->utraps+1, 0,
UT_TRAP_INSTRUCTION_31*sizeof(long));
} else { } else {
if ((utrap_handler_t)current_thread_info()->utraps[type] != new_p && if ((utrap_handler_t)current_thread_info()->utraps[type] != new_p &&
current_thread_info()->utraps[0] > 1) { current_thread_info()->utraps[0] > 1) {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Copyright 2001-2003 SuSE Labs. * Copyright 2001-2003 SuSE Labs.
* Distributed under the GNU public license, v2. * Distributed under the GNU public license, v2.
* *
* This is a GART driver for the AMD64 on-CPU northbridge. * This is a GART driver for the AMD Opteron/Athlon64 on-CPU northbridge.
* It also includes support for the AMD 8151 AGP bridge, * It also includes support for the AMD 8151 AGP bridge,
* although it doesn't actually do much, as all the real * although it doesn't actually do much, as all the real
* work is done in the northbridge(s). * work is done in the northbridge(s).
...@@ -340,7 +340,7 @@ static int __init agp_amdk8_probe (struct pci_dev *dev, const struct pci_device_ ...@@ -340,7 +340,7 @@ static int __init agp_amdk8_probe (struct pci_dev *dev, const struct pci_device_
if (cap_ptr == 0) if (cap_ptr == 0)
return -ENODEV; return -ENODEV;
printk (KERN_INFO PFX "Detected AMD64 on-CPU GART\n"); printk (KERN_INFO PFX "Detected Opteron/Athlon64 on-CPU GART\n");
agp_bridge->dev = dev; agp_bridge->dev = dev;
agp_bridge->capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
......
...@@ -266,12 +266,6 @@ drm_agp_head_t *DRM(agp_init)(void) ...@@ -266,12 +266,6 @@ drm_agp_head_t *DRM(agp_init)(void)
head->cant_use_aperture = head->agp_info.cant_use_aperture; head->cant_use_aperture = head->agp_info.cant_use_aperture;
head->page_mask = head->agp_info.page_mask; head->page_mask = head->agp_info.page_mask;
#endif #endif
DRM_INFO("AGP %d.%d aperture @ 0x%08lx %ZuMB\n",
head->agp_info.version.major,
head->agp_info.version.minor,
head->agp_info.aper_base,
head->agp_info.aper_size);
} }
return head; return head;
} }
......
...@@ -106,8 +106,6 @@ static int isapnp_detected; ...@@ -106,8 +106,6 @@ static int isapnp_detected;
/* some prototypes */ /* some prototypes */
extern struct pnp_protocol isapnp_protocol;
static inline void write_data(unsigned char x) static inline void write_data(unsigned char x)
{ {
outb(x, _PNPWRP); outb(x, _PNPWRP);
......
...@@ -869,7 +869,7 @@ static int pnpbios_disable_resources(struct pnp_dev *dev) ...@@ -869,7 +869,7 @@ static int pnpbios_disable_resources(struct pnp_dev *dev)
/* PnP Layer support */ /* PnP Layer support */
static struct pnp_protocol pnpbios_protocol = { struct pnp_protocol pnpbios_protocol = {
.name = "Plug and Play BIOS", .name = "Plug and Play BIOS",
.get = pnpbios_get_resources, .get = pnpbios_get_resources,
.set = pnpbios_set_resources, .set = pnpbios_set_resources,
......
...@@ -58,7 +58,7 @@ struct old_linux_dirent { ...@@ -58,7 +58,7 @@ struct old_linux_dirent {
}; };
struct readdir_callback { struct readdir_callback {
struct old_linux_dirent * dirent; struct old_linux_dirent __user * dirent;
int count; int count;
}; };
...@@ -66,7 +66,7 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset ...@@ -66,7 +66,7 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
ino_t ino, unsigned int d_type) ino_t ino, unsigned int d_type)
{ {
struct readdir_callback * buf = (struct readdir_callback *) __buf; struct readdir_callback * buf = (struct readdir_callback *) __buf;
struct old_linux_dirent * dirent; struct old_linux_dirent __user * dirent;
if (buf->count) if (buf->count)
return -EINVAL; return -EINVAL;
...@@ -85,7 +85,7 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset ...@@ -85,7 +85,7 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
return 0; return 0;
} }
asmlinkage long old_readdir(unsigned int fd, void * dirent, unsigned int count) asmlinkage long old_readdir(unsigned int fd, struct old_linux_dirent __user * dirent, unsigned int count)
{ {
int error; int error;
struct file * file; struct file * file;
...@@ -122,8 +122,8 @@ struct linux_dirent { ...@@ -122,8 +122,8 @@ struct linux_dirent {
}; };
struct getdents_callback { struct getdents_callback {
struct linux_dirent * current_dir; struct linux_dirent __user * current_dir;
struct linux_dirent * previous; struct linux_dirent __user * previous;
int count; int count;
int error; int error;
}; };
...@@ -131,7 +131,7 @@ struct getdents_callback { ...@@ -131,7 +131,7 @@ struct getdents_callback {
static int filldir(void * __buf, const char * name, int namlen, loff_t offset, static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
ino_t ino, unsigned int d_type) ino_t ino, unsigned int d_type)
{ {
struct linux_dirent * dirent; struct linux_dirent __user * dirent;
struct getdents_callback * buf = (struct getdents_callback *) __buf; struct getdents_callback * buf = (struct getdents_callback *) __buf;
int reclen = ROUND_UP(NAME_OFFSET(dirent) + namlen + 1); int reclen = ROUND_UP(NAME_OFFSET(dirent) + namlen + 1);
...@@ -161,10 +161,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset, ...@@ -161,10 +161,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
return -EFAULT; return -EFAULT;
} }
asmlinkage long sys_getdents(unsigned int fd, void * dirent, unsigned int count) asmlinkage long sys_getdents(unsigned int fd, struct linux_dirent __user * dirent, unsigned int count)
{ {
struct file * file; struct file * file;
struct linux_dirent * lastdirent; struct linux_dirent __user * lastdirent;
struct getdents_callback buf; struct getdents_callback buf;
int error; int error;
...@@ -177,7 +177,7 @@ asmlinkage long sys_getdents(unsigned int fd, void * dirent, unsigned int count) ...@@ -177,7 +177,7 @@ asmlinkage long sys_getdents(unsigned int fd, void * dirent, unsigned int count)
if (!file) if (!file)
goto out; goto out;
buf.current_dir = (struct linux_dirent *) dirent; buf.current_dir = dirent;
buf.previous = NULL; buf.previous = NULL;
buf.count = count; buf.count = count;
buf.error = 0; buf.error = 0;
...@@ -203,8 +203,8 @@ asmlinkage long sys_getdents(unsigned int fd, void * dirent, unsigned int count) ...@@ -203,8 +203,8 @@ asmlinkage long sys_getdents(unsigned int fd, void * dirent, unsigned int count)
#define ROUND_UP64(x) (((x)+sizeof(u64)-1) & ~(sizeof(u64)-1)) #define ROUND_UP64(x) (((x)+sizeof(u64)-1) & ~(sizeof(u64)-1))
struct getdents_callback64 { struct getdents_callback64 {
struct linux_dirent64 * current_dir; struct linux_dirent64 __user * current_dir;
struct linux_dirent64 * previous; struct linux_dirent64 __user * previous;
int count; int count;
int error; int error;
}; };
...@@ -212,7 +212,7 @@ struct getdents_callback64 { ...@@ -212,7 +212,7 @@ struct getdents_callback64 {
static int filldir64(void * __buf, const char * name, int namlen, loff_t offset, static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
ino_t ino, unsigned int d_type) ino_t ino, unsigned int d_type)
{ {
struct linux_dirent64 *dirent; struct linux_dirent64 __user *dirent;
struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf; struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf;
int reclen = ROUND_UP64(NAME_OFFSET(dirent) + namlen + 1); int reclen = ROUND_UP64(NAME_OFFSET(dirent) + namlen + 1);
...@@ -246,10 +246,10 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset, ...@@ -246,10 +246,10 @@ static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
return -EFAULT; return -EFAULT;
} }
asmlinkage long sys_getdents64(unsigned int fd, void * dirent, unsigned int count) asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count)
{ {
struct file * file; struct file * file;
struct linux_dirent64 * lastdirent; struct linux_dirent64 __user * lastdirent;
struct getdents_callback64 buf; struct getdents_callback64 buf;
int error; int error;
...@@ -262,7 +262,7 @@ asmlinkage long sys_getdents64(unsigned int fd, void * dirent, unsigned int coun ...@@ -262,7 +262,7 @@ asmlinkage long sys_getdents64(unsigned int fd, void * dirent, unsigned int coun
if (!file) if (!file)
goto out; goto out;
buf.current_dir = (struct linux_dirent64 *) dirent; buf.current_dir = dirent;
buf.previous = NULL; buf.previous = NULL;
buf.count = count; buf.count = count;
buf.error = 0; buf.error = 0;
...@@ -273,9 +273,8 @@ asmlinkage long sys_getdents64(unsigned int fd, void * dirent, unsigned int coun ...@@ -273,9 +273,8 @@ asmlinkage long sys_getdents64(unsigned int fd, void * dirent, unsigned int coun
error = buf.error; error = buf.error;
lastdirent = buf.previous; lastdirent = buf.previous;
if (lastdirent) { if (lastdirent) {
struct linux_dirent64 d; typeof(lastdirent->d_off) d_off = file->f_pos;
d.d_off = file->f_pos; __put_user(d_off, &lastdirent->d_off);
__put_user(d.d_off, &lastdirent->d_off);
error = count - buf.count; error = count - buf.count;
} }
......
...@@ -43,7 +43,7 @@ int seq_open(struct file *file, struct seq_operations *op) ...@@ -43,7 +43,7 @@ int seq_open(struct file *file, struct seq_operations *op)
* *
* Ready-made ->f_op->read() * Ready-made ->f_op->read()
*/ */
ssize_t seq_read(struct file *file, char *buf, size_t size, loff_t *ppos) ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)
{ {
struct seq_file *m = (struct seq_file *)file->private_data; struct seq_file *m = (struct seq_file *)file->private_data;
size_t copied = 0; size_t copied = 0;
......
...@@ -407,7 +407,7 @@ struct super_block * user_get_super(dev_t dev) ...@@ -407,7 +407,7 @@ struct super_block * user_get_super(dev_t dev)
return NULL; return NULL;
} }
asmlinkage long sys_ustat(dev_t dev, struct ustat * ubuf) asmlinkage long sys_ustat(dev_t dev, struct ustat __user * ubuf)
{ {
struct super_block *s; struct super_block *s;
struct ustat tmp; struct ustat tmp;
......
#ifndef _ASM_GENERIC_SIGINFO_H #ifndef _ASM_GENERIC_SIGINFO_H
#define _ASM_GENERIC_SIGINFO_H #define _ASM_GENERIC_SIGINFO_H
#include <linux/compiler.h>
#include <linux/types.h> #include <linux/types.h>
typedef union sigval { typedef union sigval {
......
...@@ -118,10 +118,10 @@ struct sigstack { ...@@ -118,10 +118,10 @@ struct sigstack {
}; };
/* Sigvec flags */ /* Sigvec flags */
#define SV_SSTACK 1 /* This signal handler should use sig-stack */ #define SV_SSTACK 1u /* This signal handler should use sig-stack */
#define SV_INTR 2 /* Sig return should not restart system call */ #define SV_INTR 2u /* Sig return should not restart system call */
#define SV_RESET 4 /* Set handler to SIG_DFL upon taken signal */ #define SV_RESET 4u /* Set handler to SIG_DFL upon taken signal */
#define SV_IGNCHILD 8 /* Do not send SIGCHLD */ #define SV_IGNCHILD 8u /* Do not send SIGCHLD */
/* /*
* sa_flags values: SA_STACK is not currently supported, but will allow the * sa_flags values: SA_STACK is not currently supported, but will allow the
...@@ -137,11 +137,11 @@ struct sigstack { ...@@ -137,11 +137,11 @@ struct sigstack {
#define SA_ONSTACK SV_SSTACK #define SA_ONSTACK SV_SSTACK
#define SA_RESTART SV_INTR #define SA_RESTART SV_INTR
#define SA_ONESHOT SV_RESET #define SA_ONESHOT SV_RESET
#define SA_INTERRUPT 0x10 #define SA_INTERRUPT 0x10u
#define SA_NOMASK 0x20 #define SA_NOMASK 0x20u
#define SA_SHIRQ 0x40 #define SA_SHIRQ 0x40u
#define SA_NOCLDWAIT 0x100 #define SA_NOCLDWAIT 0x100u
#define SA_SIGINFO 0x200 #define SA_SIGINFO 0x200u
#define SIG_BLOCK 0x01 /* for blocking signals */ #define SIG_BLOCK 0x01 /* for blocking signals */
#define SIG_UNBLOCK 0x02 /* for unblocking signals */ #define SIG_UNBLOCK 0x02 /* for unblocking signals */
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#define _ASM_UACCESS_H #define _ASM_UACCESS_H
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/compiler.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -45,7 +46,7 @@ ...@@ -45,7 +46,7 @@
#define __access_ok(addr,size) (__user_ok((addr) & get_fs().seg,(size))) #define __access_ok(addr,size) (__user_ok((addr) & get_fs().seg,(size)))
#define access_ok(type,addr,size) __access_ok((unsigned long)(addr),(size)) #define access_ok(type,addr,size) __access_ok((unsigned long)(addr),(size))
extern inline int verify_area(int type, const void * addr, unsigned long size) static inline int verify_area(int type, const void __user * addr, unsigned long size)
{ {
return access_ok(type,addr,size)?0:-EFAULT; return access_ok(type,addr,size)?0:-EFAULT;
} }
...@@ -291,87 +292,87 @@ __asm__ __volatile__( \ ...@@ -291,87 +292,87 @@ __asm__ __volatile__( \
extern int __get_user_bad(void); extern int __get_user_bad(void);
extern __kernel_size_t __copy_user(void *to, void *from, __kernel_size_t size); extern unsigned long __copy_user(void *to, const void *from, unsigned long size);
#define copy_to_user(to,from,n) ({ \ static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
void *__copy_to = (void *) (to); \
__kernel_size_t __copy_size = (__kernel_size_t) (n); \
__kernel_size_t __copy_res; \
if(__copy_size && __access_ok((unsigned long)__copy_to, __copy_size)) { \
__copy_res = __copy_user(__copy_to, (void *) (from), __copy_size); \
} else __copy_res = __copy_size; \
__copy_res; })
#define __copy_to_user(to,from,n) \
__copy_user((void *)(to), \
(void *)(from), n)
#define copy_from_user(to,from,n) ({ \
void *__copy_to = (void *) (to); \
void *__copy_from = (void *) (from); \
__kernel_size_t __copy_size = (__kernel_size_t) (n); \
__kernel_size_t __copy_res; \
if(__copy_size && __access_ok((unsigned long)__copy_from, __copy_size)) { \
__copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \
} else __copy_res = __copy_size; \
__copy_res; })
#define __copy_from_user(to,from,n) \
__copy_user((void *)(to), \
(void *)(from), n)
extern __inline__ __kernel_size_t __clear_user(void *addr, __kernel_size_t size)
{ {
__kernel_size_t ret; if (n && __access_ok((unsigned long) to, n))
__asm__ __volatile__ ( return __copy_user((void *) to, from, n);
".section __ex_table,#alloc\n\t" else
".align 4\n\t" return n;
".word 1f,3\n\t"
".previous\n\t"
"mov %2, %%o1\n"
"1:\n\t"
"call __bzero\n\t"
" mov %1, %%o0\n\t"
"mov %%o0, %0\n"
: "=r" (ret) : "r" (addr), "r" (size) :
"o0", "o1", "o2", "o3", "o4", "o5", "o7",
"g1", "g2", "g3", "g4", "g5", "g7", "cc");
return ret;
} }
#define clear_user(addr,n) ({ \ static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n)
void *__clear_addr = (void *) (addr); \ {
__kernel_size_t __clear_size = (__kernel_size_t) (n); \ return __copy_user((void *)to, from, n);
__kernel_size_t __clear_res; \ }
if(__clear_size && __access_ok((unsigned long)__clear_addr, __clear_size)) { \
__clear_res = __clear_user(__clear_addr, __clear_size); \ static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
} else __clear_res = __clear_size; \ {
__clear_res; }) if (n && __access_ok((unsigned long) from, n))
return __copy_user(to, (void *) from, n);
extern int __strncpy_from_user(unsigned long dest, unsigned long src, int count); else
return n;
#define strncpy_from_user(dest,src,count) ({ \ }
unsigned long __sfu_src = (unsigned long) (src); \
int __sfu_count = (int) (count); \ static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n)
long __sfu_res = -EFAULT; \ {
if(__access_ok(__sfu_src, __sfu_count)) { \ return __copy_user(to, (void *)from, n);
__sfu_res = __strncpy_from_user((unsigned long) (dest), __sfu_src, __sfu_count); \ }
} __sfu_res; })
static inline unsigned long __clear_user(void __user *addr, unsigned long size)
extern int __strlen_user(const char *); {
extern int __strnlen_user(const char *, long len); unsigned long ret;
extern __inline__ int strlen_user(const char *str) __asm__ __volatile__ (
".section __ex_table,#alloc\n\t"
".align 4\n\t"
".word 1f,3\n\t"
".previous\n\t"
"mov %2, %%o1\n"
"1:\n\t"
"call __bzero\n\t"
" mov %1, %%o0\n\t"
"mov %%o0, %0\n"
: "=r" (ret) : "r" (addr), "r" (size) :
"o0", "o1", "o2", "o3", "o4", "o5", "o7",
"g1", "g2", "g3", "g4", "g5", "g7", "cc");
return ret;
}
static inline unsigned long clear_user(void __user *addr, unsigned long n)
{
if (n && __access_ok((unsigned long) addr, n))
return __clear_user(addr, n);
else
return n;
}
extern long __strncpy_from_user(char *dest, const char __user *src, long count);
static inline long strncpy_from_user(char *dest, const char __user *src, long count)
{
if (__access_ok((unsigned long) src, count))
return __strncpy_from_user(dest, src, count);
else
return -EFAULT;
}
extern long __strlen_user(const char __user *);
extern long __strnlen_user(const char __user *, long len);
static inline long strlen_user(const char __user *str)
{ {
if(!access_ok(VERIFY_READ, str, 0)) if (!access_ok(VERIFY_READ, str, 0))
return 0; return 0;
else else
return __strlen_user(str); return __strlen_user(str);
} }
extern __inline__ int strnlen_user(const char *str, long len) static inline long strnlen_user(const char __user *str, long len)
{ {
if(!access_ok(VERIFY_READ, str, 0)) if (!access_ok(VERIFY_READ, str, 0))
return 0; return 0;
else else
return __strnlen_user(str, len); return __strnlen_user(str, len);
......
...@@ -123,10 +123,10 @@ struct sigstack { ...@@ -123,10 +123,10 @@ struct sigstack {
}; };
/* Sigvec flags */ /* Sigvec flags */
#define SV_SSTACK 1 /* This signal handler should use sig-stack */ #define SV_SSTACK 1u /* This signal handler should use sig-stack */
#define SV_INTR 2 /* Sig return should not restart system call */ #define SV_INTR 2u /* Sig return should not restart system call */
#define SV_RESET 4 /* Set handler to SIG_DFL upon taken signal */ #define SV_RESET 4u /* Set handler to SIG_DFL upon taken signal */
#define SV_IGNCHILD 8 /* Do not send SIGCHLD */ #define SV_IGNCHILD 8u /* Do not send SIGCHLD */
/* /*
* sa_flags values: SA_STACK is not currently supported, but will allow the * sa_flags values: SA_STACK is not currently supported, but will allow the
...@@ -142,11 +142,11 @@ struct sigstack { ...@@ -142,11 +142,11 @@ struct sigstack {
#define SA_ONSTACK SV_SSTACK #define SA_ONSTACK SV_SSTACK
#define SA_RESTART SV_INTR #define SA_RESTART SV_INTR
#define SA_ONESHOT SV_RESET #define SA_ONESHOT SV_RESET
#define SA_INTERRUPT 0x10 #define SA_INTERRUPT 0x10u
#define SA_NOMASK 0x20 #define SA_NOMASK 0x20u
#define SA_SHIRQ 0x40 #define SA_SHIRQ 0x40u
#define SA_NOCLDWAIT 0x100 #define SA_NOCLDWAIT 0x100u
#define SA_SIGINFO 0x200 #define SA_SIGINFO 0x200u
#define SIG_BLOCK 0x01 /* for blocking signals */ #define SIG_BLOCK 0x01 /* for blocking signals */
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
*/ */
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/compiler.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/string.h> #include <linux/string.h>
#include <asm/a.out.h> #include <asm/a.out.h>
...@@ -52,7 +53,7 @@ do { \ ...@@ -52,7 +53,7 @@ do { \
#define __access_ok(addr,size) 1 #define __access_ok(addr,size) 1
#define access_ok(type,addr,size) 1 #define access_ok(type,addr,size) 1
static inline int verify_area(int type, const void * addr, unsigned long size) static inline int verify_area(int type, const void __user * addr, unsigned long size)
{ {
return 0; return 0;
} }
...@@ -249,44 +250,34 @@ __asm__ __volatile__( \ ...@@ -249,44 +250,34 @@ __asm__ __volatile__( \
extern int __get_user_bad(void); extern int __get_user_bad(void);
extern __kernel_size_t __copy_from_user(void *to, const void *from, extern unsigned long __copy_from_user(void *to, const void __user *from,
__kernel_size_t size); unsigned long size);
extern __kernel_size_t __copy_to_user(void *to, const void *from, extern unsigned long __copy_to_user(void __user *to, const void *from,
__kernel_size_t size); unsigned long size);
extern __kernel_size_t __copy_in_user(void *to, const void *from, extern unsigned long __copy_in_user(void __user *to, const void __user *from,
__kernel_size_t size); unsigned long size);
#define copy_from_user(to,from,n) \ #define copy_from_user __copy_from_user
__copy_from_user((void *)(to), \ #define copy_to_user __copy_to_user
(void *)(from), (__kernel_size_t)(n)) #define copy_in_user __copy_in_user
#define copy_to_user(to,from,n) \ static inline unsigned long __clear_user(void __user *addr, unsigned long size)
__copy_to_user((void *)(to), \
(void *) (from), (__kernel_size_t)(n))
#define copy_in_user(to,from,n) \
__copy_in_user((void *)(to), \
(void *) (from), (__kernel_size_t)(n))
static __inline__ __kernel_size_t __clear_user(void *addr, __kernel_size_t size)
{ {
extern __kernel_size_t __bzero_noasi(void *addr, __kernel_size_t size); extern unsigned long __bzero_noasi(void *addr, unsigned long size);
return __bzero_noasi(addr, size); return __bzero_noasi((void *) addr, size);
} }
#define clear_user(addr,n) \ #define clear_user __clear_user
__clear_user((void *)(addr), (__kernel_size_t)(n))
extern int __strncpy_from_user(unsigned long dest, unsigned long src, int count); extern long __strncpy_from_user(char *dest, const char __user *src, long count);
#define strncpy_from_user(dest,src,count) \ #define strncpy_from_user __strncpy_from_user
__strncpy_from_user((unsigned long)(dest), (unsigned long)(src), (int)(count))
extern int __strlen_user(const char *); extern long __strlen_user(const char __user *);
extern int __strnlen_user(const char *, long len); extern long __strnlen_user(const char __user *, long len);
#define strlen_user __strlen_user #define strlen_user __strlen_user
#define strnlen_user __strnlen_user #define strnlen_user __strnlen_user
......
...@@ -274,12 +274,31 @@ struct pnp_fixup { ...@@ -274,12 +274,31 @@ struct pnp_fixup {
#define pnp_can_configure(dev) ((!(dev)->active) && ((dev)->config_mode & PNP_CONFIG_AUTO) && \ #define pnp_can_configure(dev) ((!(dev)->active) && ((dev)->config_mode & PNP_CONFIG_AUTO) && \
((dev)->capabilities & PNP_CONFIGURABLE)) ((dev)->capabilities & PNP_CONFIGURABLE))
#ifdef CONFIG_ISAPNP
extern struct pnp_protocol isapnp_protocol;
#define pnp_device_is_isapnp(dev) ((dev)->protocol == (&isapnp_protocol))
#else
#define pnp_device_is_isapnp(dev) 0
#endif
#ifdef CONFIG_PNPBIOS
extern struct pnp_protocol pnpbios_protocol;
#define pnp_device_is_pnpbios(dev) ((dev)->protocol == (&pnpbios_protocol))
#else
#define pnp_device_is_pnpbios(dev) 0
#endif
/* status */ /* status */
#define PNP_READY 0x0000 #define PNP_READY 0x0000
#define PNP_ATTACHED 0x0001 #define PNP_ATTACHED 0x0001
#define PNP_BUSY 0x0002 #define PNP_BUSY 0x0002
#define PNP_FAULTY 0x0004 #define PNP_FAULTY 0x0004
/* isapnp specific macros */
#define isapnp_card_number(dev) ((dev)->card ? (dev)->card->number : -1)
#define isapnp_csn_number(dev) ((dev)->number)
/* /*
* Driver Management * Driver Management
......
...@@ -223,6 +223,13 @@ ...@@ -223,6 +223,13 @@
#define AC97_YMF753_DIT_CTRL2 0x66 /* DIT Control 2 */ #define AC97_YMF753_DIT_CTRL2 0x66 /* DIT Control 2 */
#define AC97_YMF753_3D_MODE_SEL 0x68 /* 3D Mode Select */ #define AC97_YMF753_3D_MODE_SEL 0x68 /* 3D Mode Select */
/* specific - C-Media */
#define AC97_CM9738_VENDOR_CTRL 0x5a
#define AC97_CM9739_MULTI_CHAN 0x64
#define AC97_CM9739_SPDIF_IN_STATUS 0x68 /* 32bit */
#define AC97_CM9739_SPDIF_CTRL 0x6c
/* ac97->scaps */ /* ac97->scaps */
#define AC97_SCAP_AUDIO (1<<0) /* audio AC'97 codec */ #define AC97_SCAP_AUDIO (1<<0) /* audio AC'97 codec */
#define AC97_SCAP_MODEM (1<<1) /* modem AC'97 codec */ #define AC97_SCAP_MODEM (1<<1) /* modem AC'97 codec */
...@@ -259,6 +266,9 @@ struct _snd_ac97 { ...@@ -259,6 +266,9 @@ struct _snd_ac97 {
void (*private_free) (ac97_t *ac97); void (*private_free) (ac97_t *ac97);
/* --- */ /* --- */
snd_card_t *card; snd_card_t *card;
struct pci_dev *pci; /* assigned PCI device - used for quirks */
unsigned short subsystem_vendor;
unsigned short subsystem_device;
spinlock_t reg_lock; spinlock_t reg_lock;
unsigned short num; /* number of codec: 0 = primary, 1 = secondary */ unsigned short num; /* number of codec: 0 = primary, 1 = secondary */
unsigned short addr; /* physical address of codec [0-3] */ unsigned short addr; /* physical address of codec [0-3] */
...@@ -280,6 +290,7 @@ struct _snd_ac97 { ...@@ -280,6 +290,7 @@ struct _snd_ac97 {
unsigned short chained[3]; // 0 = C34, 1 = C79, 2 = C69 unsigned short chained[3]; // 0 = C34, 1 = C79, 2 = C69
unsigned short id[3]; // codec IDs (lower 16-bit word) unsigned short id[3]; // codec IDs (lower 16-bit word)
unsigned short pcmreg[3]; // PCM registers unsigned short pcmreg[3]; // PCM registers
unsigned short codec_cfg[3]; // CODEC_CFG bits
struct semaphore mutex; struct semaphore mutex;
} ad18xx; } ad18xx;
} spec; } spec;
...@@ -327,6 +338,6 @@ struct ac97_quirk { ...@@ -327,6 +338,6 @@ struct ac97_quirk {
int type; int type;
}; };
int snd_ac97_tune_hardware(ac97_t *ac97, struct pci_dev *pci, struct ac97_quirk *quirk); int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk);
#endif /* __SOUND_AC97_CODEC_H */ #endif /* __SOUND_AC97_CODEC_H */
...@@ -681,7 +681,7 @@ struct sndrv_timer_tread { ...@@ -681,7 +681,7 @@ struct sndrv_timer_tread {
* * * *
****************************************************************************/ ****************************************************************************/
#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 1) #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)
struct sndrv_ctl_card_info { struct sndrv_ctl_card_info {
int card; /* card number */ int card; /* card number */
...@@ -726,7 +726,8 @@ enum sndrv_ctl_elem_iface { ...@@ -726,7 +726,8 @@ enum sndrv_ctl_elem_iface {
#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8) /* control does actually nothing, but may be updated */ #define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8) /* control does actually nothing, but may be updated */
#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9) /* write lock */ #define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9) /* write lock */
#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10) /* write lock owner */ #define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10) /* write lock owner */
#define SNDRV_CTL_ELEM_ACCESS_INDIRECT (1<<31) /* indirect access */ #define SNDRV_CTL_ELEM_ACCESS_DINDIRECT (1<<30) /* indirect access for matrix dimensions in the info structure */
#define SNDRV_CTL_ELEM_ACCESS_INDIRECT (1<<31) /* indirect access for element value in the value structure */
/* for further details see the ACPI and PCI power management specification */ /* for further details see the ACPI and PCI power management specification */
#define SNDRV_CTL_POWER_D0 0x0000 /* full On */ #define SNDRV_CTL_POWER_D0 0x0000 /* full On */
...@@ -778,7 +779,11 @@ struct sndrv_ctl_elem_info { ...@@ -778,7 +779,11 @@ struct sndrv_ctl_elem_info {
} enumerated; } enumerated;
unsigned char reserved[128]; unsigned char reserved[128];
} value; } value;
unsigned char reserved[64]; union {
unsigned short d[4]; /* dimensions */
unsigned short *d_ptr; /* indirect */
} dimen;
unsigned char reserved[64-4*sizeof(unsigned short)];
}; };
struct sndrv_ctl_elem_value { struct sndrv_ctl_elem_value {
......
...@@ -49,24 +49,30 @@ typedef struct _snd_kcontrol_new { ...@@ -49,24 +49,30 @@ typedef struct _snd_kcontrol_new {
unsigned char *name; /* ASCII name of item */ unsigned char *name; /* ASCII name of item */
unsigned int index; /* index of item */ unsigned int index; /* index of item */
unsigned int access; /* access rights */ unsigned int access; /* access rights */
unsigned int count; /* count of same elements */
snd_kcontrol_info_t *info; snd_kcontrol_info_t *info;
snd_kcontrol_get_t *get; snd_kcontrol_get_t *get;
snd_kcontrol_put_t *put; snd_kcontrol_put_t *put;
unsigned long private_value; unsigned long private_value;
} snd_kcontrol_new_t; } snd_kcontrol_new_t;
typedef struct _snd_kcontrol_volatile {
snd_ctl_file_t *owner; /* locked */
pid_t owner_pid;
unsigned int access; /* access rights */
} snd_kcontrol_volatile_t;
struct _snd_kcontrol { struct _snd_kcontrol {
struct list_head list; /* list of controls */ struct list_head list; /* list of controls */
snd_ctl_elem_id_t id; snd_ctl_elem_id_t id;
snd_ctl_file_t *owner; /* locked */ unsigned int count; /* count of same elements */
pid_t owner_pid;
unsigned int access; /* access rights */
snd_kcontrol_info_t *info; snd_kcontrol_info_t *info;
snd_kcontrol_get_t *get; snd_kcontrol_get_t *get;
snd_kcontrol_put_t *put; snd_kcontrol_put_t *put;
unsigned long private_value; unsigned long private_value;
void *private_data; void *private_data;
void (*private_free)(snd_kcontrol_t *kcontrol); void (*private_free)(snd_kcontrol_t *kcontrol);
snd_kcontrol_volatile_t vd[0]; /* volatile data */
}; };
#define snd_kcontrol(n) list_entry(n, snd_kcontrol_t, list) #define snd_kcontrol(n) list_entry(n, snd_kcontrol_t, list)
...@@ -100,7 +106,7 @@ typedef int (*snd_kctl_ioctl_func_t) (snd_card_t * card, ...@@ -100,7 +106,7 @@ typedef int (*snd_kctl_ioctl_func_t) (snd_card_t * card,
void snd_ctl_notify(snd_card_t * card, unsigned int mask, snd_ctl_elem_id_t * id); void snd_ctl_notify(snd_card_t * card, unsigned int mask, snd_ctl_elem_id_t * id);
snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * kcontrol); snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * kcontrol, unsigned int access);
snd_kcontrol_t *snd_ctl_new1(snd_kcontrol_new_t * kcontrolnew, void * private_data); snd_kcontrol_t *snd_ctl_new1(snd_kcontrol_new_t * kcontrolnew, void * private_data);
void snd_ctl_free_one(snd_kcontrol_t * kcontrol); void snd_ctl_free_one(snd_kcontrol_t * kcontrol);
int snd_ctl_add(snd_card_t * card, snd_kcontrol_t * kcontrol); int snd_ctl_add(snd_card_t * card, snd_kcontrol_t * kcontrol);
...@@ -117,4 +123,33 @@ int snd_ctl_unregister(snd_card_t *card); ...@@ -117,4 +123,33 @@ int snd_ctl_unregister(snd_card_t *card);
int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn); int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn);
int snd_ctl_unregister_ioctl(snd_kctl_ioctl_func_t fcn); int snd_ctl_unregister_ioctl(snd_kctl_ioctl_func_t fcn);
static inline unsigned int snd_ctl_get_ioffnum(snd_kcontrol_t *kctl, snd_ctl_elem_id_t *id)
{
return id->numid - kctl->id.numid;
}
static inline unsigned int snd_ctl_get_ioffidx(snd_kcontrol_t *kctl, snd_ctl_elem_id_t *id)
{
return id->index - kctl->id.index;
}
static inline unsigned int snd_ctl_get_ioff(snd_kcontrol_t *kctl, snd_ctl_elem_id_t *id)
{
if (id->numid) {
return snd_ctl_get_ioffnum(kctl, id);
} else {
return snd_ctl_get_ioffidx(kctl, id);
}
}
static inline snd_ctl_elem_id_t *snd_ctl_build_ioff(snd_ctl_elem_id_t *dst_id,
snd_kcontrol_t *src_kctl,
unsigned int offset)
{
*dst_id = src_kctl->id;
dst_id->index += offset;
dst_id->numid += offset;
return dst_id;
}
#endif /* __SOUND_CONTROL_H */ #endif /* __SOUND_CONTROL_H */
...@@ -1730,6 +1730,7 @@ struct _snd_cs46xx { ...@@ -1730,6 +1730,7 @@ struct _snd_cs46xx {
void (*amplifier_ctrl)(cs46xx_t *, int); void (*amplifier_ctrl)(cs46xx_t *, int);
void (*active_ctrl)(cs46xx_t *, int); void (*active_ctrl)(cs46xx_t *, int);
void (*mixer_init)(cs46xx_t *); void (*mixer_init)(cs46xx_t *);
struct pci_dev *acpi_dev; struct pci_dev *acpi_dev;
int acpi_port; int acpi_port;
snd_kcontrol_t *eapd_switch; /* for amplifier hack */ snd_kcontrol_t *eapd_switch; /* for amplifier hack */
...@@ -1749,6 +1750,7 @@ struct _snd_cs46xx { ...@@ -1749,6 +1750,7 @@ struct _snd_cs46xx {
dsp_spos_instance_t * dsp_spos_instance; dsp_spos_instance_t * dsp_spos_instance;
snd_pcm_t *pcm_rear; snd_pcm_t *pcm_rear;
snd_pcm_t *pcm_center_lfe;
snd_pcm_t *pcm_iec958; snd_pcm_t *pcm_iec958;
#else /* for compatibility */ #else /* for compatibility */
cs46xx_pcm_t *playback_pcm; cs46xx_pcm_t *playback_pcm;
...@@ -1764,6 +1766,7 @@ int snd_cs46xx_create(snd_card_t *card, ...@@ -1764,6 +1766,7 @@ int snd_cs46xx_create(snd_card_t *card,
int snd_cs46xx_pcm(cs46xx_t *chip, int device, snd_pcm_t **rpcm); int snd_cs46xx_pcm(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_pcm_rear(cs46xx_t *chip, int device, snd_pcm_t **rpcm); int snd_cs46xx_pcm_rear(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_pcm_iec958(cs46xx_t *chip, int device, snd_pcm_t **rpcm); int snd_cs46xx_pcm_iec958(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_pcm_center_lfe(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_mixer(cs46xx_t *chip); int snd_cs46xx_mixer(cs46xx_t *chip);
int snd_cs46xx_midi(cs46xx_t *chip, int device, snd_rawmidi_t **rmidi); int snd_cs46xx_midi(cs46xx_t *chip, int device, snd_rawmidi_t **rmidi);
int snd_cs46xx_start_dsp(cs46xx_t *chip); int snd_cs46xx_start_dsp(cs46xx_t *chip);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#endif #endif
#include <linux/config.h> #include <linux/config.h>
#include <linux/version.h>
#define SNDRV_CARDS 8 /* number of supported soundcards - don't change - minor numbers */ #define SNDRV_CARDS 8 /* number of supported soundcards - don't change - minor numbers */
......
This diff is collapsed.
This diff is collapsed.
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#ifdef MODULE #ifdef MODULE
#define MODULE_GENERIC_STRING(name, string) \ #define MODULE_GENERIC_STRING(name, string) \
static const char __module_generic_string_##name [] \ static const char __module_generic_string_##name [] \
__attribute__ ((section(".modstring"))) = #name "=" string; __attribute__ ((unused, __section__(".modstring"))) = #name "=" string;
#else #else
#define MODULE_GENERIC_STRING(name, string) #define MODULE_GENERIC_STRING(name, string)
#endif #endif
......
This diff is collapsed.
...@@ -230,7 +230,8 @@ ...@@ -230,7 +230,8 @@
#define OPL3_HW_OPL3_FM801 0x0303 /* FM801 */ #define OPL3_HW_OPL3_FM801 0x0303 /* FM801 */
#define OPL3_HW_OPL3_CS4281 0x0304 /* CS4281 */ #define OPL3_HW_OPL3_CS4281 0x0304 /* CS4281 */
#define OPL3_HW_OPL3_PC98 0x0305 /* PC9800 */ #define OPL3_HW_OPL3_PC98 0x0305 /* PC9800 */
#define OPL3_HW_OPL4 0x0400 #define OPL3_HW_OPL4 0x0400 /* YMF278B/YMF295 */
#define OPL3_HW_OPL4_ML 0x0401 /* YMF704/YMF721 */
#define OPL3_HW_MASK 0xff00 #define OPL3_HW_MASK 0xff00
#define MAX_OPL2_VOICES 9 #define MAX_OPL2_VOICES 9
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment