Index: sim/rx/rx.c |
diff --git a/sim/rx/rx.c b/sim/rx/rx.c |
index 6d9d9d572e04093498a6ee976bb4cdec1042f4ca..dd886760aee10a7a3a9a6c04f632315192c1581e 100644 |
--- a/sim/rx/rx.c |
+++ b/sim/rx/rx.c |
@@ -1,6 +1,6 @@ |
/* rx.c --- opcode semantics for stand-alone RX simulator. |
-Copyright (C) 2008-2012 Free Software Foundation, Inc. |
+Copyright (C) 2008-2013 Free Software Foundation, Inc. |
Contributed by Red Hat, Inc. |
This file is part of the GNU simulators. |
@@ -732,8 +732,7 @@ poppc() |
c = val & carry_mask; \ |
val OP 1; \ |
} \ |
- if (count) \ |
- set_oszc (val, 4, c); \ |
+ set_oszc (val, 4, c); \ |
PD (val); \ |
} |
@@ -1802,6 +1801,22 @@ decode_opcode () |
E1; |
break; |
+ case RXO_satr: |
+ if (FLAG_O && ! FLAG_S) |
+ { |
+ put_reg (6, 0x0); |
+ put_reg (5, 0x7fffffff); |
+ put_reg (4, 0xffffffff); |
+ } |
+ else if (FLAG_O && FLAG_S) |
+ { |
+ put_reg (6, 0xffffffff); |
+ put_reg (5, 0x80000000); |
+ put_reg (4, 0x0); |
+ } |
+ E1; |
+ break; |
+ |
case RXO_sbb: |
MATH_OP (-, ! carry); |
break; |