diff mbox series

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

Message ID 20210128144125.3696119-13-f4bug@amsat.org (mailing list archive)
State New, archived
Headers show
Series target/mips: Replace integer by MMUAccessType enum when possible | expand

Commit Message

Philippe Mathieu-Daudé Jan. 28, 2021, 2:41 p.m. UTC
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é <f4bug@amsat.org>
---
 target/mips/tlb_helper.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Comments

Jiaxun Yang Feb. 2, 2021, 3:43 a.m. UTC | #1
在 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é <f4bug@amsat.org>

Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>

> ---
>   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);
>   }
>
diff mbox series

Patch

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);
 }