aboutsummaryrefslogtreecommitdiff
path: root/target-sparc/op.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-11 16:43:30 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-07-11 16:43:30 +0000
commit6ea4a6c875a2c0902fc19d560ef33228daa88603 (patch)
tree1998c363f9355524798de9e47040b57314c6a438 /target-sparc/op.c
parent3c4c9f9f51599845fba61240aba0f38485df7c14 (diff)
More alignment checks
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3060 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc/op.c')
-rw-r--r--target-sparc/op.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/target-sparc/op.c b/target-sparc/op.c
index 4ab0667797..f1f6ccefc5 100644
--- a/target-sparc/op.c
+++ b/target-sparc/op.c
@@ -1518,10 +1518,7 @@ void OPPROTO op_movl_npc_im(void)
void OPPROTO op_movl_npc_T0(void)
{
- if (T0 & 0x3)
- raise_exception(TT_UNALIGNED);
- else
- env->npc = T0;
+ env->npc = T0;
}
void OPPROTO op_mov_pc_npc(void)
@@ -2368,3 +2365,15 @@ VIS_CMPOP(op_fcmple, FCMPLE)
VIS_CMPOP(op_fcmpne, FCMPNE)
#endif
+
+#define CHECK_ALIGN_OP(align) \
+ void OPPROTO op_check_align_T0_ ## align (void) \
+ { \
+ if (T0 & align) \
+ raise_exception(TT_UNALIGNED); \
+ FORCE_RET(); \
+ }
+
+CHECK_ALIGN_OP(1)
+CHECK_ALIGN_OP(3)
+CHECK_ALIGN_OP(7)