Let's save some lines in the assembly by using a loop to save and restore the fprs. Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> --- s390x/cstart64.S | 38 ++++++-------------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/s390x/cstart64.S b/s390x/cstart64.S index 5dc1577..8e2b21e 100644 --- a/s390x/cstart64.S +++ b/s390x/cstart64.S @@ -99,44 +99,18 @@ memsetxc: lctlg %c0, %c0, 0(%r1) /* save fprs 0-15 + fpc */ la %r1, GEN_LC_SW_INT_FPRS - std %f0, 0(%r1) - std %f1, 8(%r1) - std %f2, 16(%r1) - std %f3, 24(%r1) - std %f4, 32(%r1) - std %f5, 40(%r1) - std %f6, 48(%r1) - std %f7, 56(%r1) - std %f8, 64(%r1) - std %f9, 72(%r1) - std %f10, 80(%r1) - std %f11, 88(%r1) - std %f12, 96(%r1) - std %f13, 104(%r1) - std %f14, 112(%r1) - std %f15, 120(%r1) + .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + std \i, \i * 8(%r1) + .endr stfpc GEN_LC_SW_INT_FPC .endm .macro RESTORE_REGS /* restore fprs 0-15 + fpc */ la %r1, GEN_LC_SW_INT_FPRS - ld %f0, 0(%r1) - ld %f1, 8(%r1) - ld %f2, 16(%r1) - ld %f3, 24(%r1) - ld %f4, 32(%r1) - ld %f5, 40(%r1) - ld %f6, 48(%r1) - ld %f7, 56(%r1) - ld %f8, 64(%r1) - ld %f9, 72(%r1) - ld %f10, 80(%r1) - ld %f11, 88(%r1) - ld %f12, 96(%r1) - ld %f13, 104(%r1) - ld %f14, 112(%r1) - ld %f15, 120(%r1) + .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 + ld \i, \i * 8(%r1) + .endr lfpc GEN_LC_SW_INT_FPC /* restore cr0 */ lctlg %c0, %c0, GEN_LC_SW_INT_CR0 -- 2.20.1