Lines Matching refs:ldt

60 	uml_ldt_t *ldt = &current->mm->context.arch.ldt;  in read_ldt()  local
62 if (!ldt->entry_count) in read_ldt()
68 mutex_lock(&ldt->lock); in read_ldt()
69 if (ldt->entry_count <= LDT_DIRECT_ENTRIES) { in read_ldt()
73 if (copy_to_user(ptr, ldt->u.entries, size)) in read_ldt()
79 for (i=0; i<ldt->entry_count/LDT_ENTRIES_PER_PAGE && bytecount; in read_ldt()
84 if (copy_to_user(ptr, ldt->u.pages[i], size)) { in read_ldt()
92 mutex_unlock(&ldt->lock); in read_ldt()
125 uml_ldt_t *ldt = &current->mm->context.arch.ldt; in write_ldt() local
149 mutex_lock(&ldt->lock); in write_ldt()
155 if (ldt_info.entry_number >= ldt->entry_count && in write_ldt()
157 for (i=ldt->entry_count/LDT_ENTRIES_PER_PAGE; in write_ldt()
161 memcpy(&entry0, ldt->u.entries, in write_ldt()
163 ldt->u.pages[i] = (struct ldt_entry *) in write_ldt()
165 if (!ldt->u.pages[i]) { in write_ldt()
173 memcpy(ldt->u.pages[0], &entry0, in write_ldt()
175 memcpy(ldt->u.pages[0]+1, ldt->u.entries+1, in write_ldt()
178 ldt->entry_count = (i + 1) * LDT_ENTRIES_PER_PAGE; in write_ldt()
181 if (ldt->entry_count <= ldt_info.entry_number) in write_ldt()
182 ldt->entry_count = ldt_info.entry_number + 1; in write_ldt()
184 if (ldt->entry_count <= LDT_DIRECT_ENTRIES) in write_ldt()
185 ldt_p = ldt->u.entries + ldt_info.entry_number; in write_ldt()
187 ldt_p = ldt->u.pages[ldt_info.entry_number/LDT_ENTRIES_PER_PAGE] + in write_ldt()
204 mutex_unlock(&ldt->lock); in write_ldt()
236 struct ldt_entry * ldt; in ldt_get_host_info() local
253 ldt = (struct ldt_entry *) in ldt_get_host_info()
255 if (ldt == NULL) { in ldt_get_host_info()
261 ret = modify_ldt(0, ldt, (1<<order)*PAGE_SIZE); in ldt_get_host_info()
273 if (ldt[i].a != 0 || ldt[i].b != 0) in ldt_get_host_info()
291 if (ldt[i].a != 0 || ldt[i].b != 0) in ldt_get_host_info()
297 free_pages((unsigned long)ldt, order); in ldt_get_host_info()
309 mutex_init(&new_mm->arch.ldt.lock); in init_new_ldt()
326 new_mm->arch.ldt.entry_count = 0; in init_new_ldt()
337 mutex_lock(&from_mm->arch.ldt.lock); in init_new_ldt()
338 if (from_mm->arch.ldt.entry_count <= LDT_DIRECT_ENTRIES) in init_new_ldt()
339 memcpy(new_mm->arch.ldt.u.entries, from_mm->arch.ldt.u.entries, in init_new_ldt()
340 sizeof(new_mm->arch.ldt.u.entries)); in init_new_ldt()
342 i = from_mm->arch.ldt.entry_count / LDT_ENTRIES_PER_PAGE; in init_new_ldt()
349 new_mm->arch.ldt.u.pages[i] = in init_new_ldt()
351 memcpy(new_mm->arch.ldt.u.pages[i], in init_new_ldt()
352 from_mm->arch.ldt.u.pages[i], PAGE_SIZE); in init_new_ldt()
355 new_mm->arch.ldt.entry_count = from_mm->arch.ldt.entry_count; in init_new_ldt()
356 mutex_unlock(&from_mm->arch.ldt.lock); in init_new_ldt()
367 if (mm->arch.ldt.entry_count > LDT_DIRECT_ENTRIES) { in free_ldt()
368 i = mm->arch.ldt.entry_count / LDT_ENTRIES_PER_PAGE; in free_ldt()
370 free_page((long) mm->arch.ldt.u.pages[i]); in free_ldt()
372 mm->arch.ldt.entry_count = 0; in free_ldt()