GNU Linux-libre 4.19.286-gnu1
[releases.git] / arch / riscv / mm / cacheflush.c
1 /*
2  * Copyright (C) 2017 SiFive
3  *
4  *   This program is free software; you can redistribute it and/or
5  *   modify it under the terms of the GNU General Public License
6  *   as published by the Free Software Foundation, version 2.
7  *
8  *   This program is distributed in the hope that it will be useful,
9  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
10  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  *   GNU General Public License for more details.
12  */
13
14 #include <asm/pgtable.h>
15 #include <asm/cacheflush.h>
16
17 void flush_icache_pte(pte_t pte)
18 {
19         struct page *page = pte_page(pte);
20
21         if (!test_bit(PG_dcache_clean, &page->flags)) {
22                 flush_icache_all();
23                 set_bit(PG_dcache_clean, &page->flags);
24         }
25 }