From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Hq8J0-00074p-UP for qemu-devel@nongnu.org; Mon, 21 May 2007 09:52:10 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Hq8Ix-0006zl-Tg for qemu-devel@nongnu.org; Mon, 21 May 2007 09:52:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hq8Ix-0006zd-9C for qemu-devel@nongnu.org; Mon, 21 May 2007 09:52:07 -0400 Received: from ug-out-1314.google.com ([66.249.92.173]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Hq8Iw-0001Y4-Sn for qemu-devel@nongnu.org; Mon, 21 May 2007 09:52:07 -0400 Received: by ug-out-1314.google.com with SMTP id j40so912268ugd for ; Mon, 21 May 2007 06:52:05 -0700 (PDT) Message-ID: Date: Mon, 21 May 2007 16:52:05 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH, MIPS64] 64-bit addressing fixes In-Reply-To: <20070520230147.GA14148@amd64.aurel32.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20070520230147.GA14148@amd64.aurel32.net> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On 5/21/07, Aurelien Jarno wrote: > dyngen currently does not support passing 64-bit values to PARAM1 and > PARAM2, they are limited to 32-bit. This patch creates a new op_set64 > function to set a register with a 64-bit value, by passing high and low > word in PARAM1 and PARAM2. The same thing is done for the > op_save_btarget and op_save_pc instructions. Unfortunately it is not > possible to pass the value via T0, T1 or T2, and then move it to btarget > or pc, because those functions are used in save_cpu_state where T0, T1 > or T2 may already be used. I don't know MIPS, but perhaps you could try this trick used in Sparc: static inline void gen_jmp_im(target_ulong pc) { #ifdef TARGET_SPARC64 if (pc == (uint32_t)pc) { gen_op_jmp_im(pc); } else { gen_op_jmp_im64(pc >> 32, pc); } #else gen_op_jmp_im(pc); #endif }