Deleted Added
full compact
cpu-v4.h (283365) cpu-v4.h (289759)
1/*-
2 * Copyright 2014 Svatopluk Kraus <onwahe@gmail.com>
3 * Copyright 2014 Michal Meloun <meloun@miracle.cz>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
1/*-
2 * Copyright 2014 Svatopluk Kraus <onwahe@gmail.com>
3 * Copyright 2014 Michal Meloun <meloun@miracle.cz>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 * $FreeBSD: head/sys/arm/include/cpu-v6.h 283365 2015-05-24 12:12:01Z andrew $
27 * $FreeBSD: head/sys/arm/include/cpu-v6.h 289759 2015-10-22 16:38:01Z jah $
28 */
29#ifndef MACHINE_CPU_V6_H
30#define MACHINE_CPU_V6_H
31
32/* There are no user serviceable parts here, they may change without notice */
33#ifndef _KERNEL
34#error Only include this file in the kernel
35#else

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

466 va &= ~cpuinfo.dcache_line_mask;
467 for ( ; va < eva; va += cpuinfo.dcache_line_size) {
468 _CP15_DCIMVAC(va);
469 }
470 dsb();
471}
472
473/*
28 */
29#ifndef MACHINE_CPU_V6_H
30#define MACHINE_CPU_V6_H
31
32/* There are no user serviceable parts here, they may change without notice */
33#ifndef _KERNEL
34#error Only include this file in the kernel
35#else

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

466 va &= ~cpuinfo.dcache_line_mask;
467 for ( ; va < eva; va += cpuinfo.dcache_line_size) {
468 _CP15_DCIMVAC(va);
469 }
470 dsb();
471}
472
473/*
474 * Discard D-cache lines to PoC, prior to overwrite by DMA engine
475 *
476 * Invalidate caches, discarding data in dirty lines. This is useful
477 * if the memory is about to be overwritten, e.g. by a DMA engine.
478 * Invalidate caches from innermost to outermost to follow the flow
479 * of dirty cachelines.
480 */
481static __inline void
482dcache_dma_preread(vm_offset_t va, vm_paddr_t pa, vm_size_t size)
483{
484 vm_offset_t eva = va + size;
485
486 /* invalidate L1 first */
487 dsb();
488 va &= ~cpuinfo.dcache_line_mask;
489 for ( ; va < eva; va += cpuinfo.dcache_line_size) {
490 _CP15_DCIMVAC(va);
491 }
492 dsb();
493
494 /* then L2 */
495 cpu_l2cache_inv_range(pa, size);
496}
497
498/*
474 * Write back D-cache to PoC
475 *
476 * Caches are written back from innermost to outermost as dirty cachelines
477 * flow in this direction. In given range, no dirty cacheline should remain
478 * in any cache after this operation finishes.
479 */
480static __inline void
481dcache_wb_poc(vm_offset_t va, vm_paddr_t pa, vm_size_t size)

--- 55 unchanged lines hidden ---
499 * Write back D-cache to PoC
500 *
501 * Caches are written back from innermost to outermost as dirty cachelines
502 * flow in this direction. In given range, no dirty cacheline should remain
503 * in any cache after this operation finishes.
504 */
505static __inline void
506dcache_wb_poc(vm_offset_t va, vm_paddr_t pa, vm_size_t size)

--- 55 unchanged lines hidden ---