fix hardware byte swapping to work in little endian mode as well

SVN-Revision: 7712
This commit is contained in:
Gabor Juhos 2007-06-23 05:30:31 +00:00
parent 2e3c3918f2
commit 0b1fdf1ad8
2 changed files with 3 additions and 3 deletions

View File

@ -904,12 +904,12 @@ void __init adm5120_swab_test(void)
u32 t1,t2;
t1 = 0x1234;
t2 = swab16(t1);
t2 = __arch__swab16(t1);
printk("hardware swab16 test %s, data:0x%04X, result:0x%04X\n",
(t2 == 0x3412) ? "passed" :"failed", t1, t2);
t1 = 0x12345678;
t2 = swab32(t1);
t2 = __arch__swab32(t1);
printk("hardware swab32 test %s, data:0x%08X, result:0x%08X\n",
(t2 == 0x78563412) ? "passed" :"failed", t1, t2);

View File

@ -9,7 +9,7 @@
+static __inline__ __attribute_const__ __u16 ___adm5120__swab16(__u16 x)
+{
+ __asm__ (
+ " sw %2, 0xC8(%1) \n"
+ " sh %2, 0xCA(%1) \n"
+ " lhu %0, 0xCC(%1) \n"
+ : "=r" (x)
+ : "r" (0xB2000000), "r" (x));