busdma_machdep-v4.c (171623) | busdma_machdep-v4.c (171890) |
---|---|
1/*- 2 * Copyright (c) 2004 Olivier Houchard 3 * Copyright (c) 2002 Peter Grehan 4 * Copyright (c) 1997, 1998 Justin T. Gibbs. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 15 unchanged lines hidden (view full) --- 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 * 28 * From i386/busdma_machdep.c,v 1.26 2002/04/19 22:58:09 alfred 29 */ 30 31#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2004 Olivier Houchard 3 * Copyright (c) 2002 Peter Grehan 4 * Copyright (c) 1997, 1998 Justin T. Gibbs. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 15 unchanged lines hidden (view full) --- 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 * 28 * From i386/busdma_machdep.c,v 1.26 2002/04/19 22:58:09 alfred 29 */ 30 31#include <sys/cdefs.h> |
32__FBSDID("$FreeBSD: head/sys/arm/arm/busdma_machdep.c 171623 2007-07-27 14:46:43Z cognet $"); | 32__FBSDID("$FreeBSD: head/sys/arm/arm/busdma_machdep.c 171890 2007-08-18 16:47:28Z cognet $"); |
33 34/* 35 * ARM bus dma support routines 36 */ 37 38#define _ARM32_BUS_DMA_PRIVATE 39#include <sys/param.h> 40#include <sys/systm.h> --- 1045 unchanged lines hidden (view full) --- 1086 return; 1087} 1088 1089static void 1090bus_dmamap_sync_buf(void *buf, int len, bus_dmasync_op_t op) 1091{ 1092 char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; 1093 | 33 34/* 35 * ARM bus dma support routines 36 */ 37 38#define _ARM32_BUS_DMA_PRIVATE 39#include <sys/param.h> 40#include <sys/systm.h> --- 1045 unchanged lines hidden (view full) --- 1086 return; 1087} 1088 1089static void 1090bus_dmamap_sync_buf(void *buf, int len, bus_dmasync_op_t op) 1091{ 1092 char _tmp_cl[arm_dcache_align], _tmp_clend[arm_dcache_align]; 1093 |
1094 if (op & BUS_DMASYNC_PREWRITE) { | 1094 if ((op & BUS_DMASYNC_PREWRITE) && !(op & BUS_DMASYNC_PREREAD)) { |
1095 cpu_dcache_wb_range((vm_offset_t)buf, len); 1096 cpu_l2cache_wb_range((vm_offset_t)buf, len); 1097 } 1098 if (op & BUS_DMASYNC_PREREAD) { | 1095 cpu_dcache_wb_range((vm_offset_t)buf, len); 1096 cpu_l2cache_wb_range((vm_offset_t)buf, len); 1097 } 1098 if (op & BUS_DMASYNC_PREREAD) { |
1099 cpu_idcache_wbinv_range((vm_offset_t)buf, len); 1100 cpu_l2cache_wbinv_range((vm_offset_t)buf, len); | 1099 if ((op & BUS_DMASYNC_PREWRITE) || 1100 ((((vm_offset_t)(buf) | len) & arm_dcache_align_mask) == 0)) { 1101 cpu_dcache_inv_range((vm_offset_t)buf, len); 1102 cpu_l2cache_inv_range((vm_offset_t)buf, len); 1103 } else { 1104 cpu_dcache_wbinv_range((vm_offset_t)buf, len); 1105 cpu_l2cache_wbinv_range((vm_offset_t)buf, len); 1106 } |
1101 } 1102 if (op & BUS_DMASYNC_POSTREAD) { 1103 if ((vm_offset_t)buf & arm_dcache_align_mask) { 1104 memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ 1105 arm_dcache_align_mask), 1106 (vm_offset_t)buf & arm_dcache_align_mask); 1107 } 1108 if (((vm_offset_t)buf + len) & arm_dcache_align_mask) { --- 358 unchanged lines hidden --- | 1107 } 1108 if (op & BUS_DMASYNC_POSTREAD) { 1109 if ((vm_offset_t)buf & arm_dcache_align_mask) { 1110 memcpy(_tmp_cl, (void *)((vm_offset_t)buf & ~ 1111 arm_dcache_align_mask), 1112 (vm_offset_t)buf & arm_dcache_align_mask); 1113 } 1114 if (((vm_offset_t)buf + len) & arm_dcache_align_mask) { --- 358 unchanged lines hidden --- |