source: rtems-tools/tester/covoar/Target_m68k.cc @ f9a4b2c

5
Last change on this file since f9a4b2c was 100f517, checked in by Chris Johns <chrisj@…>, on 05/09/14 at 11:50:37

covoar: Merger the covoar source from rtems-testing.git.

Use waf to build covoar.

  • Property mode set to 100644
File size: 3.4 KB
Line 
1/*! @file Target_m68k.cc
2 *  @brief Target_m68k Implementation
3 *
4 *  This file contains the implementation of the base class for
5 *  functions supporting target unique functionallity.
6 */
7#include "Target_m68k.h"
8#include "qemu-traces.h"
9#include <stdio.h>
10#include <stdlib.h>
11#include <string.h>
12#include <unistd.h>
13
14namespace Target {
15
16  Target_m68k::Target_m68k( std::string targetName ):
17    TargetBase( targetName )
18  {
19    branchInstructions.push_back("bcc");
20    branchInstructions.push_back("bccs");
21    branchInstructions.push_back("bccl");
22    branchInstructions.push_back("bcs");
23    branchInstructions.push_back("bcss");
24    branchInstructions.push_back("bcsl");
25    branchInstructions.push_back("beq");
26    branchInstructions.push_back("beqs");
27    branchInstructions.push_back("beql");
28    branchInstructions.push_back("bge");
29    branchInstructions.push_back("bges");
30    branchInstructions.push_back("bgel");
31    branchInstructions.push_back("bgt");
32    branchInstructions.push_back("bgts");
33    branchInstructions.push_back("bgtl");
34    branchInstructions.push_back("bhi");
35    branchInstructions.push_back("bhis");
36    branchInstructions.push_back("bhil");
37    branchInstructions.push_back("bhs");
38    branchInstructions.push_back("bhss");
39    branchInstructions.push_back("bhsl");
40    branchInstructions.push_back("ble");
41    branchInstructions.push_back("bles");
42    branchInstructions.push_back("blel");
43    branchInstructions.push_back("blo");
44    branchInstructions.push_back("blos");
45    branchInstructions.push_back("blol");
46    branchInstructions.push_back("bls");
47    branchInstructions.push_back("blss");
48    branchInstructions.push_back("blsl");
49    branchInstructions.push_back("blt");
50    branchInstructions.push_back("blts");
51    branchInstructions.push_back("bltl");
52    branchInstructions.push_back("bmi");
53    branchInstructions.push_back("bmis");
54    branchInstructions.push_back("bmil");
55    branchInstructions.push_back("bne");
56    branchInstructions.push_back("bnes");
57    branchInstructions.push_back("bnel");
58    branchInstructions.push_back("bpl");
59    branchInstructions.push_back("bpls");
60    branchInstructions.push_back("bpll");
61    branchInstructions.push_back("bvc");
62    branchInstructions.push_back("bvcs");
63    branchInstructions.push_back("bvcl");
64    branchInstructions.push_back("bvs");
65    branchInstructions.push_back("bvss");
66    branchInstructions.push_back("bvsl");
67 
68    branchInstructions.sort();
69
70  }
71
72  Target_m68k::~Target_m68k()
73  {
74  }
75
76  bool Target_m68k::isNopLine(
77    const char* const line,
78    int&              size
79  )
80  {
81    if (!strcmp( &line[strlen(line)-3], "nop")) {
82      size = 2;
83      return true;
84    }
85
86    #define GNU_LD_FILLS_ALIGNMENT_WITH_RTS
87    #if defined(GNU_LD_FILLS_ALIGNMENT_WITH_RTS)
88      // Until binutils 2.20, binutils would fill with rts not nop
89      if (!strcmp( &line[strlen(line)-3], "rts")) {
90        size = 4;
91        return true;
92      }
93    #endif
94
95    return false;
96  }
97
98  bool Target_m68k::isBranch(
99      const char* const instruction
100  )
101  {
102    fprintf(
103      stderr,
104      "DETERMINE BRANCH INSTRUCTIONS FOR THIS ARCHITECTURE! -- fix me\n"
105    );
106    exit( -1 );   
107  }
108
109  uint8_t Target_m68k::qemuTakenBit(void)
110  {
111    return TRACE_OP_BR1;
112  }
113
114  uint8_t Target_m68k::qemuNotTakenBit(void)
115  {
116    return TRACE_OP_BR0;
117  }
118
119  TargetBase *Target_m68k_Constructor(
120    std::string          targetName
121  )
122  {
123    return new Target_m68k( targetName );
124  }
125
126}
Note: See TracBrowser for help on using the repository browser.