Lines Matching refs:ldt
58 uml_ldt_t *ldt = ¤t->mm->context.arch.ldt; in read_ldt() local
60 if (!ldt->entry_count) in read_ldt()
66 mutex_lock(&ldt->lock); in read_ldt()
67 if (ldt->entry_count <= LDT_DIRECT_ENTRIES) { in read_ldt()
71 if (copy_to_user(ptr, ldt->u.entries, size)) in read_ldt()
77 for (i=0; i<ldt->entry_count/LDT_ENTRIES_PER_PAGE && bytecount; in read_ldt()
82 if (copy_to_user(ptr, ldt->u.pages[i], size)) { in read_ldt()
90 mutex_unlock(&ldt->lock); in read_ldt()
123 uml_ldt_t *ldt = ¤t->mm->context.arch.ldt; in write_ldt() local
147 mutex_lock(&ldt->lock); in write_ldt()
153 if (ldt_info.entry_number >= ldt->entry_count && in write_ldt()
155 for (i=ldt->entry_count/LDT_ENTRIES_PER_PAGE; in write_ldt()
159 memcpy(&entry0, ldt->u.entries, in write_ldt()
161 ldt->u.pages[i] = (struct ldt_entry *) in write_ldt()
163 if (!ldt->u.pages[i]) { in write_ldt()
171 memcpy(ldt->u.pages[0], &entry0, in write_ldt()
173 memcpy(ldt->u.pages[0]+1, ldt->u.entries+1, in write_ldt()
176 ldt->entry_count = (i + 1) * LDT_ENTRIES_PER_PAGE; in write_ldt()
179 if (ldt->entry_count <= ldt_info.entry_number) in write_ldt()
180 ldt->entry_count = ldt_info.entry_number + 1; in write_ldt()
182 if (ldt->entry_count <= LDT_DIRECT_ENTRIES) in write_ldt()
183 ldt_p = ldt->u.entries + ldt_info.entry_number; in write_ldt()
185 ldt_p = ldt->u.pages[ldt_info.entry_number/LDT_ENTRIES_PER_PAGE] + in write_ldt()
202 mutex_unlock(&ldt->lock); in write_ldt()
234 struct ldt_entry * ldt; in ldt_get_host_info() local
251 ldt = (struct ldt_entry *) in ldt_get_host_info()
253 if (ldt == NULL) { in ldt_get_host_info()
259 ret = modify_ldt(0, ldt, (1<<order)*PAGE_SIZE); in ldt_get_host_info()
271 if (ldt[i].a != 0 || ldt[i].b != 0) in ldt_get_host_info()
289 if (ldt[i].a != 0 || ldt[i].b != 0) in ldt_get_host_info()
295 free_pages((unsigned long)ldt, order); in ldt_get_host_info()
307 mutex_init(&new_mm->arch.ldt.lock); in init_new_ldt()
324 new_mm->arch.ldt.entry_count = 0; in init_new_ldt()
335 mutex_lock(&from_mm->arch.ldt.lock); in init_new_ldt()
336 if (from_mm->arch.ldt.entry_count <= LDT_DIRECT_ENTRIES) in init_new_ldt()
337 memcpy(new_mm->arch.ldt.u.entries, from_mm->arch.ldt.u.entries, in init_new_ldt()
338 sizeof(new_mm->arch.ldt.u.entries)); in init_new_ldt()
340 i = from_mm->arch.ldt.entry_count / LDT_ENTRIES_PER_PAGE; in init_new_ldt()
347 new_mm->arch.ldt.u.pages[i] = in init_new_ldt()
349 memcpy(new_mm->arch.ldt.u.pages[i], in init_new_ldt()
350 from_mm->arch.ldt.u.pages[i], PAGE_SIZE); in init_new_ldt()
353 new_mm->arch.ldt.entry_count = from_mm->arch.ldt.entry_count; in init_new_ldt()
354 mutex_unlock(&from_mm->arch.ldt.lock); in init_new_ldt()
365 if (mm->arch.ldt.entry_count > LDT_DIRECT_ENTRIES) { in free_ldt()
366 i = mm->arch.ldt.entry_count / LDT_ENTRIES_PER_PAGE; in free_ldt()
368 free_page((long) mm->arch.ldt.u.pages[i]); in free_ldt()
370 mm->arch.ldt.entry_count = 0; in free_ldt()