Fix support for big-endian systems
authorproski <proski@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Fri, 2 Nov 2007 02:05:22 +0000 (02:05 +0000)
committerproski <proski@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Fri, 2 Nov 2007 02:05:22 +0000 (02:05 +0000)
git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@2818 0192ed92-7a03-0410-a25b-9323aeb14dbd

tools/ath_info.c

index be1643f48eca677b93abd45b75dcd21a793e1471..3999bea3d715f02689f23634141d50a67136668f 100644 (file)
@@ -96,6 +96,8 @@
 #include <string.h>
 #include <fcntl.h>
 #include <sys/mman.h>
+#include <endian.h>
+#include <byteswap.h>
 
 #define dbg(fmt, __args__...) \
 do { \
@@ -331,16 +333,20 @@ static const struct ath5k_srev_name ath5k_srev_names[] = {
        (((_val) & (_flags)) >> _flags##_S)
 
 /*
- * Read from a device register
+ * Access device registers
  */
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define AR5K_REG_READ(_reg)            \
+       __bswap_32(*((volatile u_int32_t *)(mem + (_reg))))
+#define AR5K_REG_WRITE(_reg, _val)     \
+       (*((volatile u_int32_t *)(mem + (_reg))) = __bswap_32(_val))
+#else
 #define AR5K_REG_READ(_reg)            \
        (*((volatile u_int32_t *)(mem + (_reg))))
-
-/*
- * Write to a device register
- */
 #define AR5K_REG_WRITE(_reg, _val)     \
        (*((volatile u_int32_t *)(mem + (_reg))) = (_val))
+#endif
+
 
 #define AR5K_REG_ENABLE_BITS(_reg, _flags)     \
        AR5K_REG_WRITE(_reg, AR5K_REG_READ(_reg) | (_flags))