| Index: emcore/trunk/target/ipodnano2g/hwkeyaes.c | 
| — | — | @@ -58,12 +58,11 @@ | 
| 59 | 59 | AESOUTADDR = (void*)((uint32_t)data + (ptr << 2)); | 
| 60 | 60 | AESINADDR = (void*)((uint32_t)data + (ptr << 2)); | 
| 61 | 61 | AESAUXADDR = (void*)((uint32_t)data + (ptr << 2)); | 
| 62 |  | -	    clean_dcache();
 | 
|  | 62 | +	    invalidate_dcache(); | 
| 63 | 63 | AESSTATUS = 6; | 
| 64 | 64 | AESGO = go; | 
| 65 | 65 | go = 3; | 
| 66 | 66 | while ((AESSTATUS & 6) == 0); | 
| 67 |  | -	    invalidate_dcache();
 | 
| 68 | 67 | if (direction == HWKEYAES_DECRYPT) | 
| 69 | 68 | { | 
| 70 | 69 | if (!ptr) break; | 
| Index: emcore/trunk/target/ipodnano2g/nand.c | 
| — | — | @@ -226,7 +226,8 @@ | 
| 227 | 227 | DMACOM3 = DMACOM_CLEARBOTHDONE; | 
| 228 | 228 | DMABASE3 = buffer; | 
| 229 | 229 | DMATCNT3 = (size >> 4) - 1; | 
| 230 |  | -    clean_dcache();
 | 
|  | 230 | +    if (direction) clean_dcache(); | 
|  | 231 | +    else invalidate_dcache(); | 
| 231 | 232 | DMACOM3 = 4; | 
| 232 | 233 | } | 
| 233 | 234 |  | 
| — | — | @@ -235,7 +236,6 @@ | 
| 236 | 237 | uint32_t timeout = USEC_TIMER + 20000; | 
| 237 | 238 | while (DMAALLST & DMAALLST_DMABUSY3) | 
| 238 | 239 | if (nand_timeout(timeout)) return 1; | 
| 239 |  | -    if (!direction) invalidate_dcache();
 | 
| 240 | 240 | if (nand_wait_addrdone()) return 1; | 
| 241 | 241 | if (!direction) FMCTRL1 = FMCTRL1_CLEARRFIFO | FMCTRL1_CLEARWFIFO; | 
| 242 | 242 | else FMCTRL1 = FMCTRL1_CLEARRFIFO; | 
| — | — | @@ -259,7 +259,7 @@ | 
| 260 | 260 | ECC_UNK1 = size; | 
| 261 | 261 | ECC_DATA_PTR = databuffer; | 
| 262 | 262 | ECC_SPARE_PTR = sparebuffer; | 
| 263 |  | -    clean_dcache();
 | 
|  | 263 | +    invalidate_dcache(); | 
| 264 | 264 | ECC_CTRL = type; | 
| 265 | 265 | } | 
| 266 | 266 |  | 
| — | — | @@ -268,7 +268,6 @@ | 
| 269 | 269 | uint32_t timeout = USEC_TIMER + 20000; | 
| 270 | 270 | while (!(SRCPND & (1 << IRQ_ECC))) | 
| 271 | 271 | if (nand_timeout(timeout)) return ecc_unlock(1); | 
| 272 |  | -    invalidate_dcache();
 | 
| 273 | 272 | ECC_INT_CLR = 1; | 
| 274 | 273 | SRCPND = (1 << IRQ_ECC); | 
| 275 | 274 | return ecc_unlock(ECC_RESULT); | 
| Index: emcore/trunk/target/ipodnano3g/hwkeyaes.c | 
| — | — | @@ -51,9 +51,8 @@ | 
| 52 | 52 | AESAUXSIZE = size; | 
| 53 | 53 | AESAUXADDR = data; | 
| 54 | 54 | AESSIZE3 = size; | 
| 55 |  | -	clean_dcache();
 | 
