GDT_ENTRY_TLS_MIN
gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i];
#define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
idx -= GDT_ENTRY_TLS_MIN;
.bias = GDT_ENTRY_TLS_MIN,
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
index = idx - GDT_ENTRY_TLS_MIN;
GDT_ENTRY_TLS_MAX - GDT_ENTRY_TLS_MIN + 1);
fill_user_desc(&v, GDT_ENTRY_TLS_MIN + pos, tls);
return idx + GDT_ENTRY_TLS_MIN;
GDT_ENTRY_TLS_MIN + (pos / sizeof(struct user_desc)),
struct desc_struct *desc = &t->tls_array[idx - GDT_ENTRY_TLS_MIN];
#define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
for (i = GDT_ENTRY_TLS_MIN; i < GDT_ENTRY_TLS_MAX; i++) {
&task->thread.arch.tls_array[i - GDT_ENTRY_TLS_MIN];
for (i = GDT_ENTRY_TLS_MIN; i < GDT_ENTRY_TLS_MAX; i++) {
&task->thread.arch.tls_array[i - GDT_ENTRY_TLS_MIN];
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].tls = *info;
t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].present = 1;
t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].flushed = flushed;
if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
if (!t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].present)
*info = t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].tls;
!t->arch.tls_array[idx - GDT_ENTRY_TLS_MIN].flushed)) {
return idx + GDT_ENTRY_TLS_MIN;
for (idx = GDT_ENTRY_TLS_MIN; idx < GDT_ENTRY_TLS_MAX; idx++) {
&to->thread.arch.tls_array[idx - GDT_ENTRY_TLS_MIN];
maddr = arbitrary_virt_to_machine(&gdt[GDT_ENTRY_TLS_MIN+i]);
GDT_ENTRY_TLS_MIN, &d, DESCTYPE_S);
"r" ((unsigned short)(GDT_ENTRY_TLS_MIN << 3)));