From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KjfhJ-0000Uo-5C for qemu-devel@nongnu.org; Sat, 27 Sep 2008 15:43:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KjfhH-0000UU-RW for qemu-devel@nongnu.org; Sat, 27 Sep 2008 15:43:20 -0400 Received: from [199.232.76.173] (port=60602 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KjfhH-0000UR-KY for qemu-devel@nongnu.org; Sat, 27 Sep 2008 15:43:19 -0400 Received: from savannah.gnu.org ([199.232.41.3]:41571 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KjfhH-0001V3-Kg for qemu-devel@nongnu.org; Sat, 27 Sep 2008 15:43:19 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KjfhG-0002xK-TJ for qemu-devel@nongnu.org; Sat, 27 Sep 2008 19:43:19 +0000 Received: from blueswir1 by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KjfhG-0002xF-Ju for qemu-devel@nongnu.org; Sat, 27 Sep 2008 19:43:18 +0000 MIME-Version: 1.0 Errors-To: blueswir1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Blue Swirl Message-Id: Date: Sat, 27 Sep 2008 19:43:18 +0000 Subject: [Qemu-devel] [5332] Add mmu tlb demap support (Igor Kovalenko) 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 Revision: 5332 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5332 Author: blueswir1 Date: 2008-09-27 19:43:18 +0000 (Sat, 27 Sep 2008) Log Message: ----------- Add mmu tlb demap support (Igor Kovalenko) Modified Paths: -------------- trunk/target-sparc/op_helper.c Modified: trunk/target-sparc/op_helper.c =================================================================== --- trunk/target-sparc/op_helper.c 2008-09-27 15:32:41 UTC (rev 5331) +++ trunk/target-sparc/op_helper.c 2008-09-27 19:43:18 UTC (rev 5332) @@ -1941,6 +1941,8 @@ } case 0x55: // I-MMU data access { + // TODO: auto demap + unsigned int i = (addr >> 3) & 0x3f; env->itlb_tag[i] = env->immuregs[6]; @@ -1948,7 +1950,22 @@ return; } case 0x57: // I-MMU demap - // XXX + { + unsigned int i; + + for (i = 0; i < 64; i++) { + if ((env->itlb_tte[i] & 0x8000000000000000ULL) != 0) { + target_ulong mask = 0xffffffffffffe000ULL; + + mask <<= 3 * ((env->itlb_tte[i] >> 61) & 3); + if ((val & mask) == (env->itlb_tag[i] & mask)) { + env->itlb_tag[i] = 0; + env->itlb_tte[i] = 0; + } + return; + } + } + } return; case 0x58: // D-MMU regs { @@ -2018,6 +2035,23 @@ return; } case 0x5f: // D-MMU demap + { + unsigned int i; + + for (i = 0; i < 64; i++) { + if ((env->dtlb_tte[i] & 0x8000000000000000ULL) != 0) { + target_ulong mask = 0xffffffffffffe000ULL; + + mask <<= 3 * ((env->dtlb_tte[i] >> 61) & 3); + if ((val & mask) == (env->dtlb_tag[i] & mask)) { + env->dtlb_tag[i] = 0; + env->dtlb_tte[i] = 0; + } + return; + } + } + } + return; case 0x49: // Interrupt data receive // XXX return;