1: /* cache flushing for IA64
2:
3: Copyright (C) 1998,2001,2003,2007 Free Software Foundation, Inc.
4:
5: This file is part of Gforth.
6:
7: Gforth is free software; you can redistribute it and/or
8: modify it under the terms of the GNU General Public License
9: as published by the Free Software Foundation, either version 3
10: of the License, or (at your option) any later version.
11:
12: This program is distributed in the hope that it will be useful,
13: but WITHOUT ANY WARRANTY; without even the implied warranty of
14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15: GNU General Public License for more details.
16:
17: You should have received a copy of the GNU General Public License
18: along with this program; if not, see http://www.gnu.org/licenses/.
19: */
20:
21: #include <stddef.h>
22: #include <sys/types.h>
23:
24: void flush_icache_block(caddr_t addr, size_t size)
25: {
26: size_t cache_block_size=32;
27: caddr_t p=(caddr_t)(((long)addr)&-cache_block_size);
28:
29: for (; p < (addr+size); p+=cache_block_size)
30: asm("fc %0"::"r"(p));
31: asm("sync.i");
32: asm("srlz.i");
33: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>