diff options
author | Dave Brolley <brolley@redhat.com> | 2000-09-26 17:23:58 +0000 |
---|---|---|
committer | Dave Brolley <brolley@redhat.com> | 2000-09-26 17:23:58 +0000 |
commit | 7c18f477f5162709067290751a1998f059018666 (patch) | |
tree | eb06b62519f95bbf9aa33431f9c6d836769e3dc0 | |
parent | 9e854ff02439a84420db4d2a885e12989d96a601 (diff) | |
download | gdb-7c18f477f5162709067290751a1998f059018666.tar.gz |
2000-09-26 Dave Brolley <brolley@redhat.com>
* cgen-utils.c (RORQI): New function.
(ROLQI): New function.
(RORHI): New function.
(ROLHI): New function.
-rw-r--r-- | sim/common/ChangeLog | 7 | ||||
-rw-r--r-- | sim/common/cgen-utils.c | 68 |
2 files changed, 75 insertions, 0 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 3f13ea6f54d..4b43e06184d 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,10 @@ +2000-09-26 Dave Brolley <brolley@redhat.com> + + * cgen-utils.c (RORQI): New function. + (ROLQI): New function. + (RORHI): New function. + (ROLHI): New function. + 2000-08-28 Dave Brolley <brolley@redhat.com> * cgen-trace.c (sim_cgen_disassemble_insn): Make sure entire insn is diff --git a/sim/common/cgen-utils.c b/sim/common/cgen-utils.c index e7407ed5726..a45804e34a1 100644 --- a/sim/common/cgen-utils.c +++ b/sim/common/cgen-utils.c @@ -321,6 +321,74 @@ CONVDISI (val) #endif /* DI_FN_SUPPORT */ +QI +RORQI (val, shift) + QI val; + int shift; +{ + if (shift != 0) + { + int remain = 8 - shift; + int mask = (1 << shift) - 1; + QI result = (val & mask) << remain; + mask = (1 << remain) - 1; + result |= (val >> shift) & mask; + return result; + } + return val; +} + +QI +ROLQI (val, shift) + QI val; + int shift; +{ + if (shift != 0) + { + int remain = 8 - shift; + int mask = (1 << remain) - 1; + QI result = (val & mask) << shift; + mask = (1 << shift) - 1; + result |= (val >> remain) & mask; + return result; + } + return val; +} + +HI +RORHI (val, shift) + HI val; + int shift; +{ + if (shift != 0) + { + int remain = 16 - shift; + int mask = (1 << shift) - 1; + HI result = (val & mask) << remain; + mask = (1 << remain) - 1; + result |= (val >> shift) & mask; + return result; + } + return val; +} + +HI +ROLHI (val, shift) + HI val; + int shift; +{ + if (shift != 0) + { + int remain = 16 - shift; + int mask = (1 << remain) - 1; + HI result = (val & mask) << shift; + mask = (1 << shift) - 1; + result |= (val >> remain) & mask; + return result; + } + return val; +} + SI RORSI (val, shift) SI val; |