This is the mail archive of the
sid@sources.redhat.com
mailing list for the SID project.
cgen-cpu/tracedis.c patch
- From: Ben Elliston <bje at redhat dot com>
- To: sid at sources dot redhat dot com
- Date: Wed, 23 Jan 2002 10:36:57 +1100 (EST)
- Subject: cgen-cpu/tracedis.c patch
The following patch adds a few more BFD functions to tracedis.c. They
are needed because a simulator I am targetting already has a
hand-written disassembler which uses these BFD functions. Okay to
commit?
At what point will be abandon this approach and make SID dependent on
libbfd?
Ben
2002-01-23 Ben Elliston <bje@redhat.com>
* tracedis.c (bfd_getb16): New function.
(bfd_getl16): Likewise.
(bfd_getb32): Likewise.
(bfd_getl32): Likewise.
Index: tracedis.c
===================================================================
RCS file: /cvs/cvsfiles/devo/sid/component/cgen-cpu/tracedis.c,v
retrieving revision 1.2
diff -u -c -r1.2 tracedis.c
*** tracedis.c 2001/06/08 07:18:50 1.2
--- tracedis.c 2002/01/22 23:35:06
***************
*** 60,65 ****
--- 60,106 ----
}
/* Stolen from libbfd. */
+
+ bfd_vma
+ bfd_getb16 (addr)
+ register const bfd_byte *addr;
+ {
+ return (addr[0] << 8) | addr[1];
+ }
+
+ bfd_vma
+ bfd_getl16 (addr)
+ register const bfd_byte *addr;
+ {
+ return (addr[1] << 8) | addr[0];
+ }
+
+ bfd_vma
+ bfd_getb32 (addr)
+ register const bfd_byte *addr;
+ {
+ unsigned long v;
+
+ v = (unsigned long) addr[0] << 24;
+ v |= (unsigned long) addr[1] << 16;
+ v |= (unsigned long) addr[2] << 8;
+ v |= (unsigned long) addr[3];
+ return (bfd_vma) v;
+ }
+
+ bfd_vma
+ bfd_getl32 (addr)
+ register const bfd_byte *addr;
+ {
+ unsigned long v;
+
+ v = (unsigned long) addr[0];
+ v |= (unsigned long) addr[1] << 8;
+ v |= (unsigned long) addr[2] << 16;
+ v |= (unsigned long) addr[3] << 24;
+ return (bfd_vma) v;
+ }
+
void
bfd_put_bits (data, addr, bits, big_p)
bfd_vma data;