|  | 55 | +	invalidate_dcache(); | 
| 56 | 56 | AESGO = 1; | 
| 57 |  | -	invalidate_dcache();
 | 
| 58 | 57 | while (!(AESSTATUS & 0xf)) sleep(MIN(10000, size >> 4)); | 
| 59 | 58 | clockgate_enable(10, false); | 
| 60 | 59 | mutex_unlock(&hwkeyaes_mutex); | 
| Index: emcore/trunk/target/ipodnano3g/spi.c | 
| — | — | @@ -94,11 +94,10 @@ | 
| 95 | 95 | nextlli = lli; | 
| 96 | 96 | lli = &lli[-1]; | 
| 97 | 97 | } | 
| 98 |  | -    clean_dcache();
 | 
|  | 98 | +    invalidate_dcache(); | 
| 99 | 99 | DMAC0CCONFIG(port + 5) = 0x9001 | (SPIDMA(port) << 1); | 
| 100 | 100 | wakeup_wait(&spiwakeup[port], TIMEOUT_BLOCK); | 
| 101 | 101 | clockgate_dma(0, port + 5, false); | 
| 102 |  | -    invalidate_dcache();
 | 
| 103 | 102 | SPISETUP(port) &= ~0x41; | 
| 104 | 103 | } | 
| 105 | 104 |  | 
| Index: emcore/trunk/target/ipodclassic/storage_ata.c | 
| — | — | @@ -41,7 +41,7 @@ | 
| 42 | 42 |  | 
| 43 | 43 | /** static, private data **/ | 
| 44 | 44 | static uint8_t ceata_taskfile[16] __attribute__((aligned(16))); | 
| 45 |  | -uint16_t ata_identify_data[0x100];
 | 
|  | 45 | +uint16_t ata_identify_data[0x100] __attribute__((aligned(16))); | 
| 46 | 46 | bool ceata; | 
| 47 | 47 | bool ata_lba48; | 
| 48 | 48 | bool ata_dma; | 
| — | — | @@ -343,6 +343,7 @@ | 
| 344 | 344 | SDCI_DMACOUNT = 1; | 
| 345 | 345 | SDCI_DMAADDR = dest; | 
| 346 | 346 | SDCI_DCTRL = SDCI_DCTRL_TXFIFORST | SDCI_DCTRL_RXFIFORST; | 
|  | 347 | +    invalidate_dcache(); | 
| 347 | 348 | PASS_RC(mmc_send_command(SDCI_CMD_CMD_NUM(MMC_CMD_CEATA_RW_MULTIPLE_REG) | 
| 348 | 349 | | SDCI_CMD_CMD_TYPE_ADTC | SDCI_CMD_RES_TYPE_R1 | 
| 349 | 350 | | SDCI_CMD_RES_SIZE_48 | SDCI_CMD_NCR_NID_NCR, | 
| — | — | @@ -352,7 +353,6 @@ | 
| 353 | 354 | NULL, CEATA_COMMAND_TIMEOUT), 2, 1); | 
| 354 | 355 | long startusec = USEC_TIMER; | 
| 355 | 356 | if (wakeup_wait(&mmc_wakeup, CEATA_COMMAND_TIMEOUT) == THREAD_TIMEOUT) RET_ERR(2); | 
| 356 |  | -    invalidate_dcache();
 | 
