From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LrJ8k-0008V9-83 for qemu-devel@nongnu.org; Tue, 07 Apr 2009 17:47:30 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LrJ8i-0008Ux-Of for qemu-devel@nongnu.org; Tue, 07 Apr 2009 17:47:29 -0400 Received: from [199.232.76.173] (port=58132 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LrJ8i-0008Uu-Ji for qemu-devel@nongnu.org; Tue, 07 Apr 2009 17:47:28 -0400 Received: from savannah.gnu.org ([199.232.41.3]:51582 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 1LrJ8i-0003G3-94 for qemu-devel@nongnu.org; Tue, 07 Apr 2009 17:47:28 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1LrJ8h-0003Ee-Pr for qemu-devel@nongnu.org; Tue, 07 Apr 2009 21:47:27 +0000 Received: from aurel32 by cvs.savannah.gnu.org with local (Exim 4.69) (envelope-from ) id 1LrJ8h-0003EB-D5 for qemu-devel@nongnu.org; Tue, 07 Apr 2009 21:47:27 +0000 MIME-Version: 1.0 Errors-To: aurel32 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Aurelien Jarno Message-Id: Date: Tue, 07 Apr 2009 21:47:27 +0000 Subject: [Qemu-devel] [7028] Allow 5 mmu indexes. 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: 7028 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=7028 Author: aurel32 Date: 2009-04-07 21:47:27 +0000 (Tue, 07 Apr 2009) Log Message: ----------- Allow 5 mmu indexes. This is necessary for alpha because it has 4 protection levels and pal mode. Signed-off-by: Tristan Gingold Signed-off-by: Aurelien Jarno Modified Paths: -------------- trunk/exec.c trunk/softmmu_exec.h Modified: trunk/exec.c =================================================================== --- trunk/exec.c 2009-04-07 21:44:52 UTC (rev 7027) +++ trunk/exec.c 2009-04-07 21:47:27 UTC (rev 7028) @@ -1734,12 +1734,18 @@ env->tlb_table[2][i].addr_read = -1; env->tlb_table[2][i].addr_write = -1; env->tlb_table[2][i].addr_code = -1; -#if (NB_MMU_MODES == 4) +#endif +#if (NB_MMU_MODES >= 4) env->tlb_table[3][i].addr_read = -1; env->tlb_table[3][i].addr_write = -1; env->tlb_table[3][i].addr_code = -1; #endif +#if (NB_MMU_MODES >= 5) + env->tlb_table[4][i].addr_read = -1; + env->tlb_table[4][i].addr_write = -1; + env->tlb_table[4][i].addr_code = -1; #endif + } memset (env->tb_jmp_cache, 0, TB_JMP_CACHE_SIZE * sizeof (void *)); @@ -1783,9 +1789,12 @@ tlb_flush_entry(&env->tlb_table[1][i], addr); #if (NB_MMU_MODES >= 3) tlb_flush_entry(&env->tlb_table[2][i], addr); -#if (NB_MMU_MODES == 4) +#endif +#if (NB_MMU_MODES >= 4) tlb_flush_entry(&env->tlb_table[3][i], addr); #endif +#if (NB_MMU_MODES >= 5) + tlb_flush_entry(&env->tlb_table[4][i], addr); #endif tlb_flush_jmp_cache(env, addr); @@ -1869,10 +1878,14 @@ #if (NB_MMU_MODES >= 3) for(i = 0; i < CPU_TLB_SIZE; i++) tlb_reset_dirty_range(&env->tlb_table[2][i], start1, length); -#if (NB_MMU_MODES == 4) +#endif +#if (NB_MMU_MODES >= 4) for(i = 0; i < CPU_TLB_SIZE; i++) tlb_reset_dirty_range(&env->tlb_table[3][i], start1, length); #endif +#if (NB_MMU_MODES >= 5) + for(i = 0; i < CPU_TLB_SIZE; i++) + tlb_reset_dirty_range(&env->tlb_table[4][i], start1, length); #endif } } @@ -1918,10 +1931,14 @@ #if (NB_MMU_MODES >= 3) for(i = 0; i < CPU_TLB_SIZE; i++) tlb_update_dirty(&env->tlb_table[2][i]); -#if (NB_MMU_MODES == 4) +#endif +#if (NB_MMU_MODES >= 4) for(i = 0; i < CPU_TLB_SIZE; i++) tlb_update_dirty(&env->tlb_table[3][i]); #endif +#if (NB_MMU_MODES >= 5) + for(i = 0; i < CPU_TLB_SIZE; i++) + tlb_update_dirty(&env->tlb_table[4][i]); #endif } @@ -1943,9 +1960,12 @@ tlb_set_dirty1(&env->tlb_table[1][i], vaddr); #if (NB_MMU_MODES >= 3) tlb_set_dirty1(&env->tlb_table[2][i], vaddr); -#if (NB_MMU_MODES == 4) +#endif +#if (NB_MMU_MODES >= 4) tlb_set_dirty1(&env->tlb_table[3][i], vaddr); #endif +#if (NB_MMU_MODES >= 5) + tlb_set_dirty1(&env->tlb_table[4][i], vaddr); #endif } Modified: trunk/softmmu_exec.h =================================================================== --- trunk/softmmu_exec.h 2009-04-07 21:44:52 UTC (rev 7027) +++ trunk/softmmu_exec.h 2009-04-07 21:47:27 UTC (rev 7028) @@ -60,6 +60,7 @@ #include "softmmu_header.h" #undef ACCESS_TYPE #undef MEMSUFFIX +#endif /* (NB_MMU_MODES >= 3) */ #if (NB_MMU_MODES >= 4) @@ -78,13 +79,31 @@ #include "softmmu_header.h" #undef ACCESS_TYPE #undef MEMSUFFIX +#endif /* (NB_MMU_MODES >= 4) */ -#if (NB_MMU_MODES > 4) -#error "NB_MMU_MODES > 4 is not supported for now" -#endif /* (NB_MMU_MODES > 4) */ -#endif /* (NB_MMU_MODES == 4) */ -#endif /* (NB_MMU_MODES >= 3) */ +#if (NB_MMU_MODES >= 5) +#define ACCESS_TYPE 4 +#define MEMSUFFIX MMU_MODE4_SUFFIX +#define DATA_SIZE 1 +#include "softmmu_header.h" + +#define DATA_SIZE 2 +#include "softmmu_header.h" + +#define DATA_SIZE 4 +#include "softmmu_header.h" + +#define DATA_SIZE 8 +#include "softmmu_header.h" +#undef ACCESS_TYPE +#undef MEMSUFFIX +#endif /* (NB_MMU_MODES >= 5) */ + +#if (NB_MMU_MODES > 5) +#error "NB_MMU_MODES > 5 is not supported for now" +#endif /* (NB_MMU_MODES > 5) */ + /* these access are slower, they must be as rare as possible */ #define ACCESS_TYPE (NB_MMU_MODES) #define MEMSUFFIX _data