Re: [PATCH 1/2] target/m68k: Clear mach in m68k_cpu_disas_set_info

2022-05-18 Thread Laurent Vivier

Le 30/04/2022 à 19:02, Richard Henderson a écrit :

Zero selects all cpu features in disas/m68k.c,
which is really what we want -- not limited to 68040.

Signed-off-by: Richard Henderson 
---
  target/m68k/cpu.c | 6 +-
  1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index c7aeb7da9c..5671067923 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -75,12 +75,8 @@ static void m68k_cpu_reset(DeviceState *dev)
  
  static void m68k_cpu_disas_set_info(CPUState *s, disassemble_info *info)

  {
-M68kCPU *cpu = M68K_CPU(s);
-CPUM68KState *env = >env;
  info->print_insn = print_insn_m68k;
-if (m68k_feature(env, M68K_FEATURE_M68000)) {
-info->mach = bfd_mach_m68040;
-}
+info->mach = 0;
  }
  
  /* CPU models */


Reviewed-by: Laurent Vivier 



Re: [PATCH 1/2] target/m68k: Clear mach in m68k_cpu_disas_set_info

2022-05-17 Thread Richard Henderson

On 5/17/22 07:06, Laurent Vivier wrote:

Le 30/04/2022 à 19:02, Richard Henderson a écrit :

Zero selects all cpu features in disas/m68k.c,
which is really what we want -- not limited to 68040.


But what happens when an instruction has to be decoded differently between 680x0 and 
coldfire?


for instance in disas/m68k.c, we have:

{"addil", 6,    one(0003200),   one(0177700), "#l$s", m68000up },
{"addil", 6,    one(0003200),   one(0177700), "#lDs", mcfisa_a },

{"addl", 6, one(0003200),   one(0177700), "#l$s", m68000up },
{"addl", 6, one(0003200),   one(0177700), "#lDs", mcfisa_a },

{"andil", 6,    one(0001200),   one(0177700), "#l$s", m68000up },
{"andil", 6,    one(0001200),   one(0177700), "#lDs", mcfisa_a },

{"andl", 6, one(0001200),   one(0177700), "#l$s", m68000up },
{"andl", 6, one(0001200),   one(0177700), "#lDs", mcfisa_a },

{"bchg", 4, one(0004100),   one(0177700), "#b$s", m68000up },
{"bchg", 4, one(0004100),   one(0177700), "#bqs", mcfisa_a },

{"bclr", 4, one(0004200),   one(0177700), "#b$s", m68000up },
{"bclr", 4, one(0004200),   one(0177700), "#bqs", mcfisa_a },

{"bset", 2, one(700),   one(0170700), "Dd$s", m68000up | mcfisa_a },
{"bset", 2, one(700),   one(0170700), "Ddvs", mcfisa_a },
{"bset", 4, one(0004300),   one(0177700), "#b$s", m68000up },
{"bset", 4, one(0004300),   one(0177700), "#bqs", mcfisa_a },

{"btst", 4, one(0004000),   one(0177700), "#b@s", m68000up },
{"btst", 4, one(0004000),   one(0177700), "#bqs", mcfisa_a },

{"cmpib", 4,    one(0006000),   one(0177700), "#b@s", m68000up },
{"cmpib", 4,    one(0006000),   one(0177700), "#bDs", mcfisa_b },
{"cmpiw", 4,    one(0006100),   one(0177700), "#w@s", m68000up },
{"cmpiw", 4,    one(0006100),   one(0177700), "#wDs", mcfisa_b },
{"cmpil", 6,    one(0006200),   one(0177700), "#l@s", m68000up },
{"cmpil", 6,    one(0006200),   one(0177700), "#lDs", mcfisa_a },


They're all compatible encodings, it's just that the CF ones are more restricted.  When 
debugging a SIGILL on CF, it would be nicer to see


addla0@, d0

than

.byte   xx, yy

in the -d in_asm dump.

r~



Re: [PATCH 1/2] target/m68k: Clear mach in m68k_cpu_disas_set_info

2022-05-17 Thread Laurent Vivier

