addi    r3,r1,STACK_FRAME_OVERHEAD;     \
        xfer(n, hdlr)
 
-#define EXC_XFER_TEMPLATE(n, hdlr, trap, copyee, tfer, ret)    \
+#define EXC_XFER_TEMPLATE(hdlr, trap, msr, copyee, tfer, ret)  \
        li      r10,trap;                                       \
        stw     r10,_TRAP(r11);                                 \
-       LOAD_MSR_KERNEL(r10, MSR_KERNEL);                       \
+       LOAD_MSR_KERNEL(r10, msr);                              \
        copyee(r10, r9);                                        \
        bl      tfer;                                           \
-i##n:                                                          \
        .long   hdlr;                                           \
        .long   ret
 
 #define NOCOPY(d, s)
 
 #define EXC_XFER_STD(n, hdlr)          \
-       EXC_XFER_TEMPLATE(n, hdlr, n, NOCOPY, transfer_to_handler_full, \
+       EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, NOCOPY, transfer_to_handler_full,        \
                          ret_from_except_full)
 
 #define EXC_XFER_LITE(n, hdlr)         \
-       EXC_XFER_TEMPLATE(n, hdlr, n+1, NOCOPY, transfer_to_handler, \
+       EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, NOCOPY, transfer_to_handler, \
                          ret_from_except)
 
 #define EXC_XFER_EE(n, hdlr)           \
-       EXC_XFER_TEMPLATE(n, hdlr, n, COPY_EE, transfer_to_handler_full, \
+       EXC_XFER_TEMPLATE(hdlr, n, MSR_KERNEL, COPY_EE, transfer_to_handler_full, \
                          ret_from_except_full)
 
 #define EXC_XFER_EE_LITE(n, hdlr)      \
-       EXC_XFER_TEMPLATE(n, hdlr, n+1, COPY_EE, transfer_to_handler, \
+       EXC_XFER_TEMPLATE(hdlr, n+1, MSR_KERNEL, COPY_EE, transfer_to_handler, \
                          ret_from_except)
 
 #endif /* __HEAD_32_H__ */