@ -10,21 +10,28 @@
# include <asm/types.h>
# ifdef __GNUC__
# define __sw16(x) \
( ( __u16 ) ( \
( ( ( __u16 ) ( x ) & ( __u16 ) 0x00ffU ) < < 8 ) | \
( ( ( __u16 ) ( x ) & ( __u16 ) 0xff00U ) > > 8 ) ) )
# define __sw32(x) \
( ( __u32 ) ( \
( ( ( __u32 ) ( x ) ) < < 24 ) | \
( ( ( __u32 ) ( x ) & ( __u32 ) 0x0000ff00UL ) < < 8 ) | \
( ( ( __u32 ) ( x ) & ( __u32 ) 0x00ff0000UL ) > > 8 ) | \
( ( ( __u32 ) ( x ) ) > > 24 ) ) )
static inline __u32 __sw32 ( __u32 x )
{
__u32 v = x ;
return v < < 24 |
( v & ( __u32 ) 0x0000ff00UL ) < < 8 |
( v & ( __u32 ) 0x00ff0000UL ) > > 8 |
v > > 24 ;
}
static inline __u16 __sw16 ( __u16 x )
{
__u16 v = x ;
return ( v & ( __u16 ) 0x00ffU ) < < 8 |
( v & ( __u16 ) 0xff00U ) > > 8 ;
}
static __inline__ unsigned ld_le16 ( const volatile unsigned short * addr )
{
unsigned result = * addr ;
return __sw16 ( result ) ;
return __sw16 ( * addr ) ;
}
static __inline__ void st_le16 ( volatile unsigned short * addr ,
@ -35,8 +42,7 @@ static __inline__ void st_le16(volatile unsigned short *addr,
static __inline__ unsigned ld_le32 ( const volatile unsigned * addr )
{
unsigned result = * addr ;
return __sw32 ( result ) ;
return __sw32 ( * addr ) ;
}
static __inline__ void st_le32 ( volatile unsigned * addr , const unsigned val )