From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MXzhN-0005OK-Q1 for qemu-devel@nongnu.org; Mon, 03 Aug 2009 11:43:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MXzhJ-0005KA-1B for qemu-devel@nongnu.org; Mon, 03 Aug 2009 11:43:41 -0400 Received: from [199.232.76.173] (port=58820 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MXzhI-0005K1-3z for qemu-devel@nongnu.org; Mon, 03 Aug 2009 11:43:36 -0400 Received: from mx20.gnu.org ([199.232.41.8]:50172) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MXzhH-0005kE-Jr for qemu-devel@nongnu.org; Mon, 03 Aug 2009 11:43:35 -0400 Received: from mail.codesourcery.com ([65.74.133.4]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MXzhC-0004ND-9J for qemu-devel@nongnu.org; Mon, 03 Aug 2009 11:43:30 -0400 From: Nathan Froyd Date: Mon, 3 Aug 2009 08:43:22 -0700 Message-Id: <1249314209-10230-1-git-send-email-froydnj@codesourcery.com> Subject: [Qemu-devel] [PATCH 0/7] NPTL support for PPC, v2 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This patch series adds NPTL support in Linux user-mode emulation to 32-bit PowerPC targets. The main complication comes from implementing atomic instructions properly. We chose to implement a simplistic model: - reserved loads record the value loaded; - conditional stores check that the memory at the effective address contains the value loaded by the previous reserved load, in addition to all other checks. if so, the store succeeds; otherwise, it fails. It is possible to implement something more sophisticated using mprotect: - reserved loads write-protect the page from which the value is loaded; - regular stores to the page (through SIGSEGV handling) remove the write protection (which is roughly how the architecture really works); - conditional stores fail if the page was not write-protected, in addition to all other checks. If the store succeeds, then the page is unprotected. but the simple scheme works well enough and should be somewhat faster. The simple scheme is what's already done for system mode, too; it's even slightly dumber in system mode because we don't check for equality of values. malc asked me to compare the approach taken in this patch series versus an mprotect-based approach. I did so, and found that there was no difference between the two and that this approach was faster (no surprise). The patch series has been tested against the glibc testsuite, where it passes a good chunk (90%+) of the testsuite. The other 10% are basically things that are not going to work in QEMU anytime soon (e.g. sharing futexes between multiple processes, using clone(2) directly, etc.). This is an update to the patch series I sent a month or so ago; the changes are rather trivial: a formatting fix or two and a fix for a ppc64 compilation error. -Nathan