sparc64: refactor code in init_64.c
The sparc64 allmodconfig build broke due to enabling of the branch_tracer that does some very clever things with all if conditions. This caused my gcc 3.4.5 to be so confused that it emitted two warnings: arch/sparc/mm/init_64.c: In function `update_mmu_cache': arch/sparc/mm/init_64.c:271: warning: 'pg_flags' might be used uninitialized in this function arch/sparc/mm/init_64.c:272: warning: 'page' might be used uninitialized in this function And with -Werror this broke the build. Refactor code so it: 1) becomes more readable 2) no longer emit a warning with the branch_tracer enabled The refactoring uses a small helper function (flush_dcache()). Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2eac5a0d3a
commit
ff9aefbf4d
|
@ -258,21 +258,16 @@ static inline void tsb_insert(struct tsb *ent, unsigned long tag, unsigned long
|
||||||
unsigned long _PAGE_ALL_SZ_BITS __read_mostly;
|
unsigned long _PAGE_ALL_SZ_BITS __read_mostly;
|
||||||
unsigned long _PAGE_SZBITS __read_mostly;
|
unsigned long _PAGE_SZBITS __read_mostly;
|
||||||
|
|
||||||
void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
|
static void flush_dcache(unsigned long pfn)
|
||||||
{
|
{
|
||||||
struct mm_struct *mm;
|
struct page *page;
|
||||||
struct tsb *tsb;
|
|
||||||
unsigned long tag, flags;
|
|
||||||
unsigned long tsb_index, tsb_hash_shift;
|
|
||||||
|
|
||||||
if (tlb_type != hypervisor) {
|
page = pfn_to_page(pfn);
|
||||||
unsigned long pfn = pte_pfn(pte);
|
if (page && page_mapping(page)) {
|
||||||
unsigned long pg_flags;
|
unsigned long pg_flags;
|
||||||
struct page *page;
|
|
||||||
|
|
||||||
if (pfn_valid(pfn) &&
|
pg_flags = page->flags;
|
||||||
(page = pfn_to_page(pfn), page_mapping(page)) &&
|
if (pg_flags & (1UL << PG_dcache_dirty)) {
|
||||||
((pg_flags = page->flags) & (1UL << PG_dcache_dirty))) {
|
|
||||||
int cpu = ((pg_flags >> PG_dcache_cpu_shift) &
|
int cpu = ((pg_flags >> PG_dcache_cpu_shift) &
|
||||||
PG_dcache_cpu_mask);
|
PG_dcache_cpu_mask);
|
||||||
int this_cpu = get_cpu();
|
int this_cpu = get_cpu();
|
||||||
|
@ -290,6 +285,21 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t p
|
||||||
put_cpu();
|
put_cpu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
|
||||||
|
{
|
||||||
|
struct mm_struct *mm;
|
||||||
|
struct tsb *tsb;
|
||||||
|
unsigned long tag, flags;
|
||||||
|
unsigned long tsb_index, tsb_hash_shift;
|
||||||
|
|
||||||
|
if (tlb_type != hypervisor) {
|
||||||
|
unsigned long pfn = pte_pfn(pte);
|
||||||
|
|
||||||
|
if (pfn_valid(pfn))
|
||||||
|
flush_dcache(pfn);
|
||||||
|
}
|
||||||
|
|
||||||
mm = vma->vm_mm;
|
mm = vma->vm_mm;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue