On 17.06.26 11:48, Harald Freudenberger wrote:
Support the subfunctions CPACF_KM_PAES_128, CPACF_KM_PAES_192
and CPACF_KM_PAES_256 for the cpacf km instruction.
Signed-off-by: Harald Freudenberger <[email protected]>
Tested-by: Holger Dengler <[email protected]>
---
target/s390x/gen-features.c | 3 ++
target/s390x/tcg/cpacf.h | 4 ++
target/s390x/tcg/cpacf_aes.c | 87 ++++++++++++++++++++++++++++++++
target/s390x/tcg/crypto_helper.c | 7 +++
4 files changed, 101 insertions(+)
[ snip ]
diff --git a/target/s390x/tcg/crypto_helper.c b/target/s390x/tcg/crypto_helper.c
index e1952ae4bc..988226338d 100644
--- a/target/s390x/tcg/crypto_helper.c
+++ b/target/s390x/tcg/crypto_helper.c
@@ -103,6 +103,13 @@ static int cpacf_km(CPUS390XState *env, const int mmu_idx,
uintptr_t ra,
&env->regs[r1], &env->regs[r2], &env->regs[r2 + 1],
S390_FEAT_TYPE_KM, fc, mod);
break;
+ case 0x1a: /* CPACF_KM_PAES_128 */
+ case 0x1b: /* CPACF_KM_PAES_192 */
+ case 0x1c: /* CPACF_KM_PAES_256 */
please order these correctly in the switch. For the switch statement it
doesn't matter but it improves readability. 0x1a is greater than 0x34.
+ rc = cpacf_paes_ecb(env, mmu_idx, ra, env->regs[1],
+ &env->regs[r1], &env->regs[r2], &env->regs[r2 + 1],
+ S390_FEAT_TYPE_KM, fc, mod);
+ break;
case 0x32: /* CPACF_KM_XTS_128 */
case 0x34: /* CPACF_KM_XTS_256 */
rc = cpacf_aes_xts(env, mmu_idx, ra, env->regs[1],