Subversion Repositories HelenOS

Rev

Rev 1883 | Rev 1916 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1883 Rev 1915
Line 744... Line 744...
744
	 * the kernel stack of THREAD locked in DTLB.
744
	 * the kernel stack of THREAD locked in DTLB.
745
	 */
745
	 */
746
	stx %g1, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TSTATE]
746
	stx %g1, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TSTATE]
747
	stx %g2, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC]
747
	stx %g2, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC]
748
	stx %g3, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC]
748
	stx %g3, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC]
-
 
749
 
-
 
750
	/*
-
 
751
	 * Save the Y register.
-
 
752
	 * This register is deprecated according to SPARC V9 specification
-
 
753
	 * and is only present for backward compatibility with previous
-
 
754
	 * versions of the SPARC architecture.
-
 
755
	 * Surprisingly, gcc makes use of this register without a notice.
-
 
756
	 */
-
 
757
	rd %y, %g4
-
 
758
	stx %g4, [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_Y]
749
	
759
	
750
	wrpr %g0, 0, %tl
760
	wrpr %g0, 0, %tl
751
	wrpr %g0, PSTATE_PRIV_BIT | PSTATE_PEF_BIT, %pstate
761
	wrpr %g0, PSTATE_PRIV_BIT | PSTATE_PEF_BIT, %pstate
752
	SAVE_GLOBALS
762
	SAVE_GLOBALS
753
	
763
	
Line 775... Line 785...
775
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TSTATE], %g1
785
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TSTATE], %g1
776
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC], %g2
786
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TPC], %g2
777
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC], %g3
787
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC], %g3
778
 
788
 
779
	/*
789
	/*
-
 
790
	 * Restore Y.
-
 
791
	 */
-
 
792
	ldx [%sp + PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_Y], %g4
-
 
793
	wr %g4, %y
-
 
794
 
-
 
795
	/*
780
	 * Copy PSTATE.PEF to the in-register copy of TSTATE.
796
	 * Copy PSTATE.PEF to the in-register copy of TSTATE.
781
	 */
797
	 */
782
	and %l1, PSTATE_PEF_BIT, %l1
798
	and %l1, PSTATE_PEF_BIT, %l1
783
	sllx %l1, TSTATE_PSTATE_SHIFT, %l1
799
	sllx %l1, TSTATE_PSTATE_SHIFT, %l1
784
	sethi %hi(TSTATE_PEF_BIT), %g4
800
	sethi %hi(TSTATE_PEF_BIT), %g4