mbox series

[00/28] cputlb: Remove support for MMU_MODE*_SUFFIX

Message ID 20191212040039.26546-1-richard.henderson@linaro.org
Headers show
Series cputlb: Remove support for MMU_MODE*_SUFFIX | expand

Message

Richard Henderson Dec. 12, 2019, 4 a.m. UTC
This is part of a project to raise the limit on NB_MMU_MODES.

One of those is in cpu_ldst.h, in support of MMU_MODE*_SUFFIX.
While this could be extended, it's not the best interface for
such things.  Better is a single interface that allows a variable
mmu_idx.  The best exemplars of that is the usage in target/mips
and target/ppc.

In the process, I tried to clean up the implementation of these
functions for softmmu and user-only.


r~


Cc: Aleksandar Markovic <amarkovic@wavecomp.com>
Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Chris Wulff <crwulff@gmail.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: David Hildenbrand <david@redhat.com>
Cc: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Cc: Laurent Vivier <laurent@vivier.eu>
Cc: Marek Vasut <marex@denx.de>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>


Richard Henderson (28):
  target/xtensa: Use probe_access for itlb_hit_test
  cputlb: Use trace_mem_get_info instead of trace_mem_build_info
  trace: Remove trace_mem_build_info_no_se_[bl]e
  cputlb: Move body of cpu_ldst_template.h out of line
  translator: Use cpu_ld*_code instead of open-coding
  cputlb: Rename helper_ret_ld*_cmmu to cpu_ld*_code
  cputlb: Provide cpu_(ld,st}*_mmuidx_ra for user-only
  target/i386: Use cpu_*_mmuidx_ra instead of templates
  target/s390x: Include tcg.h in mem_helper.c
  target/arm: Include tcg.h in sve_helper.c
  accel/tcg: Include tcg.h in tcg-runtime.c
  linux-user: Include tcg.h in syscall.c
  linux-user: Include trace-root.h in syscall-trace.h
  cputlb: Expand cpu_ldst_useronly_template.h in user-exec.c
  target/nios2: Remove MMU_MODE{0,1}_SUFFIX
  target/alpha: Remove MMU_MODE{0,1}_SUFFIX
  target/cris: Remove MMU_MODE{0,1}_SUFFIX
  target/i386: Remove MMU_MODE{0,1,2}_SUFFIX
  target/microblaze: Remove MMU_MODE{0,1,2}_SUFFIX
  target/sh4: Remove MMU_MODE{0,1}_SUFFIX
  target/unicore32: Remove MMU_MODE{0,1}_SUFFIX
  target/xtensa: Remove MMU_MODE{0,1,2,3}_SUFFIX
  target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MODE{0,1}_SUFFIX
  target/mips: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX
  target/s390x: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX
  target/ppc: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX
  cputlb: Remove support for MMU_MODE*_SUFFIX
  cputlb: Expand cpu_ldst_template.h in cputlb.c

 accel/tcg/atomic_template.h               |  67 ++--
 include/exec/cpu_ldst.h                   | 448 +++++++---------------
 include/exec/cpu_ldst_template.h          | 211 ----------
 include/exec/cpu_ldst_useronly_template.h | 159 --------
 include/exec/translator.h                 |  48 +--
 include/user/syscall-trace.h              |   2 +
 target/alpha/cpu.h                        |   2 -
 target/cris/cpu.h                         |   2 -
 target/i386/cpu.h                         |   3 -
 target/m68k/cpu.h                         |   2 -
 target/microblaze/cpu.h                   |   3 -
 target/mips/cpu.h                         |   4 -
 target/nios2/cpu.h                        |   2 -
 target/ppc/cpu.h                          |   2 -
 target/s390x/cpu.h                        |   5 -
 target/sh4/cpu.h                          |   2 -
 target/unicore32/cpu.h                    |   2 -
 target/xtensa/cpu.h                       |   4 -
 tcg/tcg.h                                 |  29 --
 trace/mem-internal.h                      |  17 -
 accel/tcg/cputlb.c                        | 315 +++++++++++----
 accel/tcg/tcg-runtime.c                   |   1 +
 accel/tcg/user-exec.c                     | 236 ++++++++++++
 linux-user/syscall.c                      |   1 +
 target/arm/sve_helper.c                   |   1 +
 target/i386/seg_helper.c                  |  75 ++--
 target/m68k/op_helper.c                   |   5 +
 target/mips/op_helper.c                   | 182 +++------
 target/ppc/mem_helper.c                   |  11 +-
 target/s390x/mem_helper.c                 |   6 +
 target/xtensa/mmu_helper.c                |   5 +-
 docs/devel/loads-stores.rst               |   4 +-
 32 files changed, 788 insertions(+), 1068 deletions(-)
 delete mode 100644 include/exec/cpu_ldst_template.h
 delete mode 100644 include/exec/cpu_ldst_useronly_template.h

