[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/10] target/mips: Pass directory/leaf shift values to walk_direc
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 07/10] target/mips: Pass directory/leaf shift values to walk_directory() |
Date: |
Tue, 25 Jul 2023 16:58:26 +0200 |
We already evaluated directory_shift and leaf_shift in
page_table_walk_refill(), no need to do that again: pass
as argument.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20230717213504.24777-2-philmd@linaro.org>
---
target/mips/tcg/sysemu/tlb_helper.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/target/mips/tcg/sysemu/tlb_helper.c
b/target/mips/tcg/sysemu/tlb_helper.c
index e5e1e9dd3f..e7be649b02 100644
--- a/target/mips/tcg/sysemu/tlb_helper.c
+++ b/target/mips/tcg/sysemu/tlb_helper.c
@@ -623,18 +623,13 @@ static uint64_t get_tlb_entry_layout(CPUMIPSState *env,
uint64_t entry,
static int walk_directory(CPUMIPSState *env, uint64_t *vaddr,
int directory_index, bool *huge_page, bool *hgpg_directory_hit,
- uint64_t *pw_entrylo0, uint64_t *pw_entrylo1)
+ uint64_t *pw_entrylo0, uint64_t *pw_entrylo1,
+ int directory_shift, int leaf_shift)
{
int dph = (env->CP0_PWCtl >> CP0PC_DPH) & 0x1;
int psn = (env->CP0_PWCtl >> CP0PC_PSN) & 0x3F;
int hugepg = (env->CP0_PWCtl >> CP0PC_HUGEPG) & 0x1;
int pf_ptew = (env->CP0_PWField >> CP0PF_PTEW) & 0x3F;
- int ptew = (env->CP0_PWSize >> CP0PS_PTEW) & 0x3F;
- int native_shift = (((env->CP0_PWSize >> CP0PS_PS) & 1) == 0) ? 2 : 3;
- int directory_shift = (ptew > 1) ? -1 :
- (hugepg && (ptew == 1)) ? native_shift + 1 : native_shift;
- int leaf_shift = (ptew > 1) ? -1 :
- (ptew == 1) ? native_shift + 1 : native_shift;
uint32_t direntry_size = 1 << (directory_shift + 3);
uint32_t leafentry_size = 1 << (leaf_shift + 3);
uint64_t entry;
@@ -779,7 +774,8 @@ static bool page_table_walk_refill(CPUMIPSState *env, vaddr
address,
if (gdw > 0) {
vaddr |= goffset;
switch (walk_directory(env, &vaddr, pf_gdw, &huge_page, &hgpg_gdhit,
- &pw_entrylo0, &pw_entrylo1))
+ &pw_entrylo0, &pw_entrylo1,
+ directory_shift, leaf_shift))
{
case 0:
return false;
@@ -795,7 +791,8 @@ static bool page_table_walk_refill(CPUMIPSState *env, vaddr
address,
if (udw > 0) {
vaddr |= uoffset;
switch (walk_directory(env, &vaddr, pf_udw, &huge_page, &hgpg_udhit,
- &pw_entrylo0, &pw_entrylo1))
+ &pw_entrylo0, &pw_entrylo1,
+ directory_shift, leaf_shift))
{
case 0:
return false;
@@ -811,7 +808,8 @@ static bool page_table_walk_refill(CPUMIPSState *env, vaddr
address,
if (mdw > 0) {
vaddr |= moffset;
switch (walk_directory(env, &vaddr, pf_mdw, &huge_page, &hgpg_mdhit,
- &pw_entrylo0, &pw_entrylo1))
+ &pw_entrylo0, &pw_entrylo1,
+ directory_shift, leaf_shift))
{
case 0:
return false;
--
2.38.1
- [PULL 00/10] Misc fixes for 2023-07-25, Philippe Mathieu-Daudé, 2023/07/25
- [PULL 01/10] hw/sd/sdhci: Do not force sdhci_mmio_*_ops onto all SD controllers, Philippe Mathieu-Daudé, 2023/07/25
- [PULL 02/10] hw/mips: Improve the default USB settings in the loongson3-virt machine, Philippe Mathieu-Daudé, 2023/07/25
- [PULL 03/10] hw/char/escc: Implement loopback mode, Philippe Mathieu-Daudé, 2023/07/25
- [PULL 04/10] target/mips/mxu: Replace magic array size by its definition, Philippe Mathieu-Daudé, 2023/07/25
- [PULL 05/10] target/mips/mxu: Avoid overrun in gen_mxu_S32SLT(), Philippe Mathieu-Daudé, 2023/07/25
- [PULL 06/10] target/mips/mxu: Avoid overrun in gen_mxu_q8adde(), Philippe Mathieu-Daudé, 2023/07/25
- [PULL 07/10] target/mips: Pass directory/leaf shift values to walk_directory(),
Philippe Mathieu-Daudé <=
- [PULL 08/10] target/mips: Avoid shift by negative number in page_table_walk_refill(), Philippe Mathieu-Daudé, 2023/07/25
- [PULL 09/10] target/sparc: Handle FPRS correctly on big-endian hosts, Philippe Mathieu-Daudé, 2023/07/25
- [PULL 10/10] target/tricore: Rename tricore_feature, Philippe Mathieu-Daudé, 2023/07/25
- Re: [PULL 00/10] Misc fixes for 2023-07-25, Peter Maydell, 2023/07/25