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);
--
⑨