~ubuntu-branches/ubuntu/maverick/u-boot-omap3/maverick

« back to all changes in this revision

Viewing changes to include/asm-i386/byteorder.h

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2010-03-22 15:06:23 UTC
  • Revision ID: james.westby@ubuntu.com-20100322150623-i21g8rgiyl5dohag
Tags: upstream-2010.3git20100315
ImportĀ upstreamĀ versionĀ 2010.3git20100315

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _I386_BYTEORDER_H
 
2
#define _I386_BYTEORDER_H
 
3
 
 
4
#include <asm/types.h>
 
5
 
 
6
#ifdef __GNUC__
 
7
 
 
8
 
 
9
static __inline__ __u32 ___arch__swab32(__u32 x)
 
10
{
 
11
#ifdef CONFIG_X86_BSWAP
 
12
        __asm__("bswap %0" : "=r" (x) : "0" (x));
 
13
#else
 
14
        __asm__("xchgb %b0,%h0\n\t"     /* swap lower bytes     */
 
15
                "rorl $16,%0\n\t"       /* swap words           */
 
16
                "xchgb %b0,%h0"         /* swap higher bytes    */
 
17
                :"=q" (x)
 
18
                : "0" (x));
 
19
#endif
 
20
        return x;
 
21
}
 
22
 
 
23
static __inline__ __u16 ___arch__swab16(__u16 x)
 
24
{
 
25
        __asm__("xchgb %b0,%h0"         /* swap bytes           */ \
 
26
                : "=q" (x) \
 
27
                :  "0" (x)); \
 
28
                return x;
 
29
}
 
30
 
 
31
#define __arch__swab32(x) ___arch__swab32(x)
 
32
#define __arch__swab16(x) ___arch__swab16(x)
 
33
 
 
34
#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
 
35
#  define __BYTEORDER_HAS_U64__
 
36
#  define __SWAB_64_THRU_32__
 
37
#endif
 
38
 
 
39
#endif /* __GNUC__ */
 
40
 
 
41
#include <linux/byteorder/little_endian.h>
 
42
 
 
43
#endif /* _I386_BYTEORDER_H */