CFI_START_OSF_FRAME entMM
        SAVE_ALL
 /* save $9 - $15 so the inline exception code can manipulate them.  */
-       subq    $sp, 56, $sp
-       .cfi_adjust_cfa_offset  56
+       subq    $sp, 64, $sp
+       .cfi_adjust_cfa_offset  64
        stq     $9, 0($sp)
        stq     $10, 8($sp)
        stq     $11, 16($sp)
        .cfi_rel_offset $13, 32
        .cfi_rel_offset $14, 40
        .cfi_rel_offset $15, 48
-       addq    $sp, 56, $19
+       addq    $sp, 64, $19
 /* handle the fault */
        lda     $8, 0x3fff
        bic     $sp, $8, $8
        ldq     $13, 32($sp)
        ldq     $14, 40($sp)
        ldq     $15, 48($sp)
-       addq    $sp, 56, $sp
+       addq    $sp, 64, $sp
        .cfi_restore    $9
        .cfi_restore    $10
        .cfi_restore    $11
        .cfi_restore    $13
        .cfi_restore    $14
        .cfi_restore    $15
-       .cfi_adjust_cfa_offset  -56
+       .cfi_adjust_cfa_offset  -64
 /* finish up the syscall as normal.  */
        br      ret_from_sys_call
 CFI_END_OSF_FRAME entMM
        .cfi_restore    $0
        .cfi_adjust_cfa_offset  -256
        SAVE_ALL                /* setup normal kernel stack */
-       lda     $sp, -56($sp)
-       .cfi_adjust_cfa_offset  56
+       lda     $sp, -64($sp)
+       .cfi_adjust_cfa_offset  64
        stq     $9, 0($sp)
        stq     $10, 8($sp)
        stq     $11, 16($sp)
        .cfi_rel_offset $14, 40
        .cfi_rel_offset $15, 48
        lda     $8, 0x3fff
-       addq    $sp, 56, $19
+       addq    $sp, 64, $19
        bic     $sp, $8, $8
        jsr     $26, do_entUnaUser
        ldq     $9, 0($sp)
        ldq     $13, 32($sp)
        ldq     $14, 40($sp)
        ldq     $15, 48($sp)
-       lda     $sp, 56($sp)
+       lda     $sp, 64($sp)
        .cfi_restore    $9
        .cfi_restore    $10
        .cfi_restore    $11
        .cfi_restore    $13
        .cfi_restore    $14
        .cfi_restore    $15
-       .cfi_adjust_cfa_offset  -56
+       .cfi_adjust_cfa_offset  -64
        br      ret_from_sys_call
 CFI_END_OSF_FRAME entUna
 
 
 static int unauser_reg_offsets[32] = {
        R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), R(r8),
        /* r9 ... r15 are stored in front of regs.  */
-       -56, -48, -40, -32, -24, -16, -8,
+       -64, -56, -48, -40, -32, -24, -16,      /* padding at -8 */
        R(r16), R(r17), R(r18),
        R(r19), R(r20), R(r21), R(r22), R(r23), R(r24), R(r25), R(r26),
        R(r27), R(r28), R(gp),
 
 
 /* Macro for exception fixup code to access integer registers.  */
 #define dpf_reg(r)                                                     \
-       (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 :  \
-                                (r) <= 18 ? (r)+10 : (r)-10])
+       (((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-17 :  \
+                                (r) <= 18 ? (r)+11 : (r)-10])
 
 asmlinkage void
 do_page_fault(unsigned long address, unsigned long mmcsr,