* [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation @ 2020-07-28 13:03 Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 1/3] powerpc ppc-opcode: add divde and divdeu opcodes Balamuruhan S ` (3 more replies) 0 siblings, 4 replies; 6+ messages in thread From: Balamuruhan S @ 2020-07-28 13:03 UTC (permalink / raw) To: mpe Cc: ravi.bangoria, jniethe5, Balamuruhan S, paulus, sandipan, naveen.n.rao, linuxppc-dev 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 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 1/3] powerpc ppc-opcode: add divde and divdeu opcodes 2020-07-28 13:03 [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Balamuruhan S @ 2020-07-28 13:03 ` Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions Balamuruhan S ` (2 subsequent siblings) 3 siblings, 0 replies; 6+ messages in thread From: Balamuruhan S @ 2020-07-28 13:03 UTC (permalink / raw) To: mpe Cc: ravi.bangoria, jniethe5, Balamuruhan S, paulus, sandipan, naveen.n.rao, linuxppc-dev include instruction opcodes for divde and divdeu as macros. Reviewed-by: Sandipan Das <sandipan@linux.ibm.com> Signed-off-by: Balamuruhan S <bala24@linux.ibm.com> Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- arch/powerpc/include/asm/ppc-opcode.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h index 4c0bdafb6a7b..a6e3700c4566 100644 --- a/arch/powerpc/include/asm/ppc-opcode.h +++ b/arch/powerpc/include/asm/ppc-opcode.h @@ -466,6 +466,10 @@ #define PPC_RAW_MULI(d, a, i) (0x1c000000 | ___PPC_RT(d) | ___PPC_RA(a) | IMM_L(i)) #define PPC_RAW_DIVWU(d, a, b) (0x7c000396 | ___PPC_RT(d) | ___PPC_RA(a) | ___PPC_RB(b)) #define PPC_RAW_DIVDU(d, a, b) (0x7c000392 | ___PPC_RT(d) | ___PPC_RA(a) | ___PPC_RB(b)) +#define PPC_RAW_DIVDE(t, a, b) (0x7c000352 | ___PPC_RT(t) | ___PPC_RA(a) | ___PPC_RB(b)) +#define PPC_RAW_DIVDE_DOT(t, a, b) (0x7c000352 | ___PPC_RT(t) | ___PPC_RA(a) | ___PPC_RB(b) | 0x1) +#define PPC_RAW_DIVDEU(t, a, b) (0x7c000312 | ___PPC_RT(t) | ___PPC_RA(a) | ___PPC_RB(b)) +#define PPC_RAW_DIVDEU_DOT(t, a, b) (0x7c000312 | ___PPC_RT(t) | ___PPC_RA(a) | ___PPC_RB(b) | 0x1) #define PPC_RAW_AND(d, a, b) (0x7c000038 | ___PPC_RA(d) | ___PPC_RS(a) | ___PPC_RB(b)) #define PPC_RAW_ANDI(d, a, i) (0x70000000 | ___PPC_RA(d) | ___PPC_RS(a) | IMM_L(i)) #define PPC_RAW_AND_DOT(d, a, b) (0x7c000039 | ___PPC_RA(d) | ___PPC_RS(a) | ___PPC_RB(b)) @@ -510,6 +514,8 @@ #define PPC_DARN(t, l) stringify_in_c(.long PPC_RAW_DARN(t, l)) #define PPC_DCBAL(a, b) stringify_in_c(.long PPC_RAW_DCBAL(a, b)) #define PPC_DCBZL(a, b) stringify_in_c(.long PPC_RAW_DCBZL(a, b)) +#define PPC_DIVDE(t, a, b) stringify_in_c(.long PPC_RAW_DIVDE(t, a, b)) +#define PPC_DIVDEU(t, a, b) stringify_in_c(.long PPC_RAW_DIVDEU(t, a, b)) #define PPC_LQARX(t, a, b, eh) stringify_in_c(.long PPC_RAW_LQARX(t, a, b, eh)) #define PPC_LDARX(t, a, b, eh) stringify_in_c(.long PPC_RAW_LDARX(t, a, b, eh)) #define PPC_LWARX(t, a, b, eh) stringify_in_c(.long PPC_RAW_LWARX(t, a, b, eh)) -- 2.24.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions 2020-07-28 13:03 [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 1/3] powerpc ppc-opcode: add divde and divdeu opcodes Balamuruhan S @ 2020-07-28 13:03 ` Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 3/3] powerpc test_emulate_step: add testcases " Balamuruhan S 2020-08-02 13:34 ` [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Michael Ellerman 3 siblings, 0 replies; 6+ messages in thread From: Balamuruhan S @ 2020-07-28 13:03 UTC (permalink / raw) To: mpe Cc: ravi.bangoria, jniethe5, Balamuruhan S, paulus, sandipan, naveen.n.rao, linuxppc-dev This patch adds emulation support for divde, divdeu instructions, * Divide Doubleword Extended (divde[.]) * Divide Doubleword Extended Unsigned (divdeu[.]) Reviewed-by: Sandipan Das <sandipan@linux.ibm.com> Signed-off-by: Balamuruhan S <bala24@linux.ibm.com> Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- arch/powerpc/lib/sstep.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index c58ea9e787cb..caee8cc77e19 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c @@ -1806,7 +1806,18 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs, op->val = (int) regs->gpr[ra] / (int) regs->gpr[rb]; goto arith_done; - +#ifdef __powerpc64__ + case 425: /* divde[.] */ + asm volatile(PPC_DIVDE(%0, %1, %2) : + "=r" (op->val) : "r" (regs->gpr[ra]), + "r" (regs->gpr[rb])); + goto arith_done; + case 393: /* divdeu[.] */ + asm volatile(PPC_DIVDEU(%0, %1, %2) : + "=r" (op->val) : "r" (regs->gpr[ra]), + "r" (regs->gpr[rb])); + goto arith_done; +#endif case 755: /* darn */ if (!cpu_has_feature(CPU_FTR_ARCH_300)) return -1; -- 2.24.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v4 3/3] powerpc test_emulate_step: add testcases for divde[.] and divdeu[.] instructions 2020-07-28 13:03 [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 1/3] powerpc ppc-opcode: add divde and divdeu opcodes Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions Balamuruhan S @ 2020-07-28 13:03 ` Balamuruhan S 2020-08-02 13:34 ` [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Michael Ellerman 3 siblings, 0 replies; 6+ messages in thread From: Balamuruhan S @ 2020-07-28 13:03 UTC (permalink / raw) To: mpe Cc: ravi.bangoria, jniethe5, Balamuruhan S, paulus, sandipan, naveen.n.rao, linuxppc-dev add testcases for divde, divde., divdeu, divdeu. emulated instructions to cover few scenarios, * with same dividend and divisor to have undefine RT for divdeu[.] * with divide by zero to have undefine RT for both divde[.] and divdeu[.] * with negative dividend to cover -|divisor| < r <= 0 if the dividend is negative for divde[.] * normal case with proper dividend and divisor for both divde[.] and divdeu[.] Reviewed-by: Sandipan Das <sandipan@linux.ibm.com> Signed-off-by: Balamuruhan S <bala24@linux.ibm.com> Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- arch/powerpc/lib/test_emulate_step.c | 156 +++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) diff --git a/arch/powerpc/lib/test_emulate_step.c b/arch/powerpc/lib/test_emulate_step.c index d242e9f72e0c..0a201b771477 100644 --- a/arch/powerpc/lib/test_emulate_step.c +++ b/arch/powerpc/lib/test_emulate_step.c @@ -1019,6 +1019,162 @@ static struct compute_test compute_tests[] = { } } }, + { + .mnemonic = "divde", + .subtests = { + { + .descr = "RA = LONG_MIN, RB = LONG_MIN", + .instr = ppc_inst(PPC_RAW_DIVDE(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MIN, + } + }, + { + .descr = "RA = 1L, RB = 0", + .instr = ppc_inst(PPC_RAW_DIVDE(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = 1L, + .gpr[22] = 0, + } + }, + { + .descr = "RA = LONG_MIN, RB = LONG_MAX", + .instr = ppc_inst(PPC_RAW_DIVDE(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MAX, + } + } + } + }, + { + .mnemonic = "divde.", + .subtests = { + { + .descr = "RA = LONG_MIN, RB = LONG_MIN", + .instr = ppc_inst(PPC_RAW_DIVDE_DOT(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MIN, + } + }, + { + .descr = "RA = 1L, RB = 0", + .instr = ppc_inst(PPC_RAW_DIVDE_DOT(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = 1L, + .gpr[22] = 0, + } + }, + { + .descr = "RA = LONG_MIN, RB = LONG_MAX", + .instr = ppc_inst(PPC_RAW_DIVDE_DOT(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MAX, + } + } + } + }, + { + .mnemonic = "divdeu", + .subtests = { + { + .descr = "RA = LONG_MIN, RB = LONG_MIN", + .instr = ppc_inst(PPC_RAW_DIVDEU(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MIN, + } + }, + { + .descr = "RA = 1L, RB = 0", + .instr = ppc_inst(PPC_RAW_DIVDEU(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = 1L, + .gpr[22] = 0, + } + }, + { + .descr = "RA = LONG_MIN, RB = LONG_MAX", + .instr = ppc_inst(PPC_RAW_DIVDEU(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MAX, + } + }, + { + .descr = "RA = LONG_MAX - 1, RB = LONG_MAX", + .instr = ppc_inst(PPC_RAW_DIVDEU(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MAX - 1, + .gpr[22] = LONG_MAX, + } + }, + { + .descr = "RA = LONG_MIN + 1, RB = LONG_MIN", + .instr = ppc_inst(PPC_RAW_DIVDEU(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = LONG_MIN + 1, + .gpr[22] = LONG_MIN, + } + } + } + }, + { + .mnemonic = "divdeu.", + .subtests = { + { + .descr = "RA = LONG_MIN, RB = LONG_MIN", + .instr = ppc_inst(PPC_RAW_DIVDEU_DOT(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MIN, + } + }, + { + .descr = "RA = 1L, RB = 0", + .instr = ppc_inst(PPC_RAW_DIVDEU_DOT(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = 1L, + .gpr[22] = 0, + } + }, + { + .descr = "RA = LONG_MIN, RB = LONG_MAX", + .instr = ppc_inst(PPC_RAW_DIVDEU_DOT(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MIN, + .gpr[22] = LONG_MAX, + } + }, + { + .descr = "RA = LONG_MAX - 1, RB = LONG_MAX", + .instr = ppc_inst(PPC_RAW_DIVDEU_DOT(20, 21, 22)), + .regs = { + .gpr[21] = LONG_MAX - 1, + .gpr[22] = LONG_MAX, + } + }, + { + .descr = "RA = LONG_MIN + 1, RB = LONG_MIN", + .instr = ppc_inst(PPC_RAW_DIVDEU_DOT(20, 21, 22)), + .flags = IGNORE_GPR(20), + .regs = { + .gpr[21] = LONG_MIN + 1, + .gpr[22] = LONG_MIN, + } + } + } + }, { .mnemonic = "paddi", .cpu_feature = CPU_FTR_ARCH_31, -- 2.24.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation 2020-07-28 13:03 [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Balamuruhan S ` (2 preceding siblings ...) 2020-07-28 13:03 ` [PATCH v4 3/3] powerpc test_emulate_step: add testcases " Balamuruhan S @ 2020-08-02 13:34 ` Michael Ellerman 3 siblings, 0 replies; 6+ messages in thread From: Michael Ellerman @ 2020-08-02 13:34 UTC (permalink / raw) To: Balamuruhan S, mpe Cc: ravi.bangoria, jniethe5, paulus, sandipan, naveen.n.rao, linuxppc-dev On Tue, 28 Jul 2020 18:33:05 +0530, Balamuruhan S wrote: > 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. > > [...] Applied to powerpc/next. [1/3] powerpc/ppc-opcode: Add divde and divdeu opcodes https://git.kernel.org/powerpc/c/8902c6f96364d1117236948d6c7b9178f428529c [2/3] powerpc/sstep: Add support for divde[.] and divdeu[.] instructions https://git.kernel.org/powerpc/c/151c32bf5ebdd41114267717dc4b53d2632cbd30 [3/3] powerpc/test_emulate_step: Add testcases for divde[.] and divdeu[.] instructions https://git.kernel.org/powerpc/c/b859c95cf4b936b5e8019e7ab68ee2740e609ffd cheers ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation @ 2020-04-02 15:19 Balamuruhan S 2020-04-02 15:19 ` [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions Balamuruhan S 0 siblings, 1 reply; 6+ messages in thread From: Balamuruhan S @ 2020-04-02 15:19 UTC (permalink / raw) To: mpe Cc: ravi.bangoria, jniethe5, Balamuruhan S, paulus, sandipan, naveen.n.rao, linuxppc-dev Hi All, This patchset adds support to emulate divde, divde., divdeu and divdeu. instructions and testcases for it. 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: -------- :: :: :: :: [ 2.777518] emulate_step_test: divde : RA = LONG_MIN, RB = LONG_MIN PASS [ 2.777882] emulate_step_test: divde : RA = 1L, RB = 0 PASS [ 2.778432] emulate_step_test: divde : RA = LONG_MIN, RB = LONG_MAX PASS [ 2.778880] emulate_step_test: divde. : RA = LONG_MIN, RB = LONG_MIN PASS [ 2.780172] emulate_step_test: divde. : RA = 1L, RB = 0 PASS [ 2.780582] emulate_step_test: divde. : RA = LONG_MIN, RB = LONG_MAX PASS [ 2.780983] emulate_step_test: divdeu : RA = LONG_MIN, RB = LONG_MIN PASS [ 2.781276] emulate_step_test: divdeu : RA = 1L, RB = 0 PASS [ 2.781579] emulate_step_test: divdeu : RA = LONG_MIN, RB = LONG_MAX PASS [ 2.781820] emulate_step_test: divdeu : RA = LONG_MAX - 1, RB = LONG_MAX PASS [ 2.782056] emulate_step_test: divdeu : RA = LONG_MIN + 1, RB = LONG_MIN PASS [ 2.782296] emulate_step_test: divdeu. : RA = LONG_MIN, RB = LONG_MIN PASS [ 2.782556] emulate_step_test: divdeu. : RA = 1L, RB = 0 PASS [ 2.783502] emulate_step_test: divdeu. : RA = LONG_MIN, RB = LONG_MAX PASS [ 2.783748] emulate_step_test: divdeu. : RA = LONG_MAX - 1, RB = LONG_MAX PASS [ 2.783973] emulate_step_test: divdeu. : RA = LONG_MIN + 1, RB = LONG_MIN PASS [ 2.789617] registered taskstats version 1 [ 2.794779] printk: console [netcon0] enabled [ 2.794931] netconsole: network logging started [ 2.795327] hctosys: unable to open rtc device (rtc0) [ 2.953449] Freeing unused kernel memory: 5120K [ 2.953639] This architecture does not have kernel memory protection. [ 2.953918] Run /init as init process [ 3.173573] mount (54) used greatest stack depth: 12576 bytes left [ 3.252465] mount (55) used greatest stack depth: 12544 bytes left Welcome to Buildroot 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 | 8 ++ arch/powerpc/lib/sstep.c | 13 +- arch/powerpc/lib/test_emulate_step.c | 164 ++++++++++++++++++++++++++ 3 files changed, 184 insertions(+), 1 deletion(-) base-commit: 9c17a47d827c00401c2ff2ba71d7ecf08ed5b677 -- 2.24.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions 2020-04-02 15:19 Balamuruhan S @ 2020-04-02 15:19 ` Balamuruhan S 0 siblings, 0 replies; 6+ messages in thread From: Balamuruhan S @ 2020-04-02 15:19 UTC (permalink / raw) To: mpe Cc: ravi.bangoria, jniethe5, Balamuruhan S, paulus, sandipan, naveen.n.rao, linuxppc-dev This patch adds emulation support for divde, divdeu instructions, * Divide Doubleword Extended (divde[.]) * Divide Doubleword Extended Unsigned (divdeu[.]) Reviewed-by: Sandipan Das <sandipan@linux.ibm.com> Signed-off-by: Balamuruhan S <bala24@linux.ibm.com> Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- arch/powerpc/lib/sstep.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index 5f3a7bd9d90d..c9036a75730c 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c @@ -1736,7 +1736,18 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs, op->val = (int) regs->gpr[ra] / (int) regs->gpr[rb]; goto arith_done; - +#ifdef __powerpc64__ + case 425: /* divde[.] */ + asm volatile(PPC_DIVDE(%0, %1, %2) : + "=r" (op->val) : "r" (regs->gpr[ra]), + "r" (regs->gpr[rb])); + goto arith_done; + case 393: /* divdeu[.] */ + asm volatile(PPC_DIVDEU(%0, %1, %2) : + "=r" (op->val) : "r" (regs->gpr[ra]), + "r" (regs->gpr[rb])); + goto arith_done; +#endif case 755: /* darn */ if (!cpu_has_feature(CPU_FTR_ARCH_300)) return -1; -- 2.24.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-08-02 13:41 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-28 13:03 [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 1/3] powerpc ppc-opcode: add divde and divdeu opcodes Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions Balamuruhan S 2020-07-28 13:03 ` [PATCH v4 3/3] powerpc test_emulate_step: add testcases " Balamuruhan S 2020-08-02 13:34 ` [PATCH v4 0/3] Add support for divde[.] and divdeu[.] instruction emulation Michael Ellerman -- strict thread matches above, loose matches on Subject: below -- 2020-04-02 15:19 Balamuruhan S 2020-04-02 15:19 ` [PATCH v4 2/3] powerpc sstep: add support for divde[.] and divdeu[.] instructions Balamuruhan S
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).