ba,pt           %xcc, etrap
 109:    or             %g7, %lo(109b), %g7
        add             %g0, %g0, %g0
-       ba,a,pt         %xcc, rtrap_clr_l6
+       ba,a,pt         %xcc, rtrap
 
 1:     TRAP_LOAD_THREAD_REG(%g6, %g1)
        ldub            [%g6 + TI_FPSAVED], %g5
        call            do_fpother
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        .globl          do_fpother_check_fitos
        .align          32
         call           bad_trap
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
 invoke_utrap:
        sllx            %g3, 3, %g3
        call            spitfire_access_error
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        /* This is the trap handler entry point for ECC correctable
         * errors.  They are corrected, but we listen for the trap
        call            spitfire_data_access_exception_tl1
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
 __spitfire_data_access_exception:
        rdpr            %pstate, %g4
        call            spitfire_data_access_exception
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        .globl          __spitfire_insn_access_exception
        .globl          __spitfire_insn_access_exception_tl1
        call            spitfire_insn_access_exception_tl1
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
 __spitfire_insn_access_exception:
        rdpr            %pstate, %g4
        call            spitfire_insn_access_exception
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        /* These get patched into the trap table at boot time
         * once we know we have a cheetah processor.
        call            cheetah_plus_parity_error
         add            %sp, PTREGS_OFF, %o1
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
 do_icpe_tl1:
        rdpr            %tl, %g1                ! Save original trap level
        call            cheetah_plus_parity_error
         add            %sp, PTREGS_OFF, %o1
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
        
 dcpe_icpe_tl1_common:
        /* Flush D-cache, re-enable D/I caches in DCU and finally
        call            do_privact
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        .globl          do_mna
 do_mna:
        call            mem_address_unaligned
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        .globl          do_lddfmna
 do_lddfmna:
        call            handle_lddfmna
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        .globl          do_stdfmna
 do_stdfmna:
        call            handle_stdfmna
         add            %sp, PTREGS_OFF, %o0
        ba,pt           %xcc, rtrap
-        clr            %l6
+        nop
 
        .globl  breakpoint_trap
 breakpoint_trap:
 1:             ldx             [%curptr + TI_FLAGS], %l5
                andcc           %l5, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %g0
                be,pt           %icc, rtrap
-                clr            %l6
+                nop
                add             %sp, PTREGS_OFF, %o0
                call            syscall_trace
                 mov            1, %o1
 
                ba,pt           %xcc, rtrap
-                clr            %l6
+                nop
 
        /* This is how fork() was meant to be done, 8 instruction entry.
         *
        bne,pn          %icc, linux_syscall_trace2
         add            %l1, 0x4, %l2                   ! npc = npc+4
        stx             %l1, [%sp + PTREGS_OFF + PT_V9_TPC]
-       ba,pt           %xcc, rtrap_clr_l6
+       ba,pt           %xcc, rtrap
         stx            %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
 
 1:
        sub             %g0, %o0, %o0
        or              %g3, %g2, %g3
        stx             %o0, [%sp + PTREGS_OFF + PT_V9_I0]
-       mov             1, %l6
        stx             %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE]
        bne,pn          %icc, linux_syscall_trace2
         add            %l1, 0x4, %l2                   ! npc = npc+4
 
 
 extern void do_notify_resume(struct pt_regs *regs,
                             unsigned long orig_i0,
-                            int restart_syscall,
                             unsigned long thread_info_flags);
 
 extern asmlinkage void syscall_trace(struct pt_regs *regs,
 
 #define                RTRAP_PSTATE_IRQOFF     (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV)
 #define                RTRAP_PSTATE_AG_IRQOFF  (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV|PSTATE_AG)
 
-               /* Register %l6 keeps track of whether we are returning
-                * from a system call or not.  It is cleared if we call
-                * do_notify_resume, and it must not be otherwise modified
-                * until we fully commit to returning to userspace.
-                */
-
                .text
                .align                  32
 __handle_softirq:
                be,pt                   %xcc, __handle_user_windows_continue
                 nop
                mov                     %l5, %o1
