diff -r 9dc136e3801c -r 677967864795 include/EtherCAT_si.h --- 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 + /*****************************************************************************/ // 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)