|
@@ -0,0 +1,42 @@
|
|
|
+/*
|
|
|
+ * Copyright 2011 Tilera Corporation. All Rights Reserved.
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or
|
|
|
+ * modify it under the terms of the GNU General Public License
|
|
|
+ * as published by the Free Software Foundation, version 2.
|
|
|
+ *
|
|
|
+ * This program is distributed in the hope that it will be useful, but
|
|
|
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
|
|
+ * NON INFRINGEMENT. See the GNU General Public License for
|
|
|
+ * more details.
|
|
|
+ */
|
|
|
+
|
|
|
+#ifndef _ASM_TILE_CACHECTL_H
|
|
|
+#define _ASM_TILE_CACHECTL_H
|
|
|
+
|
|
|
+/*
|
|
|
+ * Options for cacheflush system call.
|
|
|
+ *
|
|
|
+ * The ICACHE flush is performed on all cores currently running the
|
|
|
+ * current process's address space. The intent is for user
|
|
|
+ * applications to be able to modify code, invoke the system call,
|
|
|
+ * then allow arbitrary other threads in the same address space to see
|
|
|
+ * the newly-modified code. Passing a length of CHIP_L1I_CACHE_SIZE()
|
|
|
+ * or more invalidates the entire icache on all cores in the address
|
|
|
+ * spaces. (Note: currently this option invalidates the entire icache
|
|
|
+ * regardless of the requested address and length, but we may choose
|
|
|
+ * to honor the arguments at some point.)
|
|
|
+ *
|
|
|
+ * Flush and invalidation of memory can normally be performed with the
|
|
|
+ * __insn_flush(), __insn_inv(), and __insn_finv() instructions from
|
|
|
+ * userspace. The DCACHE option to the system call allows userspace
|
|
|
+ * to flush the entire L1+L2 data cache from the core. In this case,
|
|
|
+ * the address and length arguments are not used. The DCACHE flush is
|
|
|
+ * restricted to the current core, not all cores in the address space.
|
|
|
+ */
|
|
|
+#define ICACHE (1<<0) /* invalidate L1 instruction cache */
|
|
|
+#define DCACHE (1<<1) /* flush and invalidate data cache */
|
|
|
+#define BCACHE (ICACHE|DCACHE) /* flush both caches */
|
|
|
+
|
|
|
+#endif /* _ASM_TILE_CACHECTL_H */
|