git: 9front

Download patch

ref: ddaf4aa36233008980a0df6f4731bdeeccc64898
parent: 8222350b8bba517fd9e4109bd350de3360e1d4dd
author: jpathy <jpathy@mail.nanosouffle.net>
date: Fri Jun 14 19:42:30 EDT 2013

fpiarm: condok() verfiy before specialop() omap/kw

--- a/sys/src/9/kw/fpiarm.c
+++ b/sys/src/9/kw/fpiarm.c
@@ -749,8 +749,10 @@
 		for(i = 0; specialopc[i].f; i++)
 			if((op & specialopc[i].mask) == specialopc[i].opc)
 				break;
-		if(specialopc[i].f)
-			specialopc[i].f(ur->pc, op, ur);
+		if(specialopc[i].f){
+			if(condok(ur->psr, op>>28))
+				specialopc[i].f(ur->pc, op, ur);
+		}
 		else if(ISVFPOP(cp, o)){
 			if(condok(ur->psr, op>>28))
 				vfpemu(ur->pc, op, ur, ufp);
--- a/sys/src/9/omap/fpiarm.c
+++ b/sys/src/9/omap/fpiarm.c
@@ -749,8 +749,10 @@
 		for(i = 0; specialopc[i].f; i++)
 			if((op & specialopc[i].mask) == specialopc[i].opc)
 				break;
-		if(specialopc[i].f)
-			specialopc[i].f(ur->pc, op, ur);
+		if(specialopc[i].f){
+			if(condok(ur->psr, op>>28))
+				specialopc[i].f(ur->pc, op, ur);
+		}
 		else if(ISVFPOP(cp, o)){
 			if(condok(ur->psr, op>>28))
 				vfpemu(ur->pc, op, ur, ufp);
--