mfcr    r12
        li      r11,0
        /* Can we avoid saving r3-r8 in common case? */
-       std     r3,GPR3(r1)
-       std     r4,GPR4(r1)
-       std     r5,GPR5(r1)
-       std     r6,GPR6(r1)
-       std     r7,GPR7(r1)
-       std     r8,GPR8(r1)
+       SAVE_GPRS(3, 8, r1)
        /* Zero r9-r12, this should only be required when restoring all GPRs */
        std     r11,GPR9(r1)
        std     r11,GPR10(r1)
        /* Could zero these as per ABI, but we may consider a stricter ABI
         * which preserves these if libc implementations can benefit, so
         * restore them for now until further measurement is done. */
-       ld      r0,GPR0(r1)
-       ld      r4,GPR4(r1)
-       ld      r5,GPR5(r1)
-       ld      r6,GPR6(r1)
-       ld      r7,GPR7(r1)
-       ld      r8,GPR8(r1)
+       REST_GPR(0, r1)
+       REST_GPRS(4, 8, r1)
        /* Zero volatile regs that may contain sensitive kernel data */
-       li      r9,0
-       li      r10,0
-       li      r11,0
-       li      r12,0
+       ZEROIZE_GPRS(9, 12)
        mtspr   SPRN_XER,r0
 
        /*
        ld      r5,_XER(r1)
 
        REST_NVGPRS(r1)
-       ld      r0,GPR0(r1)
+       REST_GPR(0, r1)
        mtcr    r2
        mtctr   r3
        mtlr    r4
        mfcr    r12
        li      r11,0
        /* Can we avoid saving r3-r8 in common case? */
-       std     r3,GPR3(r1)
-       std     r4,GPR4(r1)
-       std     r5,GPR5(r1)
-       std     r6,GPR6(r1)
-       std     r7,GPR7(r1)
-       std     r8,GPR8(r1)
+       SAVE_GPRS(3, 8, r1)
        /* Zero r9-r12, this should only be required when restoring all GPRs */
        std     r11,GPR9(r1)
        std     r11,GPR10(r1)
        cmpdi   r3,0
        bne     .Lsyscall_restore_regs
        /* Zero volatile regs that may contain sensitive kernel data */
-       li      r0,0
-       li      r4,0
-       li      r5,0
-       li      r6,0
-       li      r7,0
-       li      r8,0
-       li      r9,0
-       li      r10,0
-       li      r11,0
-       li      r12,0
+       ZEROIZE_GPR(0)
+       ZEROIZE_GPRS(4, 12)
        mtctr   r0
        mtspr   SPRN_XER,r0
 .Lsyscall_restore_regs_cont:
        REST_NVGPRS(r1)
        mtctr   r3
        mtspr   SPRN_XER,r4
-       ld      r0,GPR0(r1)
+       REST_GPR(0, r1)
        REST_GPRS(4, 12, r1)
        b       .Lsyscall_restore_regs_cont
 .Lsyscall_rst_end: