diff packages/hal/sparclite/arch/current/src/vec_xvsr.S @ 40:a3cc6665b684 ecos-sw-1999-10-01

Merge from eCos master repository on 1999-10-01-07:47:04-BST
author jlarmour
date Fri, 01 Oct 1999 13:25:47 +0000
parents 443894e2e912
children c38311975d4f
line wrap: on
line diff
--- a/packages/hal/sparclite/arch/current/src/vec_xvsr.S
+++ b/packages/hal/sparclite/arch/current/src/vec_xvsr.S
@@ -82,6 +82,7 @@ hal_default_exception_vsr:
 
 	! must establish a safe stack before re-enabling interrupts + traps
 	and	%l0, __WINBITS, %l7	! CWP extracted
+	! no inc/dec here, so no need for special measures for not-8-windows
 	mov	1, %l6
 	sll	%l6, %l7, %l6		! 1 << CWP
 	rd	%wim, %l5
@@ -236,6 +237,14 @@ 1:	! now save away the regs we must pres
 
 	add	%l0, 1, %l7		! interruptee~s CWP plus noise
 	and	%l7, __WINBITS, %l7	! CWP only
+#if 8 == __WINSIZE
+	! it is in range already
+#else   // expect 5 or 6 or 7 windows
+	cmp	%l7, __WINSIZE
+	bge,a	567f			! taken: do delay slot, handle overflow
+	 mov	0, %l7			! only if .ge. above
+567:	
+#endif
 	mov	1, %l6
 	sll	%l6, %l7, %l6		! 1 << CWP
 	rd	%wim, %l5