Le 30/04/2022 à 19:02, Richard Henderson a écrit :

Zero selects all cpu features in disas/m68k.c,
which is really what we want -- not limited to 68040.


But what happens when an instruction has to be decoded differently between 
680x0 and coldfire?

for instance in disas/m68k.c, we have:

{"addil", 6,one(0003200),   one(0177700), "#l$s", m68000up },
{"addil", 6,one(0003200),   one(0177700), "#lDs", mcfisa_a },

{"addl", 6, one(0003200),   one(0177700), "#l$s", m68000up },
{"addl", 6, one(0003200),   one(0177700), "#lDs", mcfisa_a },

{"andil", 6,one(0001200),   one(0177700), "#l$s", m68000up },
{"andil", 6,one(0001200),   one(0177700), "#lDs", mcfisa_a },

{"andl", 6, one(0001200),   one(0177700), "#l$s", m68000up },
{"andl", 6, one(0001200),   one(0177700), "#lDs", mcfisa_a },

{"bchg", 4, one(0004100),   one(0177700), "#b$s", m68000up },
{"bchg", 4, one(0004100),   one(0177700), "#bqs", mcfisa_a },

{"bclr", 4, one(0004200),   one(0177700), "#b$s", m68000up },
{"bclr", 4, one(0004200),   one(0177700), "#bqs", mcfisa_a },

{"bset", 2, one(700),   one(0170700), "Dd$s", m68000up | mcfisa_a },
{"bset", 2, one(700),   one(0170700), "Ddvs", mcfisa_a },
{"bset", 4, one(0004300),   one(0177700), "#b$s", m68000up },
{"bset", 4, one(0004300),   one(0177700), "#bqs", mcfisa_a },

{"btst", 4, one(0004000),   one(0177700), "#b@s", m68000up },
{"btst", 4, one(0004000),   one(0177700), "#bqs", mcfisa_a },

{"cmpib", 4,one(0006000),   one(0177700), "#b@s", m68000up },
{"cmpib", 4,one(0006000),   one(0177700), "#bDs", mcfisa_b },
{"cmpiw", 4,one(0006100),   one(0177700), "#w@s", m68000up },
{"cmpiw", 4,one(0006100),   one(0177700), "#wDs", mcfisa_b },
{"cmpil", 6,one(0006200),   one(0177700), "#l@s", m68000up },
{"cmpil", 6,one(0006200),   one(0177700), "#lDs", mcfisa_a },

...

Thanks,
Laurent



Signed-off-by: Richard Henderson 
---
  target/m68k/cpu.c | 6 +-
  1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index c7aeb7da9c..5671067923 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -75,12 +75,8 @@ static void m68k_cpu_reset(DeviceState *dev)
  
  static void m68k_cpu_disas_set_info(CPUState *s, disassemble_info *info)

  {
-M68kCPU *cpu = M68K_CPU(s);
-CPUM68KState *env = >env;
  info->print_insn = print_insn_m68k;
-if (m68k_feature(env, M68K_FEATURE_M68000)) {
-info->mach = bfd_mach_m68040;
-}
+info->mach = 0;
  }
  
  /* CPU models */





[PATCH 1/2] target/m68k: Clear mach in m68k_cpu_disas_set_info

2022-04-30 Thread Richard Henderson
Zero selects all cpu features in disas/m68k.c,
which is really what we want -- not limited to 68040.

Signed-off-by: Richard Henderson 
---
 target/m68k/cpu.c | 6 +-
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index c7aeb7da9c..5671067923 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -75,12 +75,8 @@ static void m68k_cpu_reset(DeviceState *dev)
 
 static void m68k_cpu_disas_set_info(CPUState *s, disassemble_info *info)
 {
-M68kCPU *cpu = M68K_CPU(s);
-CPUM68KState *env = >env;
 info->print_insn = print_insn_m68k;
-if (m68k_feature(env, M68K_FEATURE_M68000)) {
-info->mach = bfd_mach_m68040;
-}
+info->mach = 0;
 }
 
 /* CPU models */
-- 
2.34.1