lkml.org 
[lkml]   [2007]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[x86 setup 15/33] Simple bitops for the new x86 setup code.
    Date
    From: H. Peter Anvin <hpa@zytor.com>

    A simple collection of bitops for the new x86 setup code.

    Signed-off-by: H. Peter Anvin <hpa@zytor.com>
    ---
    arch/i386/boot/bitops.h | 45 +++++++++++++++++++++++++++++++++++++++++++++
    1 files changed, 45 insertions(+), 0 deletions(-)
    create mode 100644 arch/i386/boot/bitops.h

    diff --git a/arch/i386/boot/bitops.h b/arch/i386/boot/bitops.h
    new file mode 100644
    index 0000000..8dcc8dc
    --- /dev/null
    +++ b/arch/i386/boot/bitops.h
    @@ -0,0 +1,45 @@
    +/* -*- linux-c -*- ------------------------------------------------------- *
    + *
    + * Copyright (C) 1991, 1992 Linus Torvalds
    + * Copyright 2007 rPath, Inc. - All Rights Reserved
    + *
    + * This file is part of the Linux kernel, and is made available under
    + * the terms of the GNU General Public License version 2.
    + *
    + * ----------------------------------------------------------------------- */
    +
    +/*
    + * arch/i386/boot/bitops.h
    + *
    + * Very simple bitops for the boot code.
    + */
    +
    +#ifndef BOOT_BITOPS_H
    +#define BOOT_BITOPS_H
    +#define _LINUX_BITOPS_H /* Inhibit inclusion of <linux/bitops.h> */
    +
    +static inline int constant_test_bit(int nr, const void *addr)
    +{
    + const u32 *p = (const u32 *)addr;
    + return ((1UL << (nr & 31)) & (p[nr >> 5])) != 0;
    +}
    +static inline int variable_test_bit(int nr, const void *addr)
    +{
    + u8 v;
    + const u32 *p = (const u32 *)addr;
    +
    + asm("btl %2,%1; setc %0" : "=qm" (v) : "m" (*p), "Ir" (nr));
    + return v;
    +}
    +
    +#define test_bit(nr,addr) \
    +(__builtin_constant_p(nr) ? \
    + constant_test_bit((nr),(addr)) : \
    + variable_test_bit((nr),(addr)))
    +
    +static inline void set_bit(int nr, void *addr)
    +{
    + asm("btsl %1,%0" : "+m" (*(u32 *)addr) : "Ir" (nr));
    +}
    +
    +#endif /* BOOT_BITOPS_H */
    --
    1.5.2.2
    -
    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: 2007-07-10 05:27    [W:0.022 / U:120.600 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site