From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Lnj1q-0003pp-JP for qemu-devel@nongnu.org; Sat, 28 Mar 2009 20:37:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Lnj1p-0003o3-Kr for qemu-devel@nongnu.org; Sat, 28 Mar 2009 20:37:34 -0400 Received: from [199.232.76.173] (port=39998 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Lnj1p-0003nf-Cs for qemu-devel@nongnu.org; Sat, 28 Mar 2009 20:37:33 -0400 Received: from hall.aurel32.net ([88.191.82.174]:49050) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Lnj1o-0008Sf-Sg for qemu-devel@nongnu.org; Sat, 28 Mar 2009 20:37:33 -0400 Date: Sun, 29 Mar 2009 01:37:29 +0100 From: Aurelien Jarno Subject: Re: [Qemu-devel] [PATCH 09/25] Allow 5 mmu indexes. Message-ID: <20090329003729.GI14328@volta.aurel32.net> References: <1237909687-31711-1-git-send-email-gingold@adacore.com> <1237909687-31711-2-git-send-email-gingold@adacore.com> <1237909687-31711-3-git-send-email-gingold@adacore.com> <1237909687-31711-4-git-send-email-gingold@adacore.com> <1237909687-31711-5-git-send-email-gingold@adacore.com> <1237909687-31711-6-git-send-email-gingold@adacore.com> <1237909687-31711-7-git-send-email-gingold@adacore.com> <1237909687-31711-8-git-send-email-gingold@adacore.com> <1237909687-31711-9-git-send-email-gingold@adacore.com> <1237909687-31711-10-git-send-email-gingold@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <1237909687-31711-10-git-send-email-gingold@adacore.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Tristan Gingold Cc: qemu-devel@nongnu.org On Tue, Mar 24, 2009 at 04:47:51PM +0100, Tristan Gingold wrote: > This is necessary for alpha because it has 4 protection levels and pal mode. > > Signed-off-by: Tristan Gingold > --- > exec.c | 30 +++++++++++++++++++++++++----- > softmmu_exec.h | 29 ++++++++++++++++++++++++----- > 2 files changed, 49 insertions(+), 10 deletions(-) > > diff --git a/exec.c b/exec.c > index 12d35b0..472b6c4 100644 > --- a/exec.c > +++ b/exec.c > @@ -1760,12 +1760,18 @@ void tlb_flush(CPUState *env, int flush_global) > 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 *)); > @@ -1809,9 +1815,12 @@ void tlb_flush_page(CPUState *env, target_ulong addr) > 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); > @@ -1895,10 +1904,14 @@ void cpu_physical_memory_reset_dirty(ram_addr_t start, ram_addr_t end, > #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 > } > } > @@ -1944,10 +1957,14 @@ void cpu_tlb_update_dirty(CPUState *env) > #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 > } > > @@ -1969,9 +1986,12 @@ static inline void tlb_set_dirty(CPUState *env, target_ulong vaddr) > 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 > } > > diff --git a/softmmu_exec.h b/softmmu_exec.h > index 9cc4535..8eaa0ad 100644 > --- a/softmmu_exec.h > +++ b/softmmu_exec.h > @@ -60,6 +60,7 @@ > #include "softmmu_header.h" > #undef ACCESS_TYPE > #undef MEMSUFFIX > +#endif /* (NB_MMU_MODES >= 3) */ > > #if (NB_MMU_MODES >= 4) > > @@ -78,12 +79,30 @@ > #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 >= 4) */ That should be 5 here. > +#if (NB_MMU_MODES > 5) > +#error "NB_MMU_MODES > 5 is not supported for now" > +#endif /* (NB_MMU_MODES > 5) */ > -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net