flush_tlb_mm(struct mm_struct *mm)
{
int i;
- int page_id = mm->context;
+ int page_id = mm->context.page_id;
unsigned long flags;
D(printk("tlb: flush mm context %d (%p)\n", page_id, mm));
unsigned long addr)
{
struct mm_struct *mm = vma->vm_mm;
- int page_id = mm->context;
+ int page_id = mm->context.page_id;
int i;
unsigned long flags;
unsigned long end)
{
struct mm_struct *mm = vma->vm_mm;
- int page_id = mm->context;
+ int page_id = mm->context.page_id;
int i;
unsigned long flags;
}
#endif
+/*
+ * Initialize the context related info for a new mm_struct
+ * instance.
+ */
+
+int
+init_new_context(struct task_struct *tsk, struct mm_struct *mm)
+{
+ mm->context.page_id = NO_CONTEXT;
+ return 0;
+}
+
/* called in schedule() just before actually doing the switch_to */
void
D(printk("switching mmu_context to %d (%p)\n", next->context, next));
- *R_MMU_CONTEXT = IO_FIELD(R_MMU_CONTEXT, page_id, next->context);
+ *R_MMU_CONTEXT = IO_FIELD(R_MMU_CONTEXT, page_id, next->context.page_id);
}