[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 09/25] Allow 5 mmu indexes.
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 09/25] Allow 5 mmu indexes. |
Date: |
Sun, 29 Mar 2009 01:37:29 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
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 <address@hidden>
> ---
> 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
address@hidden http://www.aurel32.net
- [Qemu-devel] [PATCH 19/25] Remove PALCODE_ declarations (unused)., (continued)
- [Qemu-devel] [PATCH 19/25] Remove PALCODE_ declarations (unused)., Tristan Gingold, 2009/03/24
- [Qemu-devel] [PATCH 20/25] alpha ld helpers now directly return the value., Tristan Gingold, 2009/03/24
- [Qemu-devel] [PATCH 21/25] Add alpha_cpu_list., Tristan Gingold, 2009/03/24
- [Qemu-devel] [PATCH 22/25] Alpha: lower parent irq when irq is lowered., Tristan Gingold, 2009/03/24
- [Qemu-devel] [PATCH 23/25] Move linux-user pal emulation to linux-user/, Tristan Gingold, 2009/03/24
- [Qemu-devel] [PATCH 24/25] Correctly decode hw_ld/hw_st opcodes for all alpha implementations., Tristan Gingold, 2009/03/24
- [Qemu-devel] [PATCH 25/25] Add full emulation for 21264., Tristan Gingold, 2009/03/24
- Re: [Qemu-devel] [PATCH 13/25] Add 21272 chipset (memory and pci controller for alpha), Robert Reif, 2009/03/24
- Re: [Qemu-devel] [PATCH 13/25] Add 21272 chipset (memory and pci controller for alpha), Tristan Gingold, 2009/03/25
- Re: [Qemu-devel] [PATCH 13/25] Add 21272 chipset (memory and pci controller for alpha), Tristan Gingold, 2009/03/25
- Re: [Qemu-devel] [PATCH 09/25] Allow 5 mmu indexes.,
Aurelien Jarno <=
Re: [Qemu-devel] [PATCH 01/25] Add support for multi-level phys map., Paul Brook, 2009/03/24
Re: [Qemu-devel] [PATCH 0/25]: add alpha es40 system emulation (v3), Brian Wheeler, 2009/03/24
Re: [Qemu-devel] [PATCH 0/25]: add alpha es40 system emulation (v3), Aurelien Jarno, 2009/03/28