aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpu/ChangeLog4
-rw-r--r--cpu/m32c.cpu4
-rw-r--r--opcodes/ChangeLog4
-rw-r--r--opcodes/m32c-ibld.c4
4 files changed, 12 insertions, 4 deletions
diff --git a/cpu/ChangeLog b/cpu/ChangeLog
index 975feea..667538a 100644
--- a/cpu/ChangeLog
+++ b/cpu/ChangeLog
@@ -1,3 +1,7 @@
+2010-07-03 DJ Delorie <dj@delorie.com>
+
+ * m32c.cpu (f-dsp-8-s24): Mask high byte after shifting it.
+
2010-02-11 Doug Evans <dje@sebabeach.org>
* m32r.cpu (HASH-PREFIX): Delete.
diff --git a/cpu/m32c.cpu b/cpu/m32c.cpu
index 28d6ea5..bcc3616 100644
--- a/cpu/m32c.cpu
+++ b/cpu/m32c.cpu
@@ -572,10 +572,10 @@
)
(df f-dsp-8-s24 "24 bit signed" (all-isas) 8 24 INT
((value pc) (or SI
- (or (srl value 16) (and value #xff00))
+ (or (and (srl value 16) #xff) (and value #xff00))
(sll (ext INT (trunc QI (and value #xff))) 16)))
((value pc) (or SI
- (or (srl value 16) (and value #xff00))
+ (or (and (srl value 16) #xff) (and value #xff00))
(sll (ext INT (trunc QI (and value #xff))) 16)))
)
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 50489cd..527a93c 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2010-07-03 DJ Delorie <dj@delorie.com>
+
+ * m32c-ibld.c: Regenerate.
+
2010-07-03 Alan Modra <amodra@gmail.com>
* ppc-opc.c (PWR2COM): Define.
diff --git a/opcodes/m32c-ibld.c b/opcodes/m32c-ibld.c
index 66fc999..e83d8e0 100644
--- a/opcodes/m32c-ibld.c
+++ b/opcodes/m32c-ibld.c
@@ -1077,7 +1077,7 @@ m32c_cgen_insert_operand (CGEN_CPU_DESC cd,
case M32C_OPERAND_DSP_8_S24 :
{
long value = fields->f_dsp_8_s24;
- value = ((((((USI) (value) >> (16))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
+ value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
errmsg = insert_normal (cd, value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, buffer);
}
break;
@@ -2234,7 +2234,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC cd,
{
long value;
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, pc, & value);
- value = ((((((USI) (value) >> (16))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
+ value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((EXTQISI (TRUNCSIQI (((value) & (255))))) << (16))));
fields->f_dsp_8_s24 = value;
}
break;