compat.c (e9331ee9b164d58b4dd0abc882ba7e23d2f404b3) compat.c (f454322efbf6faee695f517c6b52c4dc03cacd3e)
1/*
2 * linux/kernel/compat.c
3 *
4 * Kernel compatibililty routines for e.g. 32 bit syscall support
5 * on 64 bit kernels.
6 *
7 * Copyright (C) 2002-2003 Stephen Rothwell, IBM Corporation
8 *

--- 483 unchanged lines hidden (view full) ---

492 case 4: set->sig[3] = compat->sig[6] | (((long)compat->sig[7]) << 32 );
493 case 3: set->sig[2] = compat->sig[4] | (((long)compat->sig[5]) << 32 );
494 case 2: set->sig[1] = compat->sig[2] | (((long)compat->sig[3]) << 32 );
495 case 1: set->sig[0] = compat->sig[0] | (((long)compat->sig[1]) << 32 );
496 }
497}
498EXPORT_SYMBOL_GPL(sigset_from_compat);
499
1/*
2 * linux/kernel/compat.c
3 *
4 * Kernel compatibililty routines for e.g. 32 bit syscall support
5 * on 64 bit kernels.
6 *
7 * Copyright (C) 2002-2003 Stephen Rothwell, IBM Corporation
8 *

--- 483 unchanged lines hidden (view full) ---

492 case 4: set->sig[3] = compat->sig[6] | (((long)compat->sig[7]) << 32 );
493 case 3: set->sig[2] = compat->sig[4] | (((long)compat->sig[5]) << 32 );
494 case 2: set->sig[1] = compat->sig[2] | (((long)compat->sig[3]) << 32 );
495 case 1: set->sig[0] = compat->sig[0] | (((long)compat->sig[1]) << 32 );
496 }
497}
498EXPORT_SYMBOL_GPL(sigset_from_compat);
499
500void
501sigset_to_compat(compat_sigset_t *compat, const sigset_t *set)
500int
501put_compat_sigset(compat_sigset_t __user *compat, const sigset_t *set,
502 unsigned int size)
502{
503{
504 /* size <= sizeof(compat_sigset_t) <= sizeof(sigset_t) */
505#ifdef __BIG_ENDIAN
506 compat_sigset_t v;
503 switch (_NSIG_WORDS) {
507 switch (_NSIG_WORDS) {
504 case 4: compat->sig[7] = (set->sig[3] >> 32); compat->sig[6] = set->sig[3];
505 case 3: compat->sig[5] = (set->sig[2] >> 32); compat->sig[4] = set->sig[2];
506 case 2: compat->sig[3] = (set->sig[1] >> 32); compat->sig[2] = set->sig[1];
507 case 1: compat->sig[1] = (set->sig[0] >> 32); compat->sig[0] = set->sig[0];
508 case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
509 case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
510 case 2: v.sig[3] = (set->sig[1] >> 32); v.sig[2] = set->sig[1];
511 case 1: v.sig[1] = (set->sig[0] >> 32); v.sig[0] = set->sig[0];
508 }
512 }
513 return copy_to_user(compat, &v, size) ? -EFAULT : 0;
514#else
515 return copy_to_user(compat, set, size) ? -EFAULT : 0;
516#endif
509}
510
511#ifdef CONFIG_NUMA
512COMPAT_SYSCALL_DEFINE6(move_pages, pid_t, pid, compat_ulong_t, nr_pages,
513 compat_uptr_t __user *, pages32,
514 const int __user *, nodes,
515 int __user *, status,
516 int, flags)

--- 85 unchanged lines hidden ---
517}
518
519#ifdef CONFIG_NUMA
520COMPAT_SYSCALL_DEFINE6(move_pages, pid_t, pid, compat_ulong_t, nr_pages,
521 compat_uptr_t __user *, pages32,
522 const int __user *, nodes,
523 int __user *, status,
524 int, flags)

--- 85 unchanged lines hidden ---