patch-2.3.30 linux/include/asm-i386/pgalloc.h
Next file: linux/include/asm-i386/pgtable-2level.h
Previous file: linux/include/asm-i386/pgalloc-3level.h
Back to the patch index
Back to the overall index
- Lines: 42
- Date:
Mon Dec 6 17:22:09 1999
- Orig file:
v2.3.29/linux/include/asm-i386/pgalloc.h
- Orig date:
Tue Nov 23 22:42:21 1999
diff -u --recursive --new-file v2.3.29/linux/include/asm-i386/pgalloc.h linux/include/asm-i386/pgalloc.h
@@ -107,7 +107,7 @@
if (!page)
return get_pte_kernel_slow(pmd, address);
- pmd_val(*pmd) = _KERNPG_TABLE + __pa(page);
+ set_pmd(pmd, __pmd(_KERNPG_TABLE + __pa(page)));
return page + address;
}
if (pmd_bad(*pmd)) {
@@ -132,7 +132,7 @@
if (!page)
return get_pte_slow(pmd, address);
- pmd_val(*pmd) = _PAGE_TABLE + __pa(page);
+ set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(page)));
return (pte_t *)page + address;
}
fix:
@@ -240,6 +240,23 @@
static inline void flush_tlb_range(struct mm_struct * mm, unsigned long start, unsigned long end)
{
flush_tlb_mm(mm);
+}
+
+extern volatile unsigned long smp_invalidate_needed;
+extern unsigned int cpu_tlbbad[NR_CPUS];
+
+static inline void do_flush_tlb_local(void)
+{
+ unsigned long cpu = smp_processor_id();
+ struct mm_struct *mm = current->mm;
+
+ clear_bit(cpu, &smp_invalidate_needed);
+ if (mm) {
+ set_bit(cpu, &mm->cpu_vm_mask);
+ local_flush_tlb();
+ } else {
+ cpu_tlbbad[cpu] = 1;
+ }
}
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)