Re: [PATCH v2] powerpc test_emulate_step: fix DS operand in ld encoding to appropriate value
On Wed, 2020-03-11 at 10:24:05 UTC, Balamuruhan S wrote: > ld instruction should have 14 bit immediate field (DS) concatenated with > 0b00 on the right, encode it accordingly. Introduce macro `IMM_DS()` > to encode DS form instructions with 14 bit immediate field. > > Fixes: 4ceae137bdab ("powerpc: emulate_step() tests for load/store > instructions") > Reviewed-by: Sandipan Das > Signed-off-by: Balamuruhan S Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/3e74a0e16342626511c43937c120beb990539307 cheers
Re: [PATCH v2] powerpc test_emulate_step: fix DS operand in ld encoding to appropriate value
Balamuruhan S wrote: ld instruction should have 14 bit immediate field (DS) concatenated with 0b00 on the right, encode it accordingly. Introduce macro `IMM_DS()` to encode DS form instructions with 14 bit immediate field. Fixes: 4ceae137bdab ("powerpc: emulate_step() tests for load/store instructions") Reviewed-by: Sandipan Das Signed-off-by: Balamuruhan S --- arch/powerpc/lib/test_emulate_step.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) LGTM. We ought to be careful when using TEST_LD() to ensure that the immediate value is aligned to a word, but since this is for selftests, we don't need to enforce that. Long term, we should also consider generalizing the macros across this and the eBPF codebase so that we can reuse these. Reviewed-by: Naveen N. Rao - Naveen
[PATCH v2] powerpc test_emulate_step: fix DS operand in ld encoding to appropriate value
ld instruction should have 14 bit immediate field (DS) concatenated with 0b00 on the right, encode it accordingly. Introduce macro `IMM_DS()` to encode DS form instructions with 14 bit immediate field. Fixes: 4ceae137bdab ("powerpc: emulate_step() tests for load/store instructions") Reviewed-by: Sandipan Das Signed-off-by: Balamuruhan S --- arch/powerpc/lib/test_emulate_step.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) --- changes in v2: - * squash the commits as per Christophe's review comment diff --git a/arch/powerpc/lib/test_emulate_step.c b/arch/powerpc/lib/test_emulate_step.c index 42347067739c..007292a1ad01 100644 --- a/arch/powerpc/lib/test_emulate_step.c +++ b/arch/powerpc/lib/test_emulate_step.c @@ -13,19 +13,20 @@ #include #define IMM_L(i) ((uintptr_t)(i) & 0x) +#define IMM_DS(i) ((uintptr_t)(i) & 0xfffc) /* * Defined with TEST_ prefix so it does not conflict with other * definitions. */ #define TEST_LD(r, base, i)(PPC_INST_LD | ___PPC_RT(r) | \ - ___PPC_RA(base) | IMM_L(i)) + ___PPC_RA(base) | IMM_DS(i)) #define TEST_LWZ(r, base, i) (PPC_INST_LWZ | ___PPC_RT(r) | \ ___PPC_RA(base) | IMM_L(i)) #define TEST_LWZX(t, a, b) (PPC_INST_LWZX | ___PPC_RT(t) | \ ___PPC_RA(a) | ___PPC_RB(b)) #define TEST_STD(r, base, i) (PPC_INST_STD | ___PPC_RS(r) | \ - ___PPC_RA(base) | ((i) & 0xfffc)) + ___PPC_RA(base) | IMM_DS(i)) #define TEST_LDARX(t, a, b, eh)(PPC_INST_LDARX | ___PPC_RT(t) | \ ___PPC_RA(a) | ___PPC_RB(b) | \ __PPC_EH(eh)) base-commit: 5aa19adac1f3152a5fd3b865a1ab46bb845d3696 -- 2.24.1