Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Mar 2006 20:55:49 GMT
From:      Kip Macy <kmacy@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 93742 for review
Message-ID:  <200603212055.k2LKtnkk086488@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=93742

Change 93742 by kmacy@kmacy_storage:sun4vtmp on 2006/03/21 20:55:25

	fault in more spill/fill exception handlers as they get executed for the first time

Affected files ...

.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/wbuf.S#10 edit

Differences ...

==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/wbuf.S#10 (text+ko) ====

@@ -29,8 +29,24 @@
 END(fault_32bit_so1)
 
 ENTRY(fault_64bit_sn0)
-	MAGIC_TRAP_ON	
-	MAGIC_EXIT	
+	MAGIC_TRAP_ON
+	GET_PCB(%g4)
+        stx	%sp, [%g4 + PCB_RWSP]
+        add     %g4, PCB_RW, %g3
+        SAVE_WINDOW(%g3)
+	mov	1, %g3
+	stx	%g3, [%g4 + PCB_NSAVED]
+	set	trap, %g1
+	mov	%g5, %g2
+	mov	%g6, %g3
+	sub	%g0, 1, %g4
+
+	
+	rdpr	%tstate, %g5
+	and	%g5, TSTATE_CWP_MASK, %g5
+	MAGIC_TRAP_OFF
+	ba,pt	%xcc, tl0_utrap
+	  wrpr	%g0, %g5, %cwp	
 END(fault_64bit_sn0)
 
 ENTRY(fault_64bit_sn1)
@@ -86,20 +102,19 @@
 ENTRY(fault_64bit_so1)
 	GET_PCB_PHYS(%g5, %g6)
 	wr	%g0, ASI_REAL, %asi
-	ldxa	[%g6 + PCB_NSAVED]%asi, %g2
-	add	%g2, 1, %g3
-	stxa	%g3, [%g6 + PCB_NSAVED]%asi
+	ldxa	[%g6 + PCB_NSAVED]%asi, %g5
+	add	%g5, 1, %g7
+	stxa	%g7, [%g6 + PCB_NSAVED]%asi
 
-	sll	%g2, PTR_SHIFT, %g4
-	add	%g6, PCB_RWSP, %g3
-	add	%g3, %g4, %g4
-	stxa	%sp, [%g4]%asi
+	sll	%g5, PTR_SHIFT, %g7
+	add	%g6, %g7, %g7
+	stxa	%sp, [%g7 + PCB_RWSP]%asi
 
-	sll	%g2, RW_SHIFT, %g4		! offset
-	add	%g6, PCB_RW, %g3		! start of wbuf area
-	add	%g3, %g4, %g3			! offset into wbuf area
+	sll	%g5, RW_SHIFT, %g7		! offset
+	add	%g6, %g7, %g7			! pcb + offset
+	add	%g7, PCB_RW, %g7		! offset into wbuf area
 
-	SAVE_WINDOW_ASI(%g3)
+	SAVE_WINDOW_ASI(%g7)
 	saved
 	set	tl0_trap, %g5
 	wrpr	%g5, %tnpc
@@ -127,7 +142,6 @@
 	!
 	wrpr	%g0, 1, %tl
 	set	TSTATE_KERNEL | TSTATE_IE, %g1
-	GET_PCPU_SCRATCH
 	wrpr	%g0, %g1, %tstate
 	set	user_rtt, %g1
 	wrpr	%g0, %g1, %tpc
@@ -135,12 +149,9 @@
 	wrpr	%g0, %g1, %tnpc
 
 	set	trap, %g1
-	mov	T_DATA_MISS, %g2	! XXX is this always true?
+	mov	%g5, %g2	
 	mov	%g6, %g3
-	cmp	%g5, T_ALIGNMENT
-	bne	%icc, 1f
-	  nop	
-1:
+
 	sub	%g0, 1, %g4
 	rdpr	%wstate, %l1
 	sllx	%l1, WSTATE_SHIFT, %l1
@@ -159,8 +170,9 @@
 END(fault_64bit_fn0)
 
 ENTRY(fault_64bit_fn1)
-	MAGIC_TRAP_ON	
-	MAGIC_EXIT	
+	wrpr	%g0, 1, %gl
+	b	fault_fn1_common
+	  nop
 END(fault_64bit_fn1)
 
 ENTRY(fault_rtt_fn1)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603212055.k2LKtnkk086488>