Lines Matching refs:ldt
57 uml_ldt_t *ldt = ¤t->mm->context.arch.ldt; in read_ldt() local
59 if (!ldt->entry_count) in read_ldt()
65 mutex_lock(&ldt->lock); in read_ldt()
66 if (ldt->entry_count <= LDT_DIRECT_ENTRIES) { in read_ldt()
70 if (copy_to_user(ptr, ldt->u.entries, size)) in read_ldt()
76 for (i=0; i<ldt->entry_count/LDT_ENTRIES_PER_PAGE && bytecount; in read_ldt()
81 if (copy_to_user(ptr, ldt->u.pages[i], size)) { in read_ldt()
89 mutex_unlock(&ldt->lock); in read_ldt()
122 uml_ldt_t *ldt = ¤t->mm->context.arch.ldt; in write_ldt() local
146 mutex_lock(&ldt->lock); in write_ldt()
152 if (ldt_info.entry_number >= ldt->entry_count && in write_ldt()
154 for (i=ldt->entry_count/LDT_ENTRIES_PER_PAGE; in write_ldt()
158 memcpy(&entry0, ldt->u.entries, in write_ldt()
160 ldt->u.pages[i] = (struct ldt_entry *) in write_ldt()
162 if (!ldt->u.pages[i]) { in write_ldt()
170 memcpy(ldt->u.pages[0], &entry0, in write_ldt()
172 memcpy(ldt->u.pages[0]+1, ldt->u.entries+1, in write_ldt()
175 ldt->entry_count = (i + 1) * LDT_ENTRIES_PER_PAGE; in write_ldt()
178 if (ldt->entry_count <= ldt_info.entry_number) in write_ldt()
179 ldt->entry_count = ldt_info.entry_number + 1; in write_ldt()
181 if (ldt->entry_count <= LDT_DIRECT_ENTRIES) in write_ldt()
182 ldt_p = ldt->u.entries + ldt_info.entry_number; in write_ldt()
184 ldt_p = ldt->u.pages[ldt_info.entry_number/LDT_ENTRIES_PER_PAGE] + in write_ldt()
201 mutex_unlock(&ldt->lock); in write_ldt()
233 struct ldt_entry * ldt; in ldt_get_host_info() local
250 ldt = (struct ldt_entry *) in ldt_get_host_info()
252 if (ldt == NULL) { in ldt_get_host_info()
258 ret = modify_ldt(0, ldt, (1<<order)*PAGE_SIZE); in ldt_get_host_info()
270 if (ldt[i].a != 0 || ldt[i].b != 0) in ldt_get_host_info()
288 if (ldt[i].a != 0 || ldt[i].b != 0) in ldt_get_host_info()
294 free_pages((unsigned long)ldt, order); in ldt_get_host_info()
306 mutex_init(&new_mm->arch.ldt.lock); in init_new_ldt()
323 new_mm->arch.ldt.entry_count = 0; in init_new_ldt()
334 mutex_lock(&from_mm->arch.ldt.lock); in init_new_ldt()
335 if (from_mm->arch.ldt.entry_count <= LDT_DIRECT_ENTRIES) in init_new_ldt()
336 memcpy(new_mm->arch.ldt.u.entries, from_mm->arch.ldt.u.entries, in init_new_ldt()
337 sizeof(new_mm->arch.ldt.u.entries)); in init_new_ldt()
339 i = from_mm->arch.ldt.entry_count / LDT_ENTRIES_PER_PAGE; in init_new_ldt()
346 new_mm->arch.ldt.u.pages[i] = in init_new_ldt()
348 memcpy(new_mm->arch.ldt.u.pages[i], in init_new_ldt()
349 from_mm->arch.ldt.u.pages[i], PAGE_SIZE); in init_new_ldt()
352 new_mm->arch.ldt.entry_count = from_mm->arch.ldt.entry_count; in init_new_ldt()
353 mutex_unlock(&from_mm->arch.ldt.lock); in init_new_ldt()
364 if (mm->arch.ldt.entry_count > LDT_DIRECT_ENTRIES) { in free_ldt()
365 i = mm->arch.ldt.entry_count / LDT_ENTRIES_PER_PAGE; in free_ldt()
367 free_page((long) mm->arch.ldt.u.pages[i]); in free_ldt()
369 mm->arch.ldt.entry_count = 0; in free_ldt()