All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: Tristan Gingold <gingold@adacore.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 09/25] Allow 5 mmu indexes.
Date: Sun, 29 Mar 2009 01:37:29 +0100	[thread overview]
Message-ID: <20090329003729.GI14328@volta.aurel32.net> (raw)
In-Reply-To: <1237909687-31711-10-git-send-email-gingold@adacore.com>

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 <gingold@adacore.com>
> ---
>  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

  parent reply	other threads:[~2009-03-29  0:37 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-24 15:47 [Qemu-devel] [PATCH 0/25]: add alpha es40 system emulation (v3) Tristan Gingold
2009-03-24 15:47 ` [Qemu-devel] [PATCH 01/25] Add support for multi-level phys map Tristan Gingold
2009-03-24 15:47   ` [Qemu-devel] [PATCH 02/25] Fix bug: palcode is at least 6 bits Tristan Gingold
2009-03-24 15:47     ` [Qemu-devel] [PATCH 03/25] Fix bug: do not mask address LSBs for ldwu Tristan Gingold
2009-03-24 15:47       ` [Qemu-devel] [PATCH 04/25] Fix bug: integer conditionnal branch offset is 21 bits wide Tristan Gingold
2009-03-24 15:47         ` [Qemu-devel] [PATCH 05/25] bug fix: avoid nop to override next instruction Tristan Gingold
2009-03-24 15:47           ` [Qemu-devel] [PATCH 06/25] Fix temp free for hw_st Tristan Gingold
2009-03-24 15:47             ` [Qemu-devel] [PATCH 07/25] Increase Alpha physical address size to 44 bits Tristan Gingold
2009-03-24 15:47               ` [Qemu-devel] [PATCH 08/25] Alpha: set target page size to 13 bits Tristan Gingold
2009-03-24 15:47                 ` [Qemu-devel] [PATCH 09/25] Allow 5 mmu indexes Tristan Gingold
2009-03-24 15:47                   ` [Qemu-devel] [PATCH 10/25] Split cpu_mmu_index into cpu_mmu_index_data and cpu_mmu_index_code Tristan Gingold
2009-03-24 15:47                     ` [Qemu-devel] [PATCH 11/25] Add square wave output support Tristan Gingold
2009-03-24 15:47                       ` [Qemu-devel] [PATCH 12/25] Add ali1543 super IO pci device Tristan Gingold
2009-03-24 15:47                         ` [Qemu-devel] [PATCH 13/25] Add 21272 chipset (memory and pci controller for alpha) Tristan Gingold
2009-03-24 15:47                           ` [Qemu-devel] [PATCH 14/25] Add target-alpha/machine.c and hw/es40.c for es40 machine emulation Tristan Gingold
2009-03-24 15:47                             ` [Qemu-devel] [PATCH 15/25] Move softmmu_helper.h from exec.h to op_helper.c on alpha Tristan Gingold
2009-03-24 15:47                               ` [Qemu-devel] [PATCH 16/25] Document which IPR are used by 21264 Tristan Gingold
2009-03-24 15:47                                 ` [Qemu-devel] [PATCH 17/25] tb_flush helper should flush the tb (and not the tlb) Tristan Gingold
2009-03-24 15:48                                   ` [Qemu-devel] [PATCH 18/25] Add instruction name in comments for hw_ld opcode Tristan Gingold
2009-03-24 15:48                                     ` [Qemu-devel] [PATCH 19/25] Remove PALCODE_ declarations (unused) Tristan Gingold
2009-03-24 15:48                                       ` [Qemu-devel] [PATCH 20/25] alpha ld helpers now directly return the value Tristan Gingold
2009-03-24 15:48                                         ` [Qemu-devel] [PATCH 21/25] Add alpha_cpu_list Tristan Gingold
2009-03-24 15:48                                           ` [Qemu-devel] [PATCH 22/25] Alpha: lower parent irq when irq is lowered Tristan Gingold
2009-03-24 15:48                                             ` [Qemu-devel] [PATCH 23/25] Move linux-user pal emulation to linux-user/ Tristan Gingold
2009-03-24 15:48                                               ` [Qemu-devel] [PATCH 24/25] Correctly decode hw_ld/hw_st opcodes for all alpha implementations Tristan Gingold
2009-03-24 15:48                                                 ` [Qemu-devel] [PATCH 25/25] Add full emulation for 21264 Tristan Gingold
2009-03-24 23:00                           ` [Qemu-devel] [PATCH 13/25] Add 21272 chipset (memory and pci controller for alpha) Robert Reif
2009-03-25  7:58                             ` Tristan Gingold
2009-03-25  8:09                             ` Tristan Gingold
2009-03-29  0:37                   ` Aurelien Jarno [this message]
2009-03-24 16:46   ` [Qemu-devel] [PATCH 01/25] Add support for multi-level phys map Paul Brook
2009-03-24 19:42 ` [Qemu-devel] [PATCH 0/25]: add alpha es40 system emulation (v3) Brian Wheeler
2009-03-25  7:37   ` Tristan Gingold
2009-03-25 12:43     ` Brian Wheeler
2009-03-25 12:53       ` Tristan Gingold
2009-03-29  0:14 ` Aurelien Jarno
2009-03-29  0:31   ` Aurelien Jarno

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090329003729.GI14328@volta.aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=gingold@adacore.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.