-- 
2.20.1

Comments

Aleksandar Markovic Dec. 12, 2019, 8:34 p.m. UTC | #1
On Thursday, December 12, 2019, Richard Henderson <
richard.henderson@linaro.org> wrote:

> This is part of a project to raise the limit on NB_MMU_MODES.

>

> One of those is in cpu_ldst.h, in support of MMU_MODE*_SUFFIX.

> While this could be extended, it's not the best interface for

> such things.  Better is a single interface that allows a variable

> mmu_idx.  The best exemplars of that is the usage in target/mips

> and target/ppc.

>

> In the process, I tried to clean up the implementation of these

> functions for softmmu and user-only.

>

>

Just a suggestion: Given the nature of the series, please consider some
additional changes to:

 docs/devel/loads-stores.rst

Aleksandar


> r~

>

>

> Cc: Aleksandar Markovic <amarkovic@wavecomp.com>

> Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com>

> Cc: Aurelien Jarno <aurelien@aurel32.net>

> Cc: Chris Wulff <crwulff@gmail.com>

> Cc: David Gibson <david@gibson.dropbear.id.au>

> Cc: David Hildenbrand <david@redhat.com>

> Cc: Edgar E. Iglesias <edgar.iglesias@gmail.com>

> Cc: Eduardo Habkost <ehabkost@redhat.com>

> Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>

> Cc: Laurent Vivier <laurent@vivier.eu>

> Cc: Marek Vasut <marex@denx.de>

> Cc: Max Filippov <jcmvbkbc@gmail.com>

> Cc: Paolo Bonzini <pbonzini@redhat.com>

> Cc: Peter Maydell <peter.maydell@linaro.org>

>

>

> Richard Henderson (28):

>   target/xtensa: Use probe_access for itlb_hit_test

>   cputlb: Use trace_mem_get_info instead of trace_mem_build_info

>   trace: Remove trace_mem_build_info_no_se_[bl]e

>   cputlb: Move body of cpu_ldst_template.h out of line

>   translator: Use cpu_ld*_code instead of open-coding

>   cputlb: Rename helper_ret_ld*_cmmu to cpu_ld*_code

>   cputlb: Provide cpu_(ld,st}*_mmuidx_ra for user-only

>   target/i386: Use cpu_*_mmuidx_ra instead of templates

>   target/s390x: Include tcg.h in mem_helper.c

>   target/arm: Include tcg.h in sve_helper.c

>   accel/tcg: Include tcg.h in tcg-runtime.c

>   linux-user: Include tcg.h in syscall.c

>   linux-user: Include trace-root.h in syscall-trace.h

>   cputlb: Expand cpu_ldst_useronly_template.h in user-exec.c

>   target/nios2: Remove MMU_MODE{0,1}_SUFFIX

>   target/alpha: Remove MMU_MODE{0,1}_SUFFIX

>   target/cris: Remove MMU_MODE{0,1}_SUFFIX

>   target/i386: Remove MMU_MODE{0,1,2}_SUFFIX

>   target/microblaze: Remove MMU_MODE{0,1,2}_SUFFIX

>   target/sh4: Remove MMU_MODE{0,1}_SUFFIX

>   target/unicore32: Remove MMU_MODE{0,1}_SUFFIX

>   target/xtensa: Remove MMU_MODE{0,1,2,3}_SUFFIX

>   target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MODE{0,1}_SUFFIX

>   target/mips: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX

>   target/s390x: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX

>   target/ppc: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX

>   cputlb: Remove support for MMU_MODE*_SUFFIX

>   cputlb: Expand cpu_ldst_template.h in cputlb.c

>

>  accel/tcg/atomic_template.h               |  67 ++--

>  include/exec/cpu_ldst.h                   | 448 +++++++---------------

>  include/exec/cpu_ldst_template.h          | 211 ----------

>  include/exec/cpu_ldst_useronly_template.h | 159 --------

>  include/exec/translator.h                 |  48 +--

>  include/user/syscall-trace.h              |   2 +

>  target/alpha/cpu.h                        |   2 -

>  target/cris/cpu.h                         |   2 -

>  target/i386/cpu.h                         |   3 -

>  target/m68k/cpu.h                         |   2 -

>  target/microblaze/cpu.h                   |   3 -

>  target/mips/cpu.h                         |   4 -

