Contemporary AspectC++ versions can deal with the LLVM headers very well, and #ifdef __puma stuff in Fail* headers results in unmaintainable #ifdef __puma blocks in other parts of Fail* (e.g., the trace importer). Make sure you're using a 64-bit ac++ when living in a 64-bit userland (the 32-bit version doesn't know about __int128), and be aware that AspectC++ r325 introduced a regression that has not been fixed yet. Change-Id: I5bb759b08995a74b020d44a2b40e9d7a6e18111c
27 lines
994 B
C++
27 lines
994 B
C++
#include "LLVMtoFailGem5.hpp"
|
|
#include "sal/arm/ArmArchitecture.hpp"
|
|
|
|
using namespace fail;
|
|
|
|
LLVMtoFailGem5::LLVMtoFailGem5() {
|
|
/* These magic numbers are taken from the machine descriptions of
|
|
LLVM they (hopefully) will not change, since they are not exported
|
|
via a header */
|
|
llvm_to_fail_map[60] = reginfo_t(RI_R0);
|
|
llvm_to_fail_map[61] = reginfo_t(RI_R1);
|
|
llvm_to_fail_map[62] = reginfo_t(RI_R2);
|
|
llvm_to_fail_map[63] = reginfo_t(RI_R3);
|
|
llvm_to_fail_map[64] = reginfo_t(RI_R4);
|
|
llvm_to_fail_map[65] = reginfo_t(RI_R5);
|
|
llvm_to_fail_map[66] = reginfo_t(RI_R6);
|
|
llvm_to_fail_map[67] = reginfo_t(RI_R7);
|
|
llvm_to_fail_map[68] = reginfo_t(RI_R8);
|
|
llvm_to_fail_map[69] = reginfo_t(RI_R9);
|
|
llvm_to_fail_map[70] = reginfo_t(RI_R10);
|
|
llvm_to_fail_map[71] = reginfo_t(RI_R11);
|
|
llvm_to_fail_map[72] = reginfo_t(RI_R12);
|
|
llvm_to_fail_map[105] = reginfo_t(RI_SP);
|
|
llvm_to_fail_map[40] = reginfo_t(RI_LR);
|
|
llvm_to_fail_map[43] = reginfo_t(RI_IP);
|
|
}
|