summaryrefslogtreecommitdiff
path: root/rtems-coverage
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-05-19 17:06:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-05-19 17:06:29 +0000
commit76ac827934b644ac365374027169ffd6d1af5818 (patch)
tree66dad1b3262af9c273d7fec5b8a35bbf38e02d6d /rtems-coverage
parent8e777521104d53ea41d6bcfb282b6dd33794cf4a (diff)
2010-05-19 Joel Sherrill <joel.sherrilL@OARcorp.com>
* Target_i386.cc, Target_i386.h: Spacing. * Target_m68k.cc, Target_m68k.h, Target_powerpc.cc: Branch information now correct on m68k and PowerPC.
Diffstat (limited to 'rtems-coverage')
-rw-r--r--rtems-coverage/ChangeLog6
-rw-r--r--rtems-coverage/Target_i386.cc1
-rw-r--r--rtems-coverage/Target_i386.h12
-rw-r--r--rtems-coverage/Target_m68k.cc48
-rw-r--r--rtems-coverage/Target_m68k.h6
-rw-r--r--rtems-coverage/Target_powerpc.cc24
6 files changed, 84 insertions, 13 deletions
diff --git a/rtems-coverage/ChangeLog b/rtems-coverage/ChangeLog
index deea423..eed9ee4 100644
--- a/rtems-coverage/ChangeLog
+++ b/rtems-coverage/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-19 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ * Target_i386.cc, Target_i386.h: Spacing.
+ * Target_m68k.cc, Target_m68k.h, Target_powerpc.cc: Branch
+ information now correct on m68k and PowerPC.
+
2010-05-19 Jennifer Averett <Jennifer.Averett@OARcorp.com>
* Target_powerpc.cc: Added missing branch instructions to table of
diff --git a/rtems-coverage/Target_i386.cc b/rtems-coverage/Target_i386.cc
index 3914cc0..4a09d4c 100644
--- a/rtems-coverage/Target_i386.cc
+++ b/rtems-coverage/Target_i386.cc
@@ -105,7 +105,6 @@ namespace Target {
return TRACE_OP_BR0;
}
-
TargetBase *Target_i386_Constructor(
std::string targetName
)
diff --git a/rtems-coverage/Target_i386.h b/rtems-coverage/Target_i386.h
index 732f38d..9bf86d7 100644
--- a/rtems-coverage/Target_i386.h
+++ b/rtems-coverage/Target_i386.h
@@ -51,18 +51,14 @@ namespace Target {
int& size
);
- /*!
- * This method returns the bit set by Qemu in the trace record
- * when a branch is taken.
- */
+ /* Documentation inherited from base class */
virtual uint8_t qemuTakenBit(void);
- /*!
- * This method returns the bit set by Qemu in the trace record
- * when a branch is taken.
- */
+ /* Documentation inherited from base class */
virtual uint8_t qemuNotTakenBit(void);
+
private:
+
};
//!
diff --git a/rtems-coverage/Target_m68k.cc b/rtems-coverage/Target_m68k.cc
index ee3fa06..7ec0706 100644
--- a/rtems-coverage/Target_m68k.cc
+++ b/rtems-coverage/Target_m68k.cc
@@ -9,6 +9,7 @@
* functions supporting target unique functionallity.
*/
#include "Target_m68k.h"
+#include "qemu-traces.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -20,21 +21,53 @@ namespace Target {
TargetBase( targetName )
{
branchInstructions.push_back("bcc");
+ branchInstructions.push_back("bccs");
+ branchInstructions.push_back("bccl");
branchInstructions.push_back("bcs");
+ branchInstructions.push_back("bcss");
+ branchInstructions.push_back("bcsl");
branchInstructions.push_back("beq");
+ branchInstructions.push_back("beqs");
+ branchInstructions.push_back("beql");
branchInstructions.push_back("bge");
+ branchInstructions.push_back("bges");
+ branchInstructions.push_back("bgel");
branchInstructions.push_back("bgt");
+ branchInstructions.push_back("bgts");
+ branchInstructions.push_back("bgtl");
branchInstructions.push_back("bhi");
+ branchInstructions.push_back("bhis");
+ branchInstructions.push_back("bhil");
branchInstructions.push_back("bhs");
+ branchInstructions.push_back("bhss");
+ branchInstructions.push_back("bhsl");
branchInstructions.push_back("ble");
+ branchInstructions.push_back("bles");
+ branchInstructions.push_back("blel");
branchInstructions.push_back("blo");
+ branchInstructions.push_back("blos");
+ branchInstructions.push_back("blol");
branchInstructions.push_back("bls");
+ branchInstructions.push_back("blss");
+ branchInstructions.push_back("blsl");
branchInstructions.push_back("blt");
+ branchInstructions.push_back("blts");
+ branchInstructions.push_back("bltl");
branchInstructions.push_back("bmi");
+ branchInstructions.push_back("bmis");
+ branchInstructions.push_back("bmil");
branchInstructions.push_back("bne");
+ branchInstructions.push_back("bnes");
+ branchInstructions.push_back("bnel");
branchInstructions.push_back("bpl");
+ branchInstructions.push_back("bpls");
+ branchInstructions.push_back("bpll");
branchInstructions.push_back("bvc");
+ branchInstructions.push_back("bvcs");
+ branchInstructions.push_back("bvcl");
branchInstructions.push_back("bvs");
+ branchInstructions.push_back("bvss");
+ branchInstructions.push_back("bvsl");
branchInstructions.sort();
@@ -70,10 +103,23 @@ namespace Target {
const char* const instruction
)
{
- fprintf( stderr, "DETERMINE BRANCH INSTRUCTIONS FOR THIS ARCHITECTURE! -- fix me\n" );
+ fprintf(
+ stderr,
+ "DETERMINE BRANCH INSTRUCTIONS FOR THIS ARCHITECTURE! -- fix me\n"
+ );
exit( -1 );
}
+ uint8_t Target_m68k::qemuTakenBit(void)
+ {
+ return TRACE_OP_BR1;
+ }
+
+ uint8_t Target_m68k::qemuNotTakenBit(void)
+ {
+ return TRACE_OP_BR0;
+ }
+
TargetBase *Target_m68k_Constructor(
std::string targetName
)
diff --git a/rtems-coverage/Target_m68k.h b/rtems-coverage/Target_m68k.h
index 581fe52..f740fd2 100644
--- a/rtems-coverage/Target_m68k.h
+++ b/rtems-coverage/Target_m68k.h
@@ -59,6 +59,12 @@ namespace Target {
const char* const instruction
);
+ /* Documentation inherited from base class */
+ virtual uint8_t qemuTakenBit(void);
+
+ /* Documentation inherited from base class */
+ virtual uint8_t qemuNotTakenBit(void);
+
private:
};
diff --git a/rtems-coverage/Target_powerpc.cc b/rtems-coverage/Target_powerpc.cc
index 4d05b5c..060c09d 100644
--- a/rtems-coverage/Target_powerpc.cc
+++ b/rtems-coverage/Target_powerpc.cc
@@ -19,9 +19,27 @@ namespace Target {
Target_powerpc::Target_powerpc( std::string targetName ):
TargetBase( targetName )
{
- branchInstructions.push_back("b");
- branchInstructions.push_back("ba");
- branchInstructions.push_back("bl");
+ // bl is actually branch and link which is a call
+ // branchInstructions.push_back("b");
+ // branchInstructions.push_back("ba");
+ branchInstructions.push_back("beq");
+ branchInstructions.push_back("beq+");
+ branchInstructions.push_back("beq-");
+ branchInstructions.push_back("bne");
+ branchInstructions.push_back("bne+");
+ branchInstructions.push_back("bne-");
+ branchInstructions.push_back("bge");
+ branchInstructions.push_back("bge+");
+ branchInstructions.push_back("bge-");
+ branchInstructions.push_back("bgt");
+ branchInstructions.push_back("bgt+");
+ branchInstructions.push_back("bgt-");
+ branchInstructions.push_back("ble");
+ branchInstructions.push_back("ble+");
+ branchInstructions.push_back("ble-");
+ branchInstructions.push_back("blt");
+ branchInstructions.push_back("blt+");
+ branchInstructions.push_back("blt-");
branchInstructions.push_back("bla");
branchInstructions.push_back("bc");
branchInstructions.push_back("bca");