-               mov                     %l6, %o2
                add                     %sp, PTREGS_OFF, %o0
-               mov                     %l0, %o3
+               mov                     %l0, %o2
 
                call                    do_notify_resume
                 wrpr                   %g0, RTRAP_PSTATE, %pstate
                wrpr                    %g0, RTRAP_PSTATE_IRQOFF, %pstate
-               clr                     %l6
                /* Signal delivery can modify pt_regs tstate, so we must
                 * reload it.
                 */
                be,pt                   %xcc, __handle_perfctrs_continue
                 sethi                  %hi(TSTATE_PEF), %o0
                mov                     %l5, %o1
-               mov                     %l6, %o2
                add                     %sp, PTREGS_OFF, %o0
-               mov                     %l0, %o3
+               mov                     %l0, %o2
                call                    do_notify_resume
 
                 wrpr                   %g0, RTRAP_PSTATE, %pstate
                wrpr                    %g0, RTRAP_PSTATE_IRQOFF, %pstate
-               clr                     %l6
                /* Signal delivery can modify pt_regs tstate, so we must
                 * reload it.
                 */
 
 __handle_signal:
                mov                     %l5, %o1
-               mov                     %l6, %o2
                add                     %sp, PTREGS_OFF, %o0
-               mov                     %l0, %o3
+               mov                     %l0, %o2
                call                    do_notify_resume
                 wrpr                   %g0, RTRAP_PSTATE, %pstate
                wrpr                    %g0, RTRAP_PSTATE_IRQOFF, %pstate
-               clr                     %l6
 
                /* Signal delivery can modify pt_regs tstate, so we must
                 * reload it.
                 andn                   %l1, %l4, %l1
 
                .align                  64
-               .globl                  rtrap_irq, rtrap_clr_l6, rtrap, irqsz_patchme, rtrap_xcall
+               .globl                  rtrap_irq, rtrap, irqsz_patchme, rtrap_xcall
 rtrap_irq:
-rtrap_clr_l6:  clr                     %l6
 rtrap:
 #ifndef CONFIG_SMP
                sethi                   %hi(per_cpu____cpu_data), %l0
 
        }
 }
 
-void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, int restart_syscall,
-                     unsigned long thread_info_flags)
+void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long thread_info_flags)
 {
        if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
                do_signal(regs, orig_i0);
 
        mov     %l5, %o2
        call    sun4v_insn_access_exception
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Instruction Access Exception, tl1. */
 sun4v_iacc_tl1:
        mov     %l5, %o2
        call    sun4v_insn_access_exception_tl1
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Data Access Exception, tl0. */
 sun4v_dacc:
        mov     %l5, %o2
        call    sun4v_data_access_exception
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Data Access Exception, tl1. */
 sun4v_dacc_tl1:
        mov     %l5, %o2
        call    sun4v_data_access_exception_tl1
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Memory Address Unaligned.  */
 sun4v_mna:
        mov     %l5, %o2
        call    sun4v_do_mna
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Privileged Action.  */
 sun4v_privact:
         rd     %pc, %g7
        call    do_privact
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Unaligned ldd float, tl0. */
 sun4v_lddfmna:
        mov     %l5, %o2
        call    handle_lddfmna
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        /* Unaligned std float, tl0. */
 sun4v_stdfmna:
        mov     %l5, %o2
        call    handle_stdfmna
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
 #define BRANCH_ALWAYS  0x10680000
 #define NOP            0x01000000
 
        stx     %l5, [%g6 + TI_FAULT_ADDR]      ! Save fault address
        call    do_sparc64_fault                ! Call fault handler
         add    %sp, PTREGS_OFF, %o0            ! Compute pt_regs arg
