include/EtherCAT_si.h
changeset 77 677967864795
parent 74 9bf603942791
--- a/include/EtherCAT_si.h	Thu Feb 23 14:51:45 2006 +0000
+++ b/include/EtherCAT_si.h	Fri Feb 24 10:19:26 2006 +0000
@@ -8,6 +8,8 @@
  *
  *****************************************************************************/
 
+#include <asm/byteorder.h>
+
 /*****************************************************************************/
 
 // Bitwise read/write macros
@@ -24,31 +26,14 @@
 
 // Read macros
 
-#define EC_READ_U8(PD) \
-    (*((uint8_t *) (PD)))
+#define EC_READ_U8(PD) ((uint8_t) *((uint8_t *) (PD)))
+#define EC_READ_S8(PD) ((int8_t)  *((uint8_t *) (PD)))
 
-#define EC_READ_S8(PD) \
-    ((int8_t) *((uint8_t *) (PD)))
+#define EC_READ_U16(PD) ((uint16_t) le16_to_cpup((void *) (PD)))
+#define EC_READ_S16(PD) ((int16_t)  le16_to_cpup((void *) (PD)))
 
-#define EC_READ_U16(PD) \
-    ((uint16_t) (*((uint8_t *) (PD) + 0) << 0 | \
-                 *((uint8_t *) (PD) + 1) << 8))
-
-#define EC_READ_S16(PD) \
-    ((int16_t) (*((uint8_t *) (PD) + 0) << 0 | \
-                *((uint8_t *) (PD) + 1) << 8))
-
-#define EC_READ_U32(PD) \
-    ((uint32_t) (*((uint8_t *) (PD) + 0) <<  0 | \
-                 *((uint8_t *) (PD) + 1) <<  8 | \
-                 *((uint8_t *) (PD) + 2) << 16 | \
-                 *((uint8_t *) (PD) + 3) << 24))
-
-#define EC_READ_S32(PD) \
-    ((int32_t) (*((uint8_t *) (PD) + 0) <<  0 | \
-                *((uint8_t *) (PD) + 1) <<  8 | \
-                *((uint8_t *) (PD) + 2) << 16 | \
-                *((uint8_t *) (PD) + 3) << 24))
+#define EC_READ_U32(PD) ((uint32_t) le32_to_cpup((void *) (PD)))
+#define EC_READ_S32(PD) ((int32_t)  le32_to_cpup((void *) (PD)))
 
 /*****************************************************************************/
 
@@ -63,18 +48,16 @@
 
 #define EC_WRITE_U16(PD, VAL) \
     do { \
-        *((uint8_t *) (PD) + 0) = ((uint16_t) (VAL) >> 0) & 0xFF; \
-        *((uint8_t *) (PD) + 1) = ((uint16_t) (VAL) >> 8) & 0xFF; \
+        *((uint16_t *) (PD)) = (uint16_t) (VAL); \
+        cpu_to_le16s(PD); \
     } while (0)
 
 #define EC_WRITE_S16(PD, VAL) EC_WRITE_U16(PD, VAL)
 
 #define EC_WRITE_U32(PD, VAL) \
     do { \
-        *((uint8_t *) (PD) + 0) = ((uint32_t) (VAL) >>  0) & 0xFF; \
-        *((uint8_t *) (PD) + 1) = ((uint32_t) (VAL) >>  8) & 0xFF; \
-        *((uint8_t *) (PD) + 2) = ((uint32_t) (VAL) >> 16) & 0xFF; \
-        *((uint8_t *) (PD) + 3) = ((uint32_t) (VAL) >> 24) & 0xFF; \
+        *((uint32_t *) (PD)) = (uint32_t) (VAL); \
+        cpu_to_le16s(PD); \
     } while (0)
 
 #define EC_WRITE_S32(PD, VAL) EC_WRITE_U32(PD, VAL)