From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=44422 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PiAcl-0000wS-FM for qemu-devel@nongnu.org; Wed, 26 Jan 2011 14:01:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PiAcj-0001No-7U for qemu-devel@nongnu.org; Wed, 26 Jan 2011 14:01:47 -0500 Received: from cantor2.suse.de ([195.135.220.15]:42061 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PiAcj-0001Nj-0l for qemu-devel@nongnu.org; Wed, 26 Jan 2011 14:01:45 -0500 Message-ID: <4D406F97.8050001@suse.de> Date: Wed, 26 Jan 2011 20:01:43 +0100 From: Alexander Graf MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 5/7] tcg-i386: Implement deposit operation. References: <1294716228-9299-1-git-send-email-rth@twiddle.net> <1294716228-9299-6-git-send-email-rth@twiddle.net> <20110125122749.GA19736@edde.se.axis.com> <4D3EF6C1.3080502@twiddle.net> <20110125164816.GA23569@laped.lan> <4D3F4993.4010109@twiddle.net> <20110126085338.GA26088@laped.lan> <4D4042B4.4020805@twiddle.net> <4D404533.3060708@suse.de> <4D404E66.4020109@twiddle.net> <4D4050E3.9010207@suse.de> <4D40660F.9070004@twiddle.net> <4D40678F.8030504@suse.de> <4D406E30.8030502@twiddle.net> In-Reply-To: <4D406E30.8030502@twiddle.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson Cc: "Edgar E.Iglesias" , qemu-devel@nongnu.org, aurelien@aurel32.net Richard Henderson wrote: > On 01/26/2011 10:27 AM, Alexander Graf wrote: > >> What do I do on a page fault now? I could rerun the translator to find >> out which registers would be stuck in a temporary, but I have no way to >> actually read the temporary's value, as all register state is thrown >> away on a page fault IIUC. >> > > When does a page-fault happen? > > As far as I know, it does not happen at random. Which seems to be > what you are suggesting. > It happens on load/store and potentially helpers. The main difference IIUC between globals and temps is that globals are kept in registers as long as possible (read: until load/store or helper or tb end gets emitted) while temporaries are not stored back to any memory, so they are lost on load/store. So what you are suggesting is basically to use a different set of globals for regs32 and to keep track of their usage throughout the TB, so we can convert on demand. We can't use temporaries for that unless we manually store them off on load/store/helper/tb end which means we'd rewrite the globals treatment in target code :). Alex