forked from Minki/linux
Rename page argument of flush_cache_page to something more descriptive.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
8f91ed6c2f
commit
6ec25809c1
@ -368,14 +368,14 @@ static void r4k_flush_cache_mm(struct mm_struct *mm)
|
|||||||
|
|
||||||
struct flush_cache_page_args {
|
struct flush_cache_page_args {
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
unsigned long page;
|
unsigned long addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void local_r4k_flush_cache_page(void *args)
|
static inline void local_r4k_flush_cache_page(void *args)
|
||||||
{
|
{
|
||||||
struct flush_cache_page_args *fcp_args = args;
|
struct flush_cache_page_args *fcp_args = args;
|
||||||
struct vm_area_struct *vma = fcp_args->vma;
|
struct vm_area_struct *vma = fcp_args->vma;
|
||||||
unsigned long page = fcp_args->page;
|
unsigned long addr = fcp_args->addr;
|
||||||
int exec = vma->vm_flags & VM_EXEC;
|
int exec = vma->vm_flags & VM_EXEC;
|
||||||
struct mm_struct *mm = vma->vm_mm;
|
struct mm_struct *mm = vma->vm_mm;
|
||||||
pgd_t *pgdp;
|
pgd_t *pgdp;
|
||||||
@ -390,11 +390,11 @@ static inline void local_r4k_flush_cache_page(void *args)
|
|||||||
if (cpu_context(smp_processor_id(), mm) == 0)
|
if (cpu_context(smp_processor_id(), mm) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
page &= PAGE_MASK;
|
addr &= PAGE_MASK;
|
||||||
pgdp = pgd_offset(mm, page);
|
pgdp = pgd_offset(mm, addr);
|
||||||
pudp = pud_offset(pgdp, page);
|
pudp = pud_offset(pgdp, addr);
|
||||||
pmdp = pmd_offset(pudp, page);
|
pmdp = pmd_offset(pudp, addr);
|
||||||
ptep = pte_offset(pmdp, page);
|
ptep = pte_offset(pmdp, addr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the page isn't marked valid, the page cannot possibly be
|
* If the page isn't marked valid, the page cannot possibly be
|
||||||
@ -411,12 +411,12 @@ static inline void local_r4k_flush_cache_page(void *args)
|
|||||||
*/
|
*/
|
||||||
if ((mm == current->active_mm) && (pte_val(*ptep) & _PAGE_VALID)) {
|
if ((mm == current->active_mm) && (pte_val(*ptep) & _PAGE_VALID)) {
|
||||||
if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
|
if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
|
||||||
r4k_blast_dcache_page(page);
|
r4k_blast_dcache_page(addr);
|
||||||
if (exec && !cpu_icache_snoops_remote_store)
|
if (exec && !cpu_icache_snoops_remote_store)
|
||||||
r4k_blast_scache_page(page);
|
r4k_blast_scache_page(addr);
|
||||||
}
|
}
|
||||||
if (exec)
|
if (exec)
|
||||||
r4k_blast_icache_page(page);
|
r4k_blast_icache_page(addr);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -425,11 +425,11 @@ static inline void local_r4k_flush_cache_page(void *args)
|
|||||||
* Do indexed flush, too much work to get the (possible) TLB refills
|
* Do indexed flush, too much work to get the (possible) TLB refills
|
||||||
* to work correctly.
|
* to work correctly.
|
||||||
*/
|
*/
|
||||||
page = INDEX_BASE + (page & (dcache_size - 1));
|
addr = INDEX_BASE + (addr & (dcache_size - 1));
|
||||||
if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
|
if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc)) {
|
||||||
r4k_blast_dcache_page_indexed(page);
|
r4k_blast_dcache_page_indexed(addr);
|
||||||
if (exec && !cpu_icache_snoops_remote_store)
|
if (exec && !cpu_icache_snoops_remote_store)
|
||||||
r4k_blast_scache_page_indexed(page);
|
r4k_blast_scache_page_indexed(addr);
|
||||||
}
|
}
|
||||||
if (exec) {
|
if (exec) {
|
||||||
if (cpu_has_vtag_icache) {
|
if (cpu_has_vtag_icache) {
|
||||||
@ -438,16 +438,17 @@ static inline void local_r4k_flush_cache_page(void *args)
|
|||||||
if (cpu_context(cpu, mm) != 0)
|
if (cpu_context(cpu, mm) != 0)
|
||||||
drop_mmu_context(mm, cpu);
|
drop_mmu_context(mm, cpu);
|
||||||
} else
|
} else
|
||||||
r4k_blast_icache_page_indexed(page);
|
r4k_blast_icache_page_indexed(addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void r4k_flush_cache_page(struct vm_area_struct *vma, unsigned long page, unsigned long pfn)
|
static void r4k_flush_cache_page(struct vm_area_struct *vma,
|
||||||
|
unsigned long addr, unsigned long pfn)
|
||||||
{
|
{
|
||||||
struct flush_cache_page_args args;
|
struct flush_cache_page_args args;
|
||||||
|
|
||||||
args.vma = vma;
|
args.vma = vma;
|
||||||
args.page = page;
|
args.addr = addr;
|
||||||
|
|
||||||
on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1);
|
on_each_cpu(local_r4k_flush_cache_page, &args, 1, 1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user