mirror of
https://github.com/opnsense/src.git
synced 2026-02-13 15:57:05 -05:00
possible future I-cache coherency operation can succeed. On ARM for example the L1 cache can be (is) virtually mapped, which means that any I/O that uses temporary mappings will not see the I-cache made coherent. On ia64 a similar behaviour has been observed. By flushing the D-cache, execution of binaries backed by md(4) and/or NFS work reliably. For Book-E (powerpc), execution over NFS exhibits SIGILL once in a while as well, though cpu_flush_dcache() hasn't been implemented yet. Doing an explicit D-cache flush as part of the non-DMA based I/O read operation eliminates the need to do it as part of the I-cache coherency operation itself and as such avoids pessimizing the DMA-based I/O read operations for which D-cache are already flushed/invalidated. It also allows future optimizations whereby the bcopy() followed by the D-cache flush can be integrated in a single operation, which could be implemented using on-chips DMA engines, by-passing the D-cache altogether. |
||
|---|---|---|
| .. | ||
| clock.c | ||
| copyinout.c | ||
| interrupt.c | ||
| locore.S | ||
| machdep.c | ||
| mmu_oea.c | ||
| mmu_oea64.c | ||
| mp_cpudep.c | ||
| nexus.c | ||
| ofw_machdep.c | ||
| ofwmagic.S | ||
| platform_chrp.c | ||
| swtch.S | ||
| trap.c | ||
| trap_subr.S | ||
| uma_machdep.c | ||
| vm_machdep.c | ||