-       ba,pt   %xcc, rtrap_clr_l6              ! Restore cpu state
+       ba,pt   %xcc, rtrap                     ! Restore cpu state
         nop                                    ! Delay slot (fill me)
 
 winfix_trampoline:
 
         rd     %pc, %g7
        call    do_sparc64_fault
         add    %sp, PTREGS_OFF, %o0
-       ba,pt   %xcc, rtrap_clr_l6
+       ba,pt   %xcc, rtrap
         nop
 
        /* Be very careful about usage of the trap globals here.
         rd     %pc, %g7
        call    do_sparc64_fault
         add    %sp, PTREGS_OFF, %o0
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
 winfix_mna:
        andn    %g3, 0x7f, %g3
        mov     %l4, %o2
        call    sun4v_do_mna
         mov    %l5, %o1
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 1:     mov     %l4, %o1
        mov     %l5, %o2
        call    mem_address_unaligned
         nop
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
 winfix_dax:
        andn    %g3, 0x7f, %g3
         add    %sp, PTREGS_OFF, %o0
        call    sun4v_data_access_exception
         nop
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 1:     call    spitfire_data_access_exception
         nop
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
 #endif
        call            smp_synchronize_tick_client
         nop
-       clr             %l6
        b               rtrap_xcall
         ldx            [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
 
 #endif
        call            __show_regs
         add            %sp, PTREGS_OFF, %o0
-       clr             %l6
        /* Has to be a non-v9 branch due to the large distance. */
        b               rtrap_xcall
         ldx            [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
        mov     %l4, %o0
        call    hypervisor_tlbop_error_xcall
         mov    %l5, %o1
-       ba,a,pt %xcc, rtrap_clr_l6
+       ba,a,pt %xcc, rtrap
 
        .globl          __hypervisor_xcall_flush_tlb_mm
 __hypervisor_xcall_flush_tlb_mm: /* 21 insns */
 
        call    routine;                                \
         add    %sp, PTREGS_OFF, %o0;                   \
        ba,pt   %xcc, rtrap;                            \
-        clr    %l6;                                    \
+        nop;                                           \
        nop;
 
 #define TRAP_7INSNS(routine)                           \
        call    routine;                                \
         add    %sp, PTREGS_OFF, %o0;                   \
        ba,pt   %xcc, rtrap;                            \
-        clr    %l6;
+        nop;
 
 #define TRAP_SAVEFPU(routine)                          \
        sethi   %hi(109f), %g7;                         \
        call    routine;                                \
         add    %sp, PTREGS_OFF, %o0;                   \
        ba,pt   %xcc, rtrap;                            \
-        clr    %l6;                                    \
+        nop;                                           \
        nop;
 
 #define TRAP_NOSAVE(routine)                           \
        call    routine;                                \
         add    %sp, PTREGS_OFF, %o0;                   \
        ba,pt   %xcc, rtrap;                            \
-        clr    %l6;                                    \
+        nop;                                           \
        nop;
        
 #define TRAP_ARG(routine, arg)                         \
        call    routine;                                \
         mov    arg, %o1;                               \
        ba,pt   %xcc, rtrap;                            \
-        clr    %l6;
+        nop;
        
 #define TRAPTL1_ARG(routine, arg)                      \
        sethi   %hi(109f), %g7;                         \
        call    routine;                                \
         mov    arg, %o1;                               \
        ba,pt   %xcc, rtrap;                            \
-        clr    %l6;
+        nop;
        
 #define SYSCALL_TRAP(routine, systbl)                  \
        sethi   %hi(109f), %g7;                         \
        ldx     [%sp + PTREGS_OFF + PT_V9_TNPC], %l1;                   \
        add     %l1, 4, %l2;                                            \
        stx     %l1, [%sp + PTREGS_OFF + PT_V9_TPC];                    \
-       ba,pt   %xcc, rtrap_clr_l6;                                     \
+       ba,pt   %xcc, rtrap;                                            \
         stx    %l2, [%sp + PTREGS_OFF + PT_V9_TNPC];
                
 #ifdef CONFIG_KPROBES