Deleted Added
full compact
busdma_machdep-v6.c (286968) busdma_machdep-v6.c (286969)
1/*-
2 * Copyright (c) 2012-2014 Ian Lepore
3 * Copyright (c) 2010 Mark Tinguely
4 * Copyright (c) 2004 Olivier Houchard
5 * Copyright (c) 2002 Peter Grehan
6 * Copyright (c) 1997, 1998 Justin T. Gibbs.
7 * All rights reserved.
8 *

--- 17 unchanged lines hidden (view full) ---

26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * From i386/busdma_machdep.c 191438 2009-04-23 20:24:19Z jhb
31 */
32
33#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2012-2014 Ian Lepore
3 * Copyright (c) 2010 Mark Tinguely
4 * Copyright (c) 2004 Olivier Houchard
5 * Copyright (c) 2002 Peter Grehan
6 * Copyright (c) 1997, 1998 Justin T. Gibbs.
7 * All rights reserved.
8 *

--- 17 unchanged lines hidden (view full) ---

26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * From i386/busdma_machdep.c 191438 2009-04-23 20:24:19Z jhb
31 */
32
33#include <sys/cdefs.h>
34__FBSDID("$FreeBSD: head/sys/arm/arm/busdma_machdep-v6.c 286968 2015-08-20 19:14:16Z ian $");
34__FBSDID("$FreeBSD: head/sys/arm/arm/busdma_machdep-v6.c 286969 2015-08-20 19:39:15Z ian $");
35
36#define _ARM32_BUS_DMA_PRIVATE
37#include <sys/param.h>
38#include <sys/kdb.h>
39#include <ddb/ddb.h>
40#include <ddb/db_output.h>
41#include <sys/systm.h>
42#include <sys/malloc.h>

--- 1333 unchanged lines hidden (view full) ---

1376 * due to accesses to other data near the dma buffer could have
1377 * brought buffer data into the caches which is now stale. The
1378 * caches are invalidated from the outermost to innermost; the
1379 * prefetches could be happening right now, and if L1 were
1380 * invalidated first, stale L2 data could be prefetched into L1.
1381 */
1382 if (op & BUS_DMASYNC_POSTREAD) {
1383 while (bpage != NULL) {
35
36#define _ARM32_BUS_DMA_PRIVATE
37#include <sys/param.h>
38#include <sys/kdb.h>
39#include <ddb/ddb.h>
40#include <ddb/db_output.h>
41#include <sys/systm.h>
42#include <sys/malloc.h>

--- 1333 unchanged lines hidden (view full) ---

1376 * due to accesses to other data near the dma buffer could have
1377 * brought buffer data into the caches which is now stale. The
1378 * caches are invalidated from the outermost to innermost; the
1379 * prefetches could be happening right now, and if L1 were
1380 * invalidated first, stale L2 data could be prefetched into L1.
1381 */
1382 if (op & BUS_DMASYNC_POSTREAD) {
1383 while (bpage != NULL) {
1384 vm_offset_t startv;
1385 vm_paddr_t startp;
1386 int len;
1387
1388 startv = bpage->vaddr &~ arm_dcache_align_mask;
1389 startp = bpage->busaddr &~ arm_dcache_align_mask;
1390 len = bpage->datacount;
1391
1392 if (startv != bpage->vaddr)
1393 len += bpage->vaddr & arm_dcache_align_mask;
1394 if (len & arm_dcache_align_mask)
1395 len = (len -
1396 (len & arm_dcache_align_mask)) +
1397 arm_dcache_align;
1398 l2cache_inv_range(startv, startp, len);
1399 cpu_dcache_inv_range(startv, len);
1384 l2cache_inv_range((vm_offset_t)bpage->vaddr,
1385 (vm_offset_t)bpage->busaddr,
1386 bpage->datacount);
1387 cpu_dcache_inv_range((vm_offset_t)bpage->vaddr,
1388 bpage->datacount);
1400 if (bpage->datavaddr != 0)
1401 bcopy((void *)bpage->vaddr,
1402 (void *)bpage->datavaddr,
1403 bpage->datacount);
1404 else
1405 physcopyin((void *)bpage->vaddr,
1406 bpage->dataaddr,
1407 bpage->datacount);

--- 346 unchanged lines hidden ---
1389 if (bpage->datavaddr != 0)
1390 bcopy((void *)bpage->vaddr,
1391 (void *)bpage->datavaddr,
1392 bpage->datacount);
1393 else
1394 physcopyin((void *)bpage->vaddr,
1395 bpage->dataaddr,
1396 bpage->datacount);

--- 346 unchanged lines hidden ---