15 Aug, 2010

1 commit


26 May, 2010

1 commit

  • This reverts commit b3b77c8caef1750ebeea1054e39e358550ea9f55, which was
    also totally broken (see commit 0d2daf5cc858 that reverted the crc32
    version of it). As reported by Stephen Rothwell, it causes problems on
    big-endian machines:

    > In file included from fs/jfs/jfs_types.h:33,
    > from fs/jfs/jfs_incore.h:26,
    > from fs/jfs/file.c:22:
    > fs/jfs/endian24.h:36:101: warning: "__LITTLE_ENDIAN" is not defined

    The kernel has never had that crazy "__BYTE_ORDER == __LITTLE_ENDIAN"
    model. It's not how we do things, and it isn't how we _should_ do
    things. So don't go there.

    Requested-by: Stephen Rothwell
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

25 May, 2010

1 commit

  • Linux does not define __BYTE_ORDER in its endian header files which makes
    some header files bend backwards to get at the current endian. Lets
    #define __BYTE_ORDER in big_endian.h/litte_endian.h to make it easier for
    header files that are used in user space too.

    In userspace the convention is that

    1. _both_ __LITTLE_ENDIAN and __BIG_ENDIAN are defined,
    2. you have to test for e.g. __BYTE_ORDER == __BIG_ENDIAN.

    Signed-off-by: Joakim Tjernlund
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joakim Tjernlund
     

07 Jan, 2009

1 commit

  • The first step to make swab.h a regular header that will
    include an asm/swab.h with arch overrides.

    Avoid the gratuitous differences introduced in the new
    linux/swab.h by naming the ___constant_swabXX bits and
    __fswabXX bits exactly as found in the old implementation
    in byteorder/swab[b].h

    Use this new swab.h in byteorder/[big|little]_endian.h and
    remove the two old swab headers.

    Although the inclusion of asm/byteorder.h looks strange in
    linux/swab.h, this will allow each arch to move the actual
    arch overrides for the swab bits in an asm file and then
    the includes can be cleaned up without requiring a flag day
    for all arches at once.

    Keep providing __fswabXX in case some userspace was using them
    directly, but the revised __swabXX should be used instead in
    any new code and will always do constant folding not dependent
    on the optimization level, which means the __constant versions
    can be phased out in-kernel.

    Arches that use the old-style arch macros will lose their
    optimized versions until they move to the new style, but at
    least they will still compile. Many arches have already moved
    and the patches to move the remaining arches are trivial.

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     

20 Oct, 2008

1 commit

  • This is needed during the transition to the new byteorder headers as the
    swabb.h functionality will be provided from asm/byteorder.h in the new
    version. To avoid breakage on arches still using the old implementation,
    provide swabb.h from asm/byteorder.h as well.

    Signed-off-by: Harvey Harrison
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     

26 Jul, 2008

