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

Last change on this file since 0c4884a was 9fce5fc, checked in by Alex White <alex.white@…>, on 02/24/21 at 21:34:51

covoar/TargetBase: Rename branchInstructions to conditionalBranchInstructions

The TargetBase? class contains a member variable named
branchInstructions. The name omits the fact that it is only meant to
contain conditional branch instructions. Its name has been changed to
conditionalBranchInstructions to avoid confusion.

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