*/
 
 #define SAVE_STATE     \
+       swi     r1, r0, TOPHYS(PER_CPU(ENTRY_SP)); /* save stack */     \
        swi     r11, r0, TOPHYS(r0_ram + PTO + PT_R11); /* Save r11 */  \
        set_bip;        /*equalize initial state for all possible entries*/\
        clear_eip;                                                      \
        tovirt(r1,r1)
 
 C_ENTRY(full_exception_trap):
-       swi     r1, r0, TOPHYS(PER_CPU(ENTRY_SP)) /* save stack */
        /* adjust exception address for privileged instruction
         * for finding where is it */
        addik   r17, r17, -4
  * The assembler routine is in "arch/microblaze/kernel/hw_exception_handler.S"
  */
 C_ENTRY(unaligned_data_trap):
-       swi     r1, r0, TOPHYS(PER_CPU(ENTRY_SP)) /* save stack */
        SAVE_STATE              /* Save registers.*/
        /* where the trap should return need -8 to adjust for rtsd r15, 8 */
        la      r15, r0, ret_from_exc-8
  */
 /* data and intruction trap - which is choose is resolved int fault.c */
 C_ENTRY(page_fault_data_trap):
-       swi     r1, r0, TOPHYS(PER_CPU(ENTRY_SP)) /* save stack */
        SAVE_STATE              /* Save registers.*/
        /* where the trap should return need -8 to adjust for rtsd r15, 8 */
        la      r15, r0, ret_from_exc-8
        nop;
 
 C_ENTRY(page_fault_instr_trap):
-       swi     r1, r0, TOPHYS(PER_CPU(ENTRY_SP)) /* save stack */
        SAVE_STATE              /* Save registers.*/
        /* where the trap should return need -8 to adjust for rtsd r15, 8 */
        la      r15, r0, ret_from_exc-8