1 commit

  • Changeset 7fa897b91a3ea0f16c2873b869d7a0eef05acff4 ("ide: trivial sparse
    annotations") created an IDE bootup regression on big-endian systems.

    In drivers/ide/ide-iops.c, function ide_fixstring() we now have the
    loop:

    for (p = end ; p != s;)
    be16_to_cpus((u16 *)(p -= 2));

    which will never terminate on big-endian because in such
    a configuration be16_to_cpus() evaluates to "do { } while (0)"

    Therefore, always evaluate the arguments to nop endian transformation
    operations.

    Signed-off-by: David S. Miller
    Signed-off-by: Linus Torvalds

    David Miller
     

30 Apr, 2008

1 commit

  • Fix up the contents of so that it doesn't export a
    content-free generic.h to user space. This involves:

    * Removing the __KERNEL__ tests from generic.h and dropping it from
    Kbuild.
    * Wrapping the inclusions of generic.h in both big_endian.h and
    little_endian.h in __KERNEL__ tests.
    * Shifting big_endian.h and little_endian.h from header-y to
    unifdef-y in Kbuild.

    Signed-off-by: Robert P. J. Day
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert P. J. Day
     

09 Feb, 2008

1 commit

  • This patchset moves le*_add_cpu and be*_add_cpu functions from OCFS2 to core
    header (1st), converts ext3 filesystem to this API (2nd) and replaces XFS
    different named functions with new ones (3rd).

    There are many places where these functions will be useful. Just look at:
    grep -r 'cpu_to_[ble12346]*([ble12346]*_to_cpu.*[-+]' linux-src/ Patch for
    ext3 is an example how conversions will probably look like.

    This patch:

    - move inline functions which add native byte order variable to
    little/big endian variable to core header
    * le16_add_cpu(__le16 *var, u16 val)
    * le32_add_cpu(__le32 *var, u32 val)
    * le64_add_cpu(__le64 *var, u64 val)
    * be32_add_cpu(__be32 *var, u32 val)
    - add for completeness:
    * be16_add_cpu(__be16 *var, u16 val)
    * be64_add_cpu(__be64 *var, u64 val)

    Signed-off-by: Marcin Slusarz
    Acked-by: Mark Fasheh
    Cc: David Chinner
    Cc: Timothy Shimmin
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marcin Slusarz
     

09 May, 2007

2 commits

  • It is sometimes useful to compile individual drivers with optimization
    disabled for easier debugging. Currently drivers which use htonl() and
    similar functions don't compile with -O0. This patch fixes it. It also
    removes obsolete and misleading comments. This header is not for
    userspace, so we don't have to care about strange programs these comments
    mention.

    (akpm: -O0 probably isn't a good idea, but this code looks pretty crufty and
    unuseful)

    Signed-off-by: Michal Schmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Schmidt
     
  • Constant folding does not work for the swabXX() byte swapping functions,
    and the C versions optimize poorly.

    Attempting to initialize a global variable to swab16(0x1234) or put
    something like "case swab32(42):" in a switch statement will not compile.
    It can work, swab.h just isn't doing it correctly. This patch fixes that.

    Contrary to the comment in asm-i386/byteorder.h, gcc does not recognize the
    "C" version of swab16 and turn it into efficient code. gcc can do this,
    just not with the current code. The simple function:

    u16 foo(u16 x) { return swab16(x); }

    Would compile to:
    movzwl %ax, %eax
    movl %eax, %edx
    shrl $8, %eax
    sall $8, %edx
    orl %eax, %edx

    With this patch, it will compile to:
    rolw $8, %ax

    I also attempted to document the maze different macros/inline functions
    that are used to create the final product.

    Signed-off-by: Trent Piepho
    Cc: Francois-Rene Rideau
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Trent Piepho
     

12 Feb, 2007

2 commits


19 Sep, 2006

1 commit


18 Jun, 2006

1 commit


09 Jan, 2006

1 commit

  • Remove various things which were checking for gcc-1.x and gcc-2.x compilers.

    From: Adrian Bunk

    Some documentation updates and removes some code paths for gcc < 3.2.

    Acked-by: Russell King
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     

20 Sep, 2005

1 commit


29 Jun, 2005

1 commit

  • In file included from drivers/media/dvb/ttpci/av7110_hw.c:38:
    include/linux/byteorder/swabb.h:96: warning: type qualifiers ignored on function return type
    include/linux/byteorder/swabb.h:110: warning: type qualifiers ignored on function return type
    In file included from drivers/media/dvb/ttpci/av7110_v4l.c:36:
    include/linux/byteorder/swabb.h:96: warning: type qualifiers ignored on function return type
    include/linux/byteorder/swabb.h:110: warning: type qualifiers ignored on function return type
    In file included from drivers/media/dvb/ttpci/av7110_av.c:37:
    include/linux/byteorder/swabb.h:96: warning: type qualifiers ignored on function return type
    include/linux/byteorder/swabb.h:110: warning: type qualifiers ignored on function return type
    drivers/isdn/icn/icn.c:719:4: warning: #warning TODO test headroom or use skb->nb to flag ACK
    In file included from drivers/media/dvb/ttpci/av7110_ca.c:39:
    include/linux/byteorder/swabb.h:96: warning: type qualifiers ignored on function return type
    include/linux/byteorder/swabb.h:110: warning: type qualifiers ignored on function return type
    In file included from drivers/media/dvb/ttpci/av7110.c:41:
    include/linux/byteorder/swabb.h:96: warning: type qualifiers ignored on function return type
    include/linux/byteorder/swabb.h:110: warning: type qualifiers ignored on function return type

    Does declaring a function to return a const value actually mean something to
    gcc?

    Dunno. Kill it and replace sone `__inline__'s with `inline' too.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds