From owner-freebsd-mips@FreeBSD.ORG Wed Dec 8 17:04:43 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA96010656AC for ; Wed, 8 Dec 2010 17:04:43 +0000 (UTC) (envelope-from rmh.aybabtu@gmail.com) Received: from mail-iw0-f174.google.com (mail-iw0-f174.google.com [209.85.214.174]) by mx1.freebsd.org (Postfix) with ESMTP id 916888FC2D for ; Wed, 8 Dec 2010 17:04:43 +0000 (UTC) Received: by iwn9 with SMTP id 9so2040558iwn.19 for ; Wed, 08 Dec 2010 09:04:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received:date :x-google-sender-auth:message-id:subject:from:to:content-type; bh=jItuGtHlxit/396OT3G3LjlEkiBBHhzqdqbrg3laGzc=; b=JJJ7FERjUPbWa16dHINWzkxkbnTUe4zB3fkgppApn9k0aorRCUr0GkmUIBGij1XG1D zTQyN2JoVZmq8Fs4qwdM5J+Ui2/hoWkhAnuRTHc3FhK/5neh0G4THNIftDbMFmaqrcPV IOSRwvfhLcKAp73bvy7sZsPMHWm+uprlXSqYM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; b=grYSH5zqFiY1NXqixQIVnAJ5/ja8u4og9mTThJUa38HRqUO/ETaNRYFU8oCuJF8xIQ +ThY49s97KZVs+pTsAdfPg6jzWWVzTxo04V67M6l3xLTxiALIANGY7a6Bp1GZD2PE2jM efZA+27HVeNnl47G09zrNKLVheOBqruZmes6M= MIME-Version: 1.0 Received: by 10.231.36.5 with SMTP id r5mr2888707ibd.106.1291826040555; Wed, 08 Dec 2010 08:34:00 -0800 (PST) Sender: rmh.aybabtu@gmail.com Received: by 10.231.8.233 with HTTP; Wed, 8 Dec 2010 08:34:00 -0800 (PST) Date: Wed, 8 Dec 2010 17:34:00 +0100 X-Google-Sender-Auth: 5p0Llbkh-Q3eK4rCTNynTFRZKZE Message-ID: From: Robert Millan To: freebsd-mips@freebsd.org Content-Type: multipart/mixed; boundary=00248c6a57264247f90496e8b040 Subject: [PATCH] Retrieval of TLS pointer via RDHWR X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Dec 2010 17:04:44 -0000 --00248c6a57264247f90496e8b040 Content-Type: text/plain; charset=UTF-8 This patch implements support for retrieving the TLS pointer via RDHWR instruction. It is implemented through emulation for platforms that don't provide this instruction natively (such as gxemul/malta). Platforms that do provide it would need a separate patch. Reading register $29 with RDHWR is becoming the de-facto standard to implement TLS. According to linux-mips wiki, MIPS Technologies has reserved hardware register $29 for ABI use. Furthermore current GCC [1] makes the following assumptions: - RDHWR is natively available or otherwise emulated by the kernel - Register $29 holds the TLS pointer [1] gcc-4.4.4/gcc/config/mips/mips.md reads: ;; The TLS base pointer is accessed via "rdhwr $3, $29". No current ;; MIPS architecture defines this register, and no current ;; implementation provides it; instead, any OS which supports TLS is ;; expected to trap and emulate this instruction. rdhwr is part of the ;; MIPS 32r2 specification, but we use it on any architecture because ;; we expect it to be emulated. -- Robert Millan --00248c6a57264247f90496e8b040 Content-Type: text/x-patch; charset=US-ASCII; name="rdhwr.diff" Content-Disposition: attachment; filename="rdhwr.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ghgfuu2a0 SW5kZXg6IG1pcHMvaW5jbHVkZS9taXBzX29wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1pcHMvaW5j bHVkZS9taXBzX29wY29kZS5oCShyZXZpc2lvbiAyMTYyOTkpCisrKyBtaXBzL2luY2x1ZGUvbWlw c19vcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3NiwxMSBAQAogI2RlZmluZQlP UF9MREwJCTAzMgogI2RlZmluZQlPUF9MRFIJCTAzMwogCisjZGVmaW5lIE9QX1NQRUNJQUwyCTAz NAorI2RlZmluZSBPUF9KQUxYCQkwMzUKKworI2RlZmluZSBPUF9TUEVDSUFMMwkwMzcKKwogI2Rl ZmluZQlPUF9MQgkJMDQwCiAjZGVmaW5lCU9QX0xICQkwNDEKICNkZWZpbmUJT1BfTFdMCQkwNDIK QEAgLTM4OSw2ICszOTQsMTEgQEAKICNkZWZpbmUJT1BfUl9CR0VaQUxMCU9QX0JHRVpBTEwKIAog LyoKKyAqIFZhbHVlcyBmb3IgdGhlICdmdW5jJyBmaWVsZCB3aGVuICdvcCcgPT0gT1BfU1BFQ0lB TDMuCisgKi8KKyNkZWZpbmUJT1BfUkRIV1IJMDczCisKKy8qCiAgKiBWYWx1ZXMgZm9yIHRoZSAn cnMnIGZpZWxkIHdoZW4gJ29wJyA9PSBPUF9DT1B6LgogICovCiAjZGVmaW5lCU9QX01GCQkwMDAK SW5kZXg6IG1pcHMvbWlwcy90cmFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWlwcy9taXBzL3RyYXAuYwko cmV2aXNpb24gMjE2Mjk5KQorKysgbWlwcy9taXBzL3RyYXAuYwkod29ya2luZyBjb3B5KQpAQCAt ODI0LDkgKzgyNCwyNiBAQAogCQl9CiAKIAljYXNlIFRfUkVTX0lOU1QgKyBUX1VTRVI6Ci0JCWxv Z19pbGxlZ2FsX2luc3RydWN0aW9uKCJSRVNfSU5TVCIsIHRyYXBmcmFtZSk7Ci0JCWkgPSBTSUdJ TEw7Ci0JCWFkZHIgPSB0cmFwZnJhbWUtPnBjOworCQl7CisJCQlyZWdpc3Rlcl90IGluc3QgPSAq KChyZWdpc3Rlcl90ICopIHRyYXBmcmFtZS0+cGMpOworCQkJc3dpdGNoIChNSVBTX0lOU1RfT1BD T0RFKGluc3QpKSB7CisJCQljYXNlIE9QX1NQRUNJQUwzOgorCQkJCXN3aXRjaCAoTUlQU19JTlNU X0ZVTkMoaW5zdCkpIHsKKwkJCQljYXNlIE9QX1JESFdSOgorCQkJCQkvKiBSZWdpc3RlciAyOSB1 c2VkIGZvciBUTFMgKi8KKwkJCQkJaWYgKE1JUFNfSU5TVF9SRChpbnN0KSA9PSAyOSkgeworCQkJ CQkJKChyZWdpc3Rlcl90ICopIHRyYXBmcmFtZSlbTUlQU19JTlNUX1JUKGluc3QpXSA9IHRkLT50 ZF9tZC5tZF90bHM7CisJCQkJCQl0cmFwZnJhbWUtPnBjICs9IHNpemVvZihpbnQpOworCQkJCQkJ Z290byBvdXQ7CisJCQkJCX0KKwkJCQlicmVhazsKKwkJCQl9CisJCQlicmVhazsKKwkJCX0KKwkJ CWxvZ19pbGxlZ2FsX2luc3RydWN0aW9uKCJSRVNfSU5TVCIsIHRyYXBmcmFtZSk7CisJCQlpID0g U0lHSUxMOworCQkJYWRkciA9IHRyYXBmcmFtZS0+cGM7CisJCX0KIAkJYnJlYWs7CiAJY2FzZSBU X0MyRToKIAljYXNlIFRfQzJFICsgVF9VU0VSOgo= --00248c6a57264247f90496e8b040--