Hi All, This patchset adds support to emulate divde, divde., divdeu and divdeu. instructions and testcases for it.
Resend v4: rebased on latest powerpc next branch Changes in v4: ------------- Fix review comments from Naveen, * replace TEST_DIVDEU() instead of wrongly used TEST_DIVDEU_DOT() in divdeu testcase. * Include `acked-by` tag from Naveen for the series. * Rebase it on latest mpe's merge tree. Changes in v3: ------------- * Fix suggestion from Sandipan to remove `PPC_INST_DIVDE_DOT` and `PPC_INST_DIVDEU_DOT` opcode macros defined in ppc-opcode.h, reuse `PPC_INST_DIVDE` and `PPC_INST_DIVDEU` in test_emulate_step.c to derive them respectively. Changes in v2: ------------- * Fix review comments from Paul to make divde_dot and divdeu_dot simple by using divde and divdeu, then goto `arith_done` instead of `compute_done`. * Include `Reviewed-by` tag from Sandipan Das. * Rebase with recent mpe's merge tree. I would request for your review and suggestions for making it better. Boot Log: -------- :: :: :: :: 291494043: (291493996): [ 0.352649][ T1] emulate_step_test: divde : RA = LONG_MIN, RB = LONG_MIN PASS 291517665: (291517580): [ 0.352695][ T1] emulate_step_test: divde : RA = 1L, RB = 0 PASS 291541357: (291541234): [ 0.352742][ T1] emulate_step_test: divde : RA = LONG_MIN, RB = LONG_MAX PASS 291565107: (291564946): [ 0.352788][ T1] emulate_step_test: divde. : RA = LONG_MIN, RB = LONG_MIN PASS 291588757: (291588558): [ 0.352834][ T1] emulate_step_test: divde. : RA = 1L, RB = 0 PASS 291612477: (291612240): [ 0.352881][ T1] emulate_step_test: divde. : RA = LONG_MIN, RB = LONG_MAX PASS 291636201: (291635926): [ 0.352927][ T1] emulate_step_test: divdeu : RA = LONG_MIN, RB = LONG_MIN PASS 291659830: (291659517): [ 0.352973][ T1] emulate_step_test: divdeu : RA = 1L, RB = 0 PASS 291683529: (291683178): [ 0.353019][ T1] emulate_step_test: divdeu : RA = LONG_MIN, RB = LONG_MAX PASS 291707248: (291706859): [ 0.353066][ T1] emulate_step_test: divdeu : RA = LONG_MAX - 1, RB = LONG_MAX PASS 291730962: (291730535): [ 0.353112][ T1] emulate_step_test: divdeu : RA = LONG_MIN + 1, RB = LONG_MIN PASS 291754714: (291754249): [ 0.353158][ T1] emulate_step_test: divdeu. : RA = LONG_MIN, RB = LONG_MIN PASS 291778371: (291777868): [ 0.353205][ T1] emulate_step_test: divdeu. : RA = 1L, RB = 0 PASS 291802098: (291801557): [ 0.353251][ T1] emulate_step_test: divdeu. : RA = LONG_MIN, RB = LONG_MAX PASS 291825844: (291825265): [ 0.353297][ T1] emulate_step_test: divdeu. : RA = LONG_MAX - 1, RB = LONG_MAX PASS 291849586: (291848969): [ 0.353344][ T1] emulate_step_test: divdeu. : RA = LONG_MIN + 1, RB = LONG_MIN PASS :: :: :: :: 292520225: (292519608): [ 0.354654][ T1] registered taskstats version 1 292584751: (292584134): [ 0.354780][ T1] pstore: Using crash dump compression: deflate 296454422: (296453805): [ 0.362338][ T1] Freeing unused kernel memory: 1408K 296467838: (296467221): [ 0.362364][ T1] This architecture does not have kernel memory protection. 296485387: (296484770): [ 0.362398][ T1] Run /init as init process 297987339: (297986761): [ 0.365332][ T46] mount (46) used greatest stack depth: 12512 bytes left 298889548: (298888992): [ 0.367094][ T47] mount (47) used greatest stack depth: 11824 bytes left 355356256: (355355821): Welcome to Buildroot 355376898: (355376463): buildroot login: Balamuruhan S (3): powerpc ppc-opcode: add divde and divdeu opcodes powerpc sstep: add support for divde[.] and divdeu[.] instructions powerpc test_emulate_step: add testcases for divde[.] and divdeu[.] instructions arch/powerpc/include/asm/ppc-opcode.h | 6 + arch/powerpc/lib/sstep.c | 13 ++- arch/powerpc/lib/test_emulate_step.c | 156 ++++++++++++++++++++++++++ 3 files changed, 174 insertions(+), 1 deletion(-) base-commit: 7a9912e4cf048b607c8fafcfbdca7566660f1d78 -- 2.24.1