forked from Imagelibrary/rtems
Added swap of unsigned16
This commit is contained in:
@@ -961,7 +961,11 @@ void _CPU_Context_restore_fp(
|
||||
*/
|
||||
|
||||
#define CPU_swap_u32( value ) \
|
||||
((value&0xff) << 24) | (((value >> 8)&0xff) << 16) | (((value >> 16)&0xff) << 8) | ((value>>24)&0xff)
|
||||
((value&0xff) << 24) | (((value >> 8)&0xff) << 16) | \
|
||||
(((value >> 16)&0xff) << 8) | ((value>>24)&0xff)
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -599,6 +599,9 @@ CPU_swap_u32(unsigned32 value)
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
#endif /* ! ASM */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -165,10 +165,26 @@ static inline unsigned int i386_swap_U32(
|
||||
unsigned int value
|
||||
)
|
||||
{
|
||||
unsigned long lout;
|
||||
|
||||
asm volatile( "rorw $8,%%ax;"
|
||||
"rorl $16,%0;"
|
||||
"rorw $8,%%ax" : "=a" (value) : "0" (value) );
|
||||
return( value );
|
||||
"rorw $8,%%ax" : "=a" (lout) : "0" (value) );
|
||||
/* this should be better for i486dx and above */
|
||||
/*
|
||||
__asm__ volatile( "bswap %0" : "=r" (lout) : "0" (lin));
|
||||
*/
|
||||
return( lout );
|
||||
}
|
||||
|
||||
static inline unsigned int i386_swap_U16(
|
||||
unsigned int value
|
||||
)
|
||||
{
|
||||
unsigned short sout;
|
||||
|
||||
__asm__ volatile( "rorw $8,%0" : "=r" (sout) : "0" (value));
|
||||
return (sout);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -439,6 +455,7 @@ void i386_Install_idt(
|
||||
#define get_gs() i386_get_gs()
|
||||
|
||||
#define CPU_swap_u32( _value ) i386_swap_U32( _value )
|
||||
#define CPU_swap_u16( _value ) i386_swap_U16( _value )
|
||||
|
||||
/* i80x86 I/O instructions */
|
||||
|
||||
|
||||
@@ -255,6 +255,9 @@ static inline unsigned int CPU_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -243,6 +243,17 @@ static inline unsigned int m68k_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
static inline unsigned int m68k_swap_u16(
|
||||
unsigned int value
|
||||
)
|
||||
{
|
||||
unsigned short swapped = value;
|
||||
|
||||
asm volatile( "rorw #8,%0" : "=d" (swapped) : "0" (swapped) );
|
||||
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
/* XXX this is only valid for some m68k family members and should be fixed */
|
||||
|
||||
#define m68k_enable_caching() \
|
||||
@@ -252,6 +263,7 @@ static inline unsigned int m68k_swap_u32(
|
||||
}
|
||||
|
||||
#define CPU_swap_u32( value ) m68k_swap_u32( value )
|
||||
#define CPU_swap_u16( value ) m68k_swap_u16( value )
|
||||
|
||||
#endif /* !ASM */
|
||||
|
||||
|
||||
@@ -941,6 +941,9 @@ static inline unsigned int CPU_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
/*
|
||||
* Miscellaneous prototypes
|
||||
*
|
||||
|
||||
@@ -859,6 +859,9 @@ static inline unsigned int CPU_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1091,6 +1091,9 @@ static inline unsigned int CPU_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -134,7 +134,19 @@ static inline unsigned int sh_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
static inline unsigned int sh_swap_u32(
|
||||
unsigned int value
|
||||
)
|
||||
{
|
||||
register unsigned int swapped ;
|
||||
|
||||
asm volatile ( "swap.b %1,%0 : "=r" (swapped) : "r" (value) );
|
||||
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u32( value ) sh_swap_u32( value )
|
||||
#define CPU_swap_u16( value ) sh_swap_u16( value )
|
||||
|
||||
/*
|
||||
* Simple spin delay in microsecond units for device drivers.
|
||||
|
||||
@@ -994,6 +994,9 @@ static inline unsigned int CPU_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
#endif ASM
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -991,6 +991,9 @@ static inline unsigned int CPU_swap_u32(
|
||||
return( swapped );
|
||||
}
|
||||
|
||||
#define CPU_swap_u16( value ) \
|
||||
(((value&0xff) << 8) | ((value >> 8)&0xff))
|
||||
|
||||
/*
|
||||
* Special Purpose Routines to hide the use of UNIX system calls.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user