From owner-p4-projects@FreeBSD.ORG Tue Jun 14 02:09:02 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8E27D16A420; Tue, 14 Jun 2005 02:09:01 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5673F16A41C for ; Tue, 14 Jun 2005 02:09:01 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0DB8143D49 for ; Tue, 14 Jun 2005 02:09:01 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j5E290fI043085 for ; Tue, 14 Jun 2005 02:09:00 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j5E290NF043078 for perforce@freebsd.org; Tue, 14 Jun 2005 02:09:00 GMT (envelope-from peter@freebsd.org) Date: Tue, 14 Jun 2005 02:09:00 GMT Message-Id: <200506140209.j5E290NF043078@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Cc: Subject: PERFORCE change 78507 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2005 02:09:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=78507 Change 78507 by peter@peter_melody on 2005/06/14 02:08:32 Clean up pthread segment goop. Affected files ... .. //depot/projects/hammer/lib/libpthread/arch/i386/i386/pthread_md.c#7 edit .. //depot/projects/hammer/lib/libpthread/arch/i386/include/pthread_md.h#14 edit Differences ... ==== //depot/projects/hammer/lib/libpthread/arch/i386/i386/pthread_md.c#7 (text+ko) ==== @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -88,36 +87,6 @@ bzero(kcb, sizeof(struct kcb)); kcb->kcb_self = kcb; kcb->kcb_kse = kse; - switch (_thr_using_setbase) { - case 1: /* use i386_set_gsbase() in _kcb_set */ - kcb->kcb_ldt = -1; - break; - case 0: /* Untested, try the get/set_gsbase routines once */ - error = i386_get_gsbase(&base); - if (error == 0) { - _thr_using_setbase = 1; - break; - } - /* fall through */ - case 2: /* Use the user_ldt code, we must have an old kernel */ - _thr_using_setbase = 2; - ldt.sd.sd_hibase = (unsigned int)kcb >> 24; - ldt.sd.sd_lobase = (unsigned int)kcb & 0xFFFFFF; - ldt.sd.sd_hilimit = (sizeof(struct kcb) >> 16) & 0xF; - ldt.sd.sd_lolimit = sizeof(struct kcb) & 0xFFFF; - ldt.sd.sd_type = SDT_MEMRWA; - ldt.sd.sd_dpl = SEL_UPL; - ldt.sd.sd_p = 1; - ldt.sd.sd_xx = 0; - ldt.sd.sd_def32 = 1; - ldt.sd.sd_gran = 0; /* no more than 1M */ - kcb->kcb_ldt = i386_set_ldt(LDT_AUTO_ALLOC, &ldt, 1); - if (kcb->kcb_ldt < 0) { - free(kcb); - return (NULL); - } - break; - } } return (kcb); } @@ -125,9 +94,5 @@ void _kcb_dtor(struct kcb *kcb) { - if (kcb->kcb_ldt >= 0) { - i386_set_ldt(kcb->kcb_ldt, NULL, 1); - kcb->kcb_ldt = -1; /* just in case */ - } free(kcb); } ==== //depot/projects/hammer/lib/libpthread/arch/i386/include/pthread_md.h#14 (text+ko) ==== @@ -60,7 +60,6 @@ struct kcb { struct tcb *kcb_curtcb; struct kcb *kcb_self; /* self reference */ - int kcb_ldt; struct kse *kcb_kse; struct kse_mailbox kcb_kmbx; }; @@ -154,15 +153,7 @@ static __inline void _kcb_set(struct kcb *kcb) { - int val; - - if (_thr_using_setbase == 1) { - i386_set_gsbase(kcb); - } else { - val = (kcb->kcb_ldt << 3) | 7; - __asm __volatile("movl %0, %%gs" : : "r" (val)); - } - + i386_set_gsbase(kcb); } /* Get the current kcb. */