1 /* 2 * Copyright (c) 2011 The Chromium OS Authors. 3 * See file CREDITS for list of people who contributed to this 4 * project. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License as 8 * published by the Free Software Foundation; either version 2 of 9 * the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 19 * MA 02111-1307 USA 20 */ 21 22 #ifndef __X86_CACHE_H__ 23 #define __X86_CACHE_H__ 24 25 /* 26 * If CONFIG_SYS_CACHELINE_SIZE is defined use it for DMA alignment. Otherwise 27 * use 64-bytes, a safe default for x86. 28 */ 29 #ifdef CONFIG_SYS_CACHELINE_SIZE 30 #define ARCH_DMA_MINALIGN CONFIG_SYS_CACHELINE_SIZE 31 #else 32 #define ARCH_DMA_MINALIGN 64 33 #endif 34 35 static inline void wbinvd(void) 36 { 37 asm volatile ("wbinvd" : : : "memory"); 38 } 39 40 static inline void invd(void) 41 { 42 asm volatile("invd" : : : "memory"); 43 } 44 45 /* Enable caches and write buffer */ 46 void enable_caches(void); 47 48 /* Disable caches and write buffer */ 49 void disable_caches(void); 50 51 #endif /* __X86_CACHE_H__ */ 52