lkml.org 
[lkml]   [2005]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/10] uml: adapt asm/futex.h to our arch
    Date
    From: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>

    Follow up to 4732efbeb997189d9f9b04708dc26bf8613ed721 - uml must just reuse
    as-is the backing architecture support. There is a micro-fixup is needed for the
    included file, which won't affect i386 behaviour at all.

    I've not tested compilation on x86_64, only on x86, but the code is almost the
    same except the culprit test, so everything should be ok on x86_64 too.

    Cc: Jakub Jelinek <jakub@redhat.com>
    Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
    ---
    include/asm-i386/futex.h | 2 +-
    include/asm-um/futex.h | 51 +++++-----------------------------------------
    2 files changed, 6 insertions(+), 47 deletions(-)
    diff --git a/include/asm-i386/futex.h b/include/asm-i386/futex.h
    --- a/include/asm-i386/futex.h
    +++ b/include/asm-i386/futex.h
    @@ -61,7 +61,7 @@ futex_atomic_op_inuser (int encoded_op,
    if (op == FUTEX_OP_SET)
    __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg);
    else {
    -#ifndef CONFIG_X86_BSWAP
    +#if !defined(CONFIG_X86_BSWAP) && !defined(CONFIG_UML)
    if (boot_cpu_data.x86 == 3)
    ret = -ENOSYS;
    else
    diff --git a/include/asm-um/futex.h b/include/asm-um/futex.h
    --- a/include/asm-um/futex.h
    +++ b/include/asm-um/futex.h
    @@ -1,53 +1,12 @@
    -#ifndef _ASM_FUTEX_H
    -#define _ASM_FUTEX_H
    -
    -#ifdef __KERNEL__
    +#ifndef __UM_FUTEX_H
    +#define __UM_FUTEX_H

    #include <linux/futex.h>
    #include <asm/errno.h>
    +#include <asm/system.h>
    +#include <asm/processor.h>
    #include <asm/uaccess.h>

    -static inline int
    -futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
    -{
    - int op = (encoded_op >> 28) & 7;
    - int cmp = (encoded_op >> 24) & 15;
    - int oparg = (encoded_op << 8) >> 20;
    - int cmparg = (encoded_op << 20) >> 20;
    - int oldval = 0, ret, tem;
    - if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
    - oparg = 1 << oparg;
    -
    - if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
    - return -EFAULT;
    -
    - inc_preempt_count();
    -
    - switch (op) {
    - case FUTEX_OP_SET:
    - case FUTEX_OP_ADD:
    - case FUTEX_OP_OR:
    - case FUTEX_OP_ANDN:
    - case FUTEX_OP_XOR:
    - default:
    - ret = -ENOSYS;
    - }
    +#include "asm/arch/futex.h"

    - dec_preempt_count();
    -
    - if (!ret) {
    - switch (cmp) {
    - case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
    - case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
    - case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
    - case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
    - case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
    - case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
    - default: ret = -ENOSYS;
    - }
    - }
    - return ret;
    -}
    -
    -#endif
    #endif
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-09-21 18:52    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean