Re: [PATCH 12/13] target/mips: Let get_seg*_physical_address() take MMUAccessType arg

2021-02-01 Thread Jiaxun Yang

在 2021/1/28 下午10:41, Philippe Mathieu-Daudé 写道:

get_physical_address() calls get_seg_physical_address() and
get_segctl_physical_address() passing a MMUAccessType type.
Let the prototypes use it as argument, as it is stricter than
an integer.

Signed-off-by: Philippe Mathieu-Daudé 


Reviewed-by: Jiaxun Yang 


---
  target/mips/tlb_helper.c | 11 ++-
  1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/target/mips/tlb_helper.c b/target/mips/tlb_helper.c
index 64e89591abc..14f5b1a0a9c 100644
--- a/target/mips/tlb_helper.c
+++ b/target/mips/tlb_helper.c
@@ -222,7 +222,7 @@ static int is_seg_am_mapped(unsigned int am, bool eu, int 
mmu_idx)
  
  static int get_seg_physical_address(CPUMIPSState *env, hwaddr *physical,

  int *prot, target_ulong real_address,
-int rw, int mmu_idx,
+MMUAccessType access_type, int mmu_idx,
  unsigned int am, bool eu,
  target_ulong segmask,
  hwaddr physical_base)
@@ -234,7 +234,8 @@ static int get_seg_physical_address(CPUMIPSState *env, 
hwaddr *physical,
  return mapped;
  } else if (mapped) {
  /* The segment is TLB mapped */
-return env->tlb->map_address(env, physical, prot, real_address, rw);
+return env->tlb->map_address(env, physical, prot, real_address,
+ access_type);
  } else {
  /* The segment is unmapped */
  *physical = physical_base | (real_address & segmask);
@@ -245,15 +246,15 @@ static int get_seg_physical_address(CPUMIPSState *env, 
hwaddr *physical,
  
  static int get_segctl_physical_address(CPUMIPSState *env, hwaddr *physical,

 int *prot, target_ulong real_address,
-   int rw, int mmu_idx,
+   MMUAccessType access_type, int mmu_idx,
 uint16_t segctl, target_ulong segmask)
  {
  unsigned int am = (segctl & CP0SC_AM_MASK) >> CP0SC_AM;
  bool eu = (segctl >> CP0SC_EU) & 1;
  hwaddr pa = ((hwaddr)segctl & CP0SC_PA_MASK) << 20;
  
-return get_seg_physical_address(env, physical, prot, real_address, rw,

-mmu_idx, am, eu, segmask,
+return get_seg_physical_address(env, physical, prot, real_address,
+access_type, mmu_idx, am, eu, segmask,
  pa & ~(hwaddr)segmask);
  }
  





[PATCH 12/13] target/mips: Let get_seg*_physical_address() take MMUAccessType arg

2021-01-28 Thread Philippe Mathieu-Daudé
get_physical_address() calls get_seg_physical_address() and
get_segctl_physical_address() passing a MMUAccessType type.
Let the prototypes use it as argument, as it is stricter than
an integer.

Signed-off-by: Philippe Mathieu-Daudé 
---
 target/mips/tlb_helper.c | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/target/mips/tlb_helper.c b/target/mips/tlb_helper.c
index 64e89591abc..14f5b1a0a9c 100644
--- a/target/mips/tlb_helper.c
+++ b/target/mips/tlb_helper.c
@@ -222,7 +222,7 @@ static int is_seg_am_mapped(unsigned int am, bool eu, int 
mmu_idx)
 
 static int get_seg_physical_address(CPUMIPSState *env, hwaddr *physical,
 int *prot, target_ulong real_address,
-int rw, int mmu_idx,
+MMUAccessType access_type, int mmu_idx,
 unsigned int am, bool eu,
 target_ulong segmask,
 hwaddr physical_base)
@@ -234,7 +234,8 @@ static int get_seg_physical_address(CPUMIPSState *env, 
hwaddr *physical,
 return mapped;
 } else if (mapped) {
 /* The segment is TLB mapped */
-return env->tlb->map_address(env, physical, prot, real_address, rw);
+return env->tlb->map_address(env, physical, prot, real_address,
+ access_type);
 } else {
 /* The segment is unmapped */
 *physical = physical_base | (real_address & segmask);
@@ -245,15 +246,15 @@ static int get_seg_physical_address(CPUMIPSState *env, 
hwaddr *physical,
 
 static int get_segctl_physical_address(CPUMIPSState *env, hwaddr *physical,
int *prot, target_ulong real_address,
-   int rw, int mmu_idx,
+   MMUAccessType access_type, int mmu_idx,
uint16_t segctl, target_ulong segmask)
 {
 unsigned int am = (segctl & CP0SC_AM_MASK) >> CP0SC_AM;
 bool eu = (segctl >> CP0SC_EU) & 1;
 hwaddr pa = ((hwaddr)segctl & CP0SC_PA_MASK) << 20;
 
-return get_seg_physical_address(env, physical, prot, real_address, rw,
-mmu_idx, am, eu, segmask,
+return get_seg_physical_address(env, physical, prot, real_address,
+access_type, mmu_idx, am, eu, segmask,
 pa & ~(hwaddr)segmask);
 }
 
-- 
2.26.2