Remove i386_elf_emit_arch_note
[deliverable/binutils-gdb.git] / sim / ppc / bits.c
index 2424e859f5d0edfa1e2f47ebf06a0d1d4182f784..767f196fad58a23156dfed7cba21adeaed767a23 100644 (file)
@@ -4,7 +4,7 @@
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
+    the Free Software Foundation; either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -13,8 +13,7 @@
     GNU General Public License for more details.
  
     You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+    along with this program; if not, see <http://www.gnu.org/licenses/>.
  
     */
 
 
 #include "basics.h"
 
+INLINE_BITS\
+(unsigned64)
+LSMASKED64 (unsigned64 word,
+           int start,
+           int stop)
+{
+  word &= LSMASK64 (start, stop);
+  return word;
+}
+
+INLINE_BITS\
+(unsigned64)
+LSEXTRACTED64 (unsigned64 val,
+              int start,
+              int stop)
+{
+  val <<= (64 - 1 - start); /* drop high bits */
+  val >>= (64 - 1 - start) + (stop); /* drop low bits */
+  return val;
+}
+INLINE_BITS\
+(unsigned32)
+MASKED32(unsigned32 word,
+        unsigned start,
+        unsigned stop)
+{
+  return (word & MASK32(start, stop));
+}
+
+INLINE_BITS\
+(unsigned64)
+MASKED64(unsigned64 word,
+        unsigned start,
+        unsigned stop)
+{
+  return (word & MASK64(start, stop));
+}
+
+INLINE_BITS\
+(unsigned_word)
+MASKED(unsigned_word word,
+       unsigned start,
+       unsigned stop)
+{
+  return ((word) & MASK(start, stop));
+}
+
+
+
+INLINE_BITS\
+(unsigned_word)
+EXTRACTED(unsigned_word word,
+         unsigned start,
+         unsigned stop)
+{
+  ASSERT(start <= stop);
+#if (WITH_TARGET_WORD_BITSIZE == 64)
+  return _EXTRACTEDn(64, word, start, stop);
+#else
+  if (stop < 32)
+    return 0;
+  else
+    return ((word >> (63 - stop))
+           & MASK(start+(63-stop), 63));
+#endif
+}
+
+
+INLINE_BITS\
+(unsigned_word)
+INSERTED(unsigned_word word,
+        unsigned start,
+        unsigned stop)
+{
+  ASSERT(start <= stop);
+#if (WITH_TARGET_WORD_BITSIZE == 64)
+  return _INSERTEDn(64, word, start, stop);
+#else
+  if (stop < 32)
+    return 0;
+  else
+    return ((word & MASK(start+(63-stop), 63))
+           << (63 - stop));
+#endif
+}
+
+
+INLINE_BITS\
+(unsigned32)
+ROTL32(unsigned32 val,
+       long shift)
+{
+  ASSERT(shift >= 0 && shift <= 32);
+  return _ROTLn(32, val, shift);
+}
+
+
+INLINE_BITS\
+(unsigned64)
+ROTL64(unsigned64 val,
+       long shift)
+{
+  ASSERT(shift >= 0 && shift <= 64);
+  return _ROTLn(64, val, shift);
+}
+
 #endif /* _BITS_C_ */
This page took 0.025143 seconds and 4 git commands to generate.