>  target/nios2/cpu.h                        |   2 -

>  target/ppc/cpu.h                          |   2 -

>  target/s390x/cpu.h                        |   5 -

>  target/sh4/cpu.h                          |   2 -

>  target/unicore32/cpu.h                    |   2 -

>  target/xtensa/cpu.h                       |   4 -

>  tcg/tcg.h                                 |  29 --

>  trace/mem-internal.h                      |  17 -

>  accel/tcg/cputlb.c                        | 315 +++++++++++----

>  accel/tcg/tcg-runtime.c                   |   1 +

>  accel/tcg/user-exec.c                     | 236 ++++++++++++

>  linux-user/syscall.c                      |   1 +

>  target/arm/sve_helper.c                   |   1 +

>  target/i386/seg_helper.c                  |  75 ++--

>  target/m68k/op_helper.c                   |   5 +

>  target/mips/op_helper.c                   | 182 +++------

>  target/ppc/mem_helper.c                   |  11 +-

>  target/s390x/mem_helper.c                 |   6 +

>  target/xtensa/mmu_helper.c                |   5 +-

>  docs/devel/loads-stores.rst               |   4 +-

>  32 files changed, 788 insertions(+), 1068 deletions(-)

>  delete mode 100644 include/exec/cpu_ldst_template.h

>  delete mode 100644 include/exec/cpu_ldst_useronly_template.h

>

> --

> 2.20.1

>

>

>
<br><br>On Thursday, December 12, 2019, Richard Henderson &lt;<a href="mailto:richard.henderson@linaro.org">richard.henderson@linaro.org</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is part of a project to raise the limit on NB_MMU_MODES.<br>
<br>
One of those is in cpu_ldst.h, in support of MMU_MODE*_SUFFIX.<br>
While this could be extended, it&#39;s not the best interface for<br>
such things.  Better is a single interface that allows a variable<br>
mmu_idx.  The best exemplars of that is the usage in target/mips<br>
and target/ppc.<br>
<br>
In the process, I tried to clean up the implementation of these<br>
functions for softmmu and user-only.<br>
<br></blockquote><div><br></div><div>Just a suggestion: Given the nature of the series, please consider some additional changes to:</div><div><br></div><div><span style="color:rgb(34,34,34);font-size:14px;line-height:22.1200008392334px"> docs/devel/loads-stores.rst </span> <br></div><div><br></div><div>Aleksandar</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
r~<br>
<br>
<br>
Cc: Aleksandar Markovic &lt;<a href="mailto:amarkovic@wavecomp.com">amarkovic@wavecomp.com</a>&gt;<br>
Cc: Aleksandar Rikalo &lt;<a href="mailto:aleksandar.rikalo@rt-rk.com">aleksandar.rikalo@rt-rk.com</a>&gt;<br>
Cc: Aurelien Jarno &lt;<a href="mailto:aurelien@aurel32.net">aurelien@aurel32.net</a>&gt;<br>
Cc: Chris Wulff &lt;<a href="mailto:crwulff@gmail.com">crwulff@gmail.com</a>&gt;<br>
Cc: David Gibson &lt;<a href="mailto:david@gibson.dropbear.id.au">david@gibson.dropbear.id.au</a>&gt;<br>
Cc: David Hildenbrand &lt;<a href="mailto:david@redhat.com">david@redhat.com</a>&gt;<br>
Cc: Edgar E. Iglesias &lt;<a href="mailto:edgar.iglesias@gmail.com">edgar.iglesias@gmail.com</a>&gt;<br>
Cc: Eduardo Habkost &lt;<a href="mailto:ehabkost@redhat.com">ehabkost@redhat.com</a>&gt;<br>
Cc: Guan Xuetao &lt;<a href="mailto:gxt@mprc.pku.edu.cn">gxt@mprc.pku.edu.cn</a>&gt;<br>
Cc: Laurent Vivier &lt;<a href="mailto:laurent@vivier.eu">laurent@vivier.eu</a>&gt;<br>
Cc: Marek Vasut &lt;<a href="mailto:marex@denx.de">marex@denx.de</a>&gt;<br>
Cc: Max Filippov &lt;<a href="mailto:jcmvbkbc@gmail.com">jcmvbkbc@gmail.com</a>&gt;<br>
Cc: Paolo Bonzini &lt;<a href="mailto:pbonzini@redhat.com">pbonzini@redhat.com</a>&gt;<br>
Cc: Peter Maydell &lt;<a href="mailto:peter.maydell@linaro.org">peter.maydell@linaro.org</a>&gt;<br>
<br>
<br>
Richard Henderson (28):<br>
  target/xtensa: Use probe_access for itlb_hit_test<br>
  cputlb: Use trace_mem_get_info instead of trace_mem_build_info<br>
  trace: Remove trace_mem_build_info_no_se_[<wbr>bl]e<br>
  cputlb: Move body of cpu_ldst_template.h out of line<br>
  translator: Use cpu_ld*_code instead of open-coding<br>
  cputlb: Rename helper_ret_ld*_cmmu to cpu_ld*_code<br>
  cputlb: Provide cpu_(ld,st}*_mmuidx_ra for user-only<br>
  target/i386: Use cpu_*_mmuidx_ra instead of templates<br>
  target/s390x: Include tcg.h in mem_helper.c<br>
  target/arm: Include tcg.h in sve_helper.c<br>
  accel/tcg: Include tcg.h in tcg-runtime.c<br>
  linux-user: Include tcg.h in syscall.c<br>
  linux-user: Include trace-root.h in syscall-trace.h<br>
  cputlb: Expand cpu_ldst_useronly_template.h in user-exec.c<br>
  target/nios2: Remove MMU_MODE{0,1}_SUFFIX<br>
  target/alpha: Remove MMU_MODE{0,1}_SUFFIX<br>
  target/cris: Remove MMU_MODE{0,1}_SUFFIX<br>
  target/i386: Remove MMU_MODE{0,1,2}_SUFFIX<br>
  target/microblaze: Remove MMU_MODE{0,1,2}_SUFFIX<br>
  target/sh4: Remove MMU_MODE{0,1}_SUFFIX<br>
  target/unicore32: Remove MMU_MODE{0,1}_SUFFIX<br>
  target/xtensa: Remove MMU_MODE{0,1,2,3}_SUFFIX<br>
  target/m68k: Use cpu_*_mmuidx_ra instead of MMU_MODE{0,1}_SUFFIX<br>
  target/mips: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX<br>
  target/s390x: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX<br>
  target/ppc: Use cpu_*_mmuidx_ra instead of MMU_MODE*_SUFFIX<br>
  cputlb: Remove support for MMU_MODE*_SUFFIX<br>
  cputlb: Expand cpu_ldst_template.h in cputlb.c<br>
