summaryrefslogtreecommitdiff
path: root/target-sparc/op.c
diff options
context:
space:
mode:
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)