| 357 | 357 | PASS_RC(mmc_dsta_check_data_success(), 2, 3); | 
| 358 | 358 | return 0; | 
| 359 | 359 | } | 
| — | — | @@ -472,7 +472,6 @@ | 
| 473 | 473 | uint32_t direction; | 
| 474 | 474 | if (write) | 
| 475 | 475 | { | 
| 476 |  | -        clean_dcache();
 | 
| 477 | 476 | cmdtype = SDCI_CMD_CMD_TYPE_ADTC | SDCI_CMD_CMD_RD_WR; | 
| 478 | 477 | responsetype = SDCI_CMD_RES_TYPE_R1 | SDCI_CMD_RES_BUSY; | 
| 479 | 478 | direction = MMC_CMD_CEATA_RW_MULTIPLE_BLOCK_DIRECTION_WRITE; | 
| — | — | @@ -487,6 +486,7 @@ | 
| 488 | 487 | SDCI_DMAADDR = buf; | 
| 489 | 488 | SDCI_DMACOUNT = count; | 
| 490 | 489 | SDCI_DCTRL = SDCI_DCTRL_TXFIFORST | SDCI_DCTRL_RXFIFORST; | 
|  | 490 | +    invalidate_dcache(); | 
| 491 | 491 | PASS_RC(mmc_send_command(SDCI_CMD_CMD_NUM(MMC_CMD_CEATA_RW_MULTIPLE_BLOCK) | 
| 492 | 492 | | SDCI_CMD_CMD_TYPE_ADTC | cmdtype | responsetype | 
| 493 | 493 | | SDCI_CMD_RES_SIZE_48 | SDCI_CMD_NCR_NID_NCR, | 
| — | — | @@ -498,7 +498,6 @@ | 
| 499 | 499 | PASS_RC(ceata_cancel_command(), 4, 1); | 
| 500 | 500 | RET_ERR(2); | 
| 501 | 501 | } | 
| 502 |  | -    if (!write) invalidate_dcache();
 | 
| 503 | 502 | PASS_RC(mmc_dsta_check_data_success(), 4, 3); | 
| 504 | 503 | if (wakeup_wait(&mmc_comp_wakeup, timeout) == THREAD_TIMEOUT) | 
| 505 | 504 | { | 
| — | — | @@ -519,11 +518,6 @@ | 
| 520 | 519 | PASS_RC(ceata_wait_idle(), 2, 0); | 
| 521 | 520 | PASS_RC(ceata_write_multiple_register(0, ceata_taskfile, 16), 2, 1); | 
| 522 | 521 | PASS_RC(ceata_rw_multiple_block(false, buf, 1, CEATA_COMMAND_TIMEOUT), 2, 2); | 
| 523 |  | -        for (i = 0; i < 0x100; i++)
 | 
| 524 |  | -        {
 | 
| 525 |  | -            uint16_t word = buf[i];
 | 
| 526 |  | -            buf[i] = (word >> 8) | (word << 8);
 | 
| 527 |  | -        }
 | 
| 528 | 522 | } | 
| 529 | 523 | else | 
| 530 | 524 | { | 
| Index: emcore/trunk/usb/synopsysotg.c | 
| — | — | @@ -192,7 +192,6 @@ | 
| 193 | 193 | { | 
| 194 | 194 | if (epints & 1)  /* Transfer completed */ | 
| 195 | 195 | { | 
| 196 |  | -                    invalidate_dcache();
 | 
| 197 | 196 | int bytes = endpoints[i].size - (DIEPTSIZ(i) & 0x3FFFF); | 
| 198 | 197 | if (endpoints[i].busy) | 
| 199 | 198 | { | 
| — | — | @@ -224,7 +223,6 @@ | 
| 225 | 224 | { | 
| 226 | 225 | if (epints & 1)  /* Transfer completed */ | 
| 227 | 226 | { | 
| 228 |  | -                    invalidate_dcache();
 | 
| 229 | 227 | int bytes = endpoints[i].size - (DOEPTSIZ(i) & 0x3FFFF); | 
| 230 | 228 | if (endpoints[i].busy) | 
| 231 | 229 | { | 
| — | — | @@ -300,7 +298,7 @@ | 
| 301 | 299 | DOEPTSIZ(ep) = length | (packets << 19); | 
| 302 | 300 | DOEPDMA(ep) = ptr; | 
| 303 | 301 | } | 
| 304 |  | -    clean_dcache();
 | 
|  | 302 | +    invalidate_dcache(); | 
| 305 | 303 | DOEPCTL(ep) |= 0x84000000;  /* EPx OUT ENABLE CLEARNAK */ | 
| 306 | 304 | } | 
| 307 | 305 |  |