<br>
 accel/tcg/atomic_template.h               |  67 ++--<br>
 include/exec/cpu_ldst.h                   | 448 +++++++---------------<br>
 include/exec/cpu_ldst_<wbr>template.h          | 211 ----------<br>
 include/exec/cpu_ldst_<wbr>useronly_template.h | 159 --------<br>
 include/exec/translator.h                 |  48 +--<br>
 include/user/syscall-trace.h              |   2 +<br>
 target/alpha/cpu.h                        |   2 -<br>
 target/cris/cpu.h                         |   2 -<br>
 target/i386/cpu.h                         |   3 -<br>
 target/m68k/cpu.h                         |   2 -<br>
 target/microblaze/cpu.h                   |   3 -<br>
 target/mips/cpu.h                         |   4 -<br>
 target/nios2/cpu.h                        |   2 -<br>
 target/ppc/cpu.h                          |   2 -<br>
 target/s390x/cpu.h                        |   5 -<br>
 target/sh4/cpu.h                          |   2 -<br>
 target/unicore32/cpu.h                    |   2 -<br>
 target/xtensa/cpu.h                       |   4 -<br>
 tcg/tcg.h                                 |  29 --<br>
 trace/mem-internal.h                      |  17 -<br>
 accel/tcg/cputlb.c                        | 315 +++++++++++----<br>
 accel/tcg/tcg-runtime.c                   |   1 +<br>
 accel/tcg/user-exec.c                     | 236 ++++++++++++<br>
 linux-user/syscall.c                      |   1 +<br>
 target/arm/sve_helper.c                   |   1 +<br>
 target/i386/seg_helper.c                  |  75 ++--<br>
 target/m68k/op_helper.c                   |   5 +<br>
 target/mips/op_helper.c                   | 182 +++------<br>
 target/ppc/mem_helper.c                   |  11 +-<br>
 target/s390x/mem_helper.c                 |   6 +<br>
 target/xtensa/mmu_helper.c                |   5 +-<br>
 docs/devel/loads-stores.rst               |   4 +-<br>
 32 files changed, 788 insertions(+), 1068 deletions(-)<br>
 delete mode 100644 include/exec/cpu_ldst_<wbr>template.h<br>
 delete mode 100644 include/exec/cpu_ldst_<wbr>useronly_template.h<br>
<br>
-- <br>
2.20.1<br>
<br>
<br>
</blockquote>