]> rtime.felk.cvut.cz Git - arc.git/blobdiff - include/io.h
Correction to non-aligned IO read/write.
[arc.git] / include / io.h
index 764f9487f577c2a0ffa1ebb92f5c86ac3915b1ba..f0b13e5b6b0bf0b6e611128fc8d22e30ba452b64 100644 (file)
                                                                          (((uint32_t)(((uint8_t *)address)[2]))<<8) +  \\r
                                                                          ((uint32_t)(((uint8_t *)address)[3])) )\r
 \r
-#define READ16_NA(address )                    ( (((uint32_t)(((uint8_t *)address)[0]))<<8) +  \\r
-                                                                         (((uint32_t)(((uint8_t *)address)[1]))) )\r
+#define READ16_NA(address )                    ( (((uint16_t)(((uint8_t *)address)[0]))<<8) +  \\r
+                                                                         (((uint16_t)(((uint8_t *)address)[1]))) )\r
 \r
 #define WRITE32_NA(address, value ) \\r
        do { \\r
-       ((uint8_t *)address)[0] = ((value&0xff)<<24); \\r
-       ((uint8_t *)address)[1] = ((value&0xff)<<16); \\r
-       ((uint8_t *)address)[2] = ((value&0xff)<<8);  \\r
+       ((uint8_t *)address)[0] = ((value>>24)&0xff); \\r
+       ((uint8_t *)address)[1] = ((value>>16)&0xff); \\r
+       ((uint8_t *)address)[2] = ((value>>8)&0xff);  \\r
        ((uint8_t *)address)[3] = ((value&0xff)); \\r
        } while(0)\r
 \r
 #define WRITE16_NA(address, value ) \\r
        do { \\r
-       ((uint8_t *)address)[0] = ((value&0xff)<<8); \\r
+       ((uint8_t *)address)[0] = ((value>>8)&0xff); \\r
        ((uint8_t *)address)[1] = ((value&0xff)); \\r
        } while(0)\r
 \r