00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #if !defined(DYN_REGS_H_)
00033 #define DYN_REGS_H_
00034
00035 #include "util.h"
00036 #include "boost/shared_ptr.hpp"
00037
00038 #include <assert.h>
00039 #include <map>
00040 #include <string>
00041
00042 namespace Dyninst
00043 {
00044 struct x86OperandParser;
00045 struct ppcOperandParser;
00046 typedef unsigned long MachRegisterVal;
00047
00048 typedef enum
00049 {
00050 Arch_none = 0x00000000,
00051 Arch_x86 = 0x14000000,
00052 Arch_x86_64 = 0x18000000,
00053 Arch_ppc32 = 0x24000000,
00054 Arch_ppc64 = 0x28000000
00055 } Architecture;
00056
00057
00058 COMMON_EXPORT bool isSegmentRegister(int regClass);
00059 COMMON_EXPORT unsigned getArchAddressWidth(Dyninst::Architecture arch);
00060 class COMMON_EXPORT MachRegister {
00061 friend struct ::Dyninst::x86OperandParser;
00062 friend struct ::Dyninst::ppcOperandParser;
00063 private:
00064 signed int reg;
00065
00066 typedef std::map<signed int, std::string> NameMap;
00067 static boost::shared_ptr<MachRegister::NameMap> names();
00068 void init_names();
00069 public:
00070
00071 MachRegister();
00072 explicit MachRegister(signed int r);
00073 explicit MachRegister(signed int r, const char *n);
00074 explicit MachRegister(signed int r, std::string n);
00075
00076 MachRegister getBaseRegister() const;
00077 Architecture getArchitecture() const;
00078 bool isValid() const;
00079 MachRegisterVal getSubRegValue(const MachRegister& subreg, MachRegisterVal &orig) const;
00080
00081 std::string name() const;
00082 unsigned int size() const;
00083 bool operator<(const MachRegister &a) const;
00084 bool operator==(const MachRegister &a) const;
00085 operator signed int() const;
00086 signed int val() const;
00087 unsigned int regClass() const;
00088
00089 static MachRegister getPC(Dyninst::Architecture arch);
00090 static MachRegister getFramePointer(Dyninst::Architecture arch);
00091 static MachRegister getStackPointer(Dyninst::Architecture arch);
00092 bool isPC() const;
00093 bool isFramePointer() const;
00094 bool isStackPointer() const;
00095
00096 void getROSERegister(int &c, int &n, int &p);
00097
00098 static MachRegister DwarfEncToReg(int encoding, Dyninst::Architecture arch);
00099 int getDwarfEnc() const;
00100 };
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 #if defined(DYN_DEFINE_REGS)
00113
00114
00115
00116
00117
00118
00119
00120
00121 #define DEF_REGISTER(name, value, Arch) \
00122 const signed int i##name = (value); \
00123 COMMON_EXPORT MachRegister name(i##name, Arch "::" #name)
00124 #else
00125 #define DEF_REGISTER(name, value, Arch) \
00126 const signed int i##name = (value); \
00127 COMMON_EXPORT extern MachRegister name
00128
00129 #endif
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144 DEF_REGISTER(InvalidReg, 0 | Arch_none, "abstract");
00145 DEF_REGISTER(FrameBase, 1 | Arch_none, "abstract");
00146 DEF_REGISTER(ReturnAddr, 2 | Arch_none, "abstract");
00147 DEF_REGISTER(StackTop, 3 | Arch_none, "abstract");
00148
00149 DEF_REGISTER(CFA, 4 | Arch_none, "abstract");
00150
00151 namespace x86
00152 {
00153 const signed int L_REG = 0x00000100;
00154 const signed int H_REG = 0x00000200;
00155 const signed int W_REG = 0x00000300;
00156 const signed int FULL = 0x00000000;
00157 const signed int QUAD = 0x00004000;
00158 const signed int OCT = 0x00002000;
00159 const signed int FPDBL = 0x00001000;
00160 const signed int BIT = 0x00008000;
00161 const signed int GPR = 0x00010000;
00162 const signed int SEG = 0x00020000;
00163 const signed int FLAG = 0x00030000;
00164 const signed int MISC = 0x00040000;
00165 const signed int XMM = 0x00050000;
00166 const signed int MMX = 0x00060000;
00167 const signed int CTL = 0x00070000;
00168 const signed int DBG = 0x00080000;
00169 const signed int TST = 0x00090000;
00170 const signed int BASEA = 0x0;
00171 const signed int BASEC = 0x1;
00172 const signed int BASED = 0x2;
00173 const signed int BASEB = 0x3;
00174 const signed int BASESP = 0x4;
00175 const signed int BASEBP = 0x5;
00176 const signed int BASESI = 0x6;
00177 const signed int BASEDI = 0x7;
00178 const signed int FLAGS = 0x0;
00179
00180 const signed int CF = 0x0;
00181 const signed int FLAG1 = 0x1;
00182 const signed int PF = 0x2;
00183 const signed int FLAG3 = 0x3;
00184 const signed int AF = 0x4;
00185 const signed int FLAG5 = 0x5;
00186 const signed int ZF = 0x6;
00187 const signed int SF = 0x7;
00188 const signed int TF = 0x8;
00189 const signed int IF = 0x9;
00190 const signed int DF = 0xa;
00191 const signed int OF = 0xb;
00192 const signed int FLAGC = 0xc;
00193 const signed int FLAGD = 0xd;
00194 const signed int NT = 0xe;
00195 const signed int FLAGF = 0xf;
00196 const signed int RF = 0x10;
00197
00198 DEF_REGISTER(eax, BASEA | FULL | GPR | Arch_x86, "x86");
00199 DEF_REGISTER(ecx, BASEC | FULL | GPR | Arch_x86, "x86");
00200 DEF_REGISTER(edx, BASED | FULL | GPR | Arch_x86, "x86");
00201 DEF_REGISTER(ebx, BASEB | FULL | GPR | Arch_x86, "x86");
00202 DEF_REGISTER(esp, BASESP | FULL | GPR | Arch_x86, "x86");
00203 DEF_REGISTER(ebp, BASEBP | FULL | GPR | Arch_x86, "x86");
00204 DEF_REGISTER(esi, BASESI | FULL | GPR | Arch_x86, "x86");
00205 DEF_REGISTER(edi, BASEDI | FULL | GPR | Arch_x86, "x86");
00206 DEF_REGISTER(ah, BASEA | H_REG | GPR | Arch_x86, "x86");
00207 DEF_REGISTER(al, BASEA | L_REG | GPR | Arch_x86, "x86");
00208 DEF_REGISTER(ax, BASEA | W_REG | GPR | Arch_x86, "x86");
00209 DEF_REGISTER(ch, BASEC | H_REG | GPR | Arch_x86, "x86");
00210 DEF_REGISTER(cl, BASEC | L_REG | GPR | Arch_x86, "x86");
00211 DEF_REGISTER(cx, BASEC | W_REG | GPR | Arch_x86, "x86");
00212 DEF_REGISTER(dh, BASED | H_REG | GPR | Arch_x86, "x86");
00213 DEF_REGISTER(dl, BASED | L_REG | GPR | Arch_x86, "x86");
00214 DEF_REGISTER(dx, BASED | W_REG | GPR | Arch_x86, "x86");
00215 DEF_REGISTER(bh, BASEB | H_REG | GPR | Arch_x86, "x86");
00216 DEF_REGISTER(bl, BASEB | L_REG | GPR | Arch_x86, "x86");
00217 DEF_REGISTER(bx, BASEB | W_REG | GPR | Arch_x86, "x86");
00218 DEF_REGISTER(sp, BASESP | W_REG | GPR | Arch_x86, "x86");
00219 DEF_REGISTER(bp, BASEBP | W_REG | GPR | Arch_x86, "x86");
00220 DEF_REGISTER(si, BASESI | W_REG | GPR | Arch_x86, "x86");
00221 DEF_REGISTER(di, BASEDI | W_REG | GPR | Arch_x86, "x86");
00222 DEF_REGISTER(eip, 0x10 | FULL | Arch_x86, "x86");
00223 DEF_REGISTER(flags, FLAGS | FULL | FLAG | Arch_x86, "x86");
00224 DEF_REGISTER(cf, CF | BIT | FLAG | Arch_x86, "x86");
00225 DEF_REGISTER(flag1, FLAG1 | BIT | FLAG | Arch_x86, "x86");
00226 DEF_REGISTER(pf, PF | BIT | FLAG | Arch_x86, "x86");
00227 DEF_REGISTER(flag3, FLAG3 | BIT | FLAG | Arch_x86, "x86");
00228 DEF_REGISTER(af, AF | BIT | FLAG | Arch_x86, "x86");
00229 DEF_REGISTER(flag5, FLAG5 | BIT | FLAG | Arch_x86, "x86");
00230 DEF_REGISTER(zf, ZF | BIT | FLAG | Arch_x86, "x86");
00231 DEF_REGISTER(sf, SF | BIT | FLAG | Arch_x86, "x86");
00232 DEF_REGISTER(tf, TF | BIT | FLAG | Arch_x86, "x86");
00233 DEF_REGISTER(if_, IF | BIT | FLAG | Arch_x86, "x86");
00234 DEF_REGISTER(df, DF | BIT | FLAG | Arch_x86, "x86");
00235 DEF_REGISTER(of, OF | BIT | FLAG | Arch_x86, "x86");
00236 DEF_REGISTER(flagc, FLAGC | BIT | FLAG | Arch_x86, "x86");
00237 DEF_REGISTER(flagd, FLAGD | BIT | FLAG | Arch_x86, "x86");
00238 DEF_REGISTER(nt_, NT | BIT | FLAG | Arch_x86, "x86");
00239 DEF_REGISTER(flagf, FLAGF | BIT | FLAG | Arch_x86, "x86");
00240 DEF_REGISTER(rf, RF | BIT | FLAG | Arch_x86, "x86");
00241 DEF_REGISTER(ds, 0x0 | W_REG | SEG | Arch_x86, "x86");
00242 DEF_REGISTER(es, 0x1 | W_REG | SEG | Arch_x86, "x86");
00243 DEF_REGISTER(fs, 0x2 | W_REG | SEG | Arch_x86, "x86");
00244 DEF_REGISTER(gs, 0x3 | W_REG | SEG | Arch_x86, "x86");
00245 DEF_REGISTER(cs, 0x4 | W_REG | SEG | Arch_x86, "x86");
00246 DEF_REGISTER(ss, 0x5 | W_REG | SEG | Arch_x86, "x86");
00247 DEF_REGISTER(oeax, 0x0 | FULL | MISC | Arch_x86, "x86");
00248 DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86, "x86");
00249 DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86, "x86");
00250 DEF_REGISTER(xmm0, 0x0 | OCT | XMM | Arch_x86, "x86");
00251 DEF_REGISTER(xmm1, 0x1 | OCT | XMM | Arch_x86, "x86");
00252 DEF_REGISTER(xmm2, 0x2 | OCT | XMM | Arch_x86, "x86");
00253 DEF_REGISTER(xmm3, 0x3 | OCT | XMM | Arch_x86, "x86");
00254 DEF_REGISTER(xmm4, 0x4 | OCT | XMM | Arch_x86, "x86");
00255 DEF_REGISTER(xmm5, 0x5 | OCT | XMM | Arch_x86, "x86");
00256 DEF_REGISTER(xmm6, 0x6 | OCT | XMM | Arch_x86, "x86");
00257 DEF_REGISTER(xmm7, 0x7 | OCT | XMM | Arch_x86, "x86");
00258 DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86, "x86");
00259 DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86, "x86");
00260 DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86, "x86");
00261 DEF_REGISTER(mm3, 0x3 | FPDBL | MMX | Arch_x86, "x86");
00262 DEF_REGISTER(mm4, 0x4 | FPDBL | MMX | Arch_x86, "x86");
00263 DEF_REGISTER(mm5, 0x5 | FPDBL | MMX | Arch_x86, "x86");
00264 DEF_REGISTER(mm6, 0x6 | FPDBL | MMX | Arch_x86, "x86");
00265 DEF_REGISTER(mm7, 0x7 | FPDBL | MMX | Arch_x86, "x86");
00266 DEF_REGISTER(cr0, 0x0 | FULL | CTL | Arch_x86, "x86");
00267 DEF_REGISTER(cr1, 0x1 | FULL | CTL | Arch_x86, "x86");
00268 DEF_REGISTER(cr2, 0x2 | FULL | CTL | Arch_x86, "x86");
00269 DEF_REGISTER(cr3, 0x3 | FULL | CTL | Arch_x86, "x86");
00270 DEF_REGISTER(cr4, 0x4 | FULL | CTL | Arch_x86, "x86");
00271 DEF_REGISTER(cr5, 0x5 | FULL | CTL | Arch_x86, "x86");
00272 DEF_REGISTER(cr6, 0x6 | FULL | CTL | Arch_x86, "x86");
00273 DEF_REGISTER(cr7, 0x7 | FULL | CTL | Arch_x86, "x86");
00274 DEF_REGISTER(dr0, 0x0 | FULL | DBG | Arch_x86, "x86");
00275 DEF_REGISTER(dr1, 0x1 | FULL | DBG | Arch_x86, "x86");
00276 DEF_REGISTER(dr2, 0x2 | FULL | DBG | Arch_x86, "x86");
00277 DEF_REGISTER(dr3, 0x3 | FULL | DBG | Arch_x86, "x86");
00278 DEF_REGISTER(dr4, 0x4 | FULL | DBG | Arch_x86, "x86");
00279 DEF_REGISTER(dr5, 0x5 | FULL | DBG | Arch_x86, "x86");
00280 DEF_REGISTER(dr6, 0x6 | FULL | DBG | Arch_x86, "x86");
00281 DEF_REGISTER(dr7, 0x7 | FULL | DBG | Arch_x86, "x86");
00282 DEF_REGISTER(tr0, 0x0 | FULL | TST | Arch_x86, "x86");
00283 DEF_REGISTER(tr1, 0x1 | FULL | TST | Arch_x86, "x86");
00284 DEF_REGISTER(tr2, 0x2 | FULL | TST | Arch_x86, "x86");
00285 DEF_REGISTER(tr3, 0x3 | FULL | TST | Arch_x86, "x86");
00286 DEF_REGISTER(tr4, 0x4 | FULL | TST | Arch_x86, "x86");
00287 DEF_REGISTER(tr5, 0x5 | FULL | TST | Arch_x86, "x86");
00288 DEF_REGISTER(tr6, 0x6 | FULL | TST | Arch_x86, "x86");
00289 DEF_REGISTER(tr7, 0x7 | FULL | TST | Arch_x86, "x86");
00290 DEF_REGISTER(st0, 0x0 | FPDBL | MMX | Arch_x86, "x86");
00291 DEF_REGISTER(st1, 0x1 | FPDBL | MMX | Arch_x86, "x86");
00292 DEF_REGISTER(st2, 0x2 | FPDBL | MMX | Arch_x86, "x86");
00293 DEF_REGISTER(st3, 0x3 | FPDBL | MMX | Arch_x86, "x86");
00294 DEF_REGISTER(st4, 0x4 | FPDBL | MMX | Arch_x86, "x86");
00295 DEF_REGISTER(st5, 0x5 | FPDBL | MMX | Arch_x86, "x86");
00296 DEF_REGISTER(st6, 0x6 | FPDBL | MMX | Arch_x86, "x86");
00297 DEF_REGISTER(st7, 0x7 | FPDBL | MMX | Arch_x86, "x86");
00298 }
00299 namespace x86_64
00300 {
00301 const signed int L_REG = 0x00000100;
00302 const signed int H_REG = 0x00000200;
00303 const signed int W_REG = 0x00000300;
00304 const signed int D_REG = 0x00000f00;
00305 const signed int FULL = 0x00000000;
00306 const signed int FPDBL = 0x00001000;
00307 const signed int OCT = 0x00002000;
00308 const signed int BIT = 0x00008000;
00309 const signed int GPR = 0x00010000;
00310 const signed int SEG = 0x00020000;
00311 const signed int FLAG = 0x00030000;
00312 const signed int MISC = 0x00040000;
00313 const signed int XMM = 0x00050000;
00314 const signed int MMX = 0x00060000;
00315 const signed int CTL = 0x00070000;
00316 const signed int DBG = 0x00080000;
00317 const signed int TST = 0x00090000;
00318 const signed int FLAGS = 0x00000000;
00319 const signed int BASEA = 0x0;
00320 const signed int BASEC = 0x1;
00321 const signed int BASED = 0x2;
00322 const signed int BASEB = 0x3;
00323 const signed int BASESP = 0x4;
00324 const signed int BASEBP = 0x5;
00325 const signed int BASESI = 0x6;
00326 const signed int BASEDI = 0x7;
00327 const signed int BASE8 = 0x8;
00328 const signed int BASE9 = 0x9;
00329 const signed int BASE10 = 0xa;
00330 const signed int BASE11 = 0xb;
00331 const signed int BASE12 = 0xc;
00332 const signed int BASE13 = 0xd;
00333 const signed int BASE14 = 0xe;
00334 const signed int BASE15 = 0xf;
00335
00336 const signed int CF = x86::CF;
00337 const signed int PF = x86::PF;
00338 const signed int AF = x86::AF;
00339 const signed int ZF = x86::ZF;
00340 const signed int SF = x86::SF;
00341 const signed int TF = x86::TF;
00342 const signed int IF = x86::IF;
00343 const signed int DF = x86::DF;
00344 const signed int OF = x86::OF;
00345 const signed int NT = x86::NT;
00346 const signed int RF = x86::RF;
00347
00348 DEF_REGISTER(rax, BASEA | FULL | GPR | Arch_x86_64, "x86_64");
00349 DEF_REGISTER(rcx, BASEC | FULL | GPR | Arch_x86_64, "x86_64");
00350 DEF_REGISTER(rdx, BASED | FULL | GPR | Arch_x86_64, "x86_64");
00351 DEF_REGISTER(rbx, BASEB | FULL | GPR | Arch_x86_64, "x86_64");
00352 DEF_REGISTER(rsp, BASESP | FULL | GPR | Arch_x86_64, "x86_64");
00353 DEF_REGISTER(rbp, BASEBP | FULL | GPR | Arch_x86_64, "x86_64");
00354 DEF_REGISTER(rsi, BASESI | FULL | GPR | Arch_x86_64, "x86_64");
00355 DEF_REGISTER(rdi, BASEDI | FULL | GPR | Arch_x86_64, "x86_64");
00356 DEF_REGISTER(r8, BASE8 | FULL | GPR | Arch_x86_64, "x86_64");
00357 DEF_REGISTER(r9, BASE9 | FULL | GPR | Arch_x86_64, "x86_64");
00358 DEF_REGISTER(r10, BASE10 | FULL | GPR | Arch_x86_64, "x86_64");
00359 DEF_REGISTER(r11, BASE11 | FULL | GPR | Arch_x86_64, "x86_64");
00360 DEF_REGISTER(r12, BASE12 | FULL | GPR | Arch_x86_64, "x86_64");
00361 DEF_REGISTER(r13, BASE13 | FULL | GPR | Arch_x86_64, "x86_64");
00362 DEF_REGISTER(r14, BASE14 | FULL | GPR | Arch_x86_64, "x86_64");
00363 DEF_REGISTER(r15, BASE15 | FULL | GPR | Arch_x86_64, "x86_64");
00364 DEF_REGISTER(ah, BASEA | H_REG | GPR | Arch_x86_64, "x86_64");
00365 DEF_REGISTER(al, BASEA | L_REG | GPR | Arch_x86_64, "x86_64");
00366 DEF_REGISTER(ax, BASEA | W_REG | GPR | Arch_x86_64, "x86_64");
00367 DEF_REGISTER(eax, BASEA | D_REG | GPR | Arch_x86_64, "x86_64");
00368 DEF_REGISTER(ch, BASEC | H_REG | GPR | Arch_x86_64, "x86_64");
00369 DEF_REGISTER(cl, BASEC | L_REG | GPR | Arch_x86_64, "x86_64");
00370 DEF_REGISTER(cx, BASEC | W_REG | GPR | Arch_x86_64, "x86_64");
00371 DEF_REGISTER(ecx, BASEC | D_REG | GPR | Arch_x86_64, "x86_64");
00372 DEF_REGISTER(dh, BASED | H_REG | GPR | Arch_x86_64, "x86_64");
00373 DEF_REGISTER(dl, BASED | L_REG | GPR | Arch_x86_64, "x86_64");
00374 DEF_REGISTER(dx, BASED | W_REG | GPR | Arch_x86_64, "x86_64");
00375 DEF_REGISTER(edx, BASED | D_REG | GPR | Arch_x86_64, "x86_64");
00376 DEF_REGISTER(bh, BASEB | H_REG | GPR | Arch_x86_64, "x86_64");
00377 DEF_REGISTER(bl, BASEB | L_REG | GPR | Arch_x86_64, "x86_64");
00378 DEF_REGISTER(bx, BASEB | W_REG | GPR | Arch_x86_64, "x86_64");
00379 DEF_REGISTER(ebx, BASEB | D_REG | GPR | Arch_x86_64, "x86_64");
00380 DEF_REGISTER(spl, BASESP | L_REG | GPR | Arch_x86_64, "x86_64");
00381 DEF_REGISTER(sp, BASESP | W_REG | GPR | Arch_x86_64, "x86_64");
00382 DEF_REGISTER(esp, BASESP | D_REG | GPR | Arch_x86_64, "x86_64");
00383 DEF_REGISTER(bpl, BASEBP | L_REG | GPR | Arch_x86_64, "x86_64");
00384 DEF_REGISTER(bp, BASEBP | W_REG | GPR | Arch_x86_64, "x86_64");
00385 DEF_REGISTER(ebp, BASEBP | D_REG | GPR | Arch_x86_64, "x86_64");
00386 DEF_REGISTER(dil, BASEDI | L_REG | GPR | Arch_x86_64, "x86_64");
00387 DEF_REGISTER(di, BASEDI | W_REG | GPR | Arch_x86_64, "x86_64");
00388 DEF_REGISTER(edi, BASEDI | D_REG | GPR | Arch_x86_64, "x86_64");
00389 DEF_REGISTER(sil, BASESI | L_REG | GPR | Arch_x86_64, "x86_64");
00390 DEF_REGISTER(si, BASESI | W_REG | GPR | Arch_x86_64, "x86_64");
00391 DEF_REGISTER(esi, BASESI | D_REG | GPR | Arch_x86_64, "x86_64");
00392 DEF_REGISTER(r8b, BASE8 | L_REG | GPR | Arch_x86_64, "x86_64");
00393 DEF_REGISTER(r8w, BASE8 | W_REG | GPR | Arch_x86_64, "x86_64");
00394 DEF_REGISTER(r8d, BASE8 | D_REG | GPR | Arch_x86_64, "x86_64");
00395 DEF_REGISTER(r9b, BASE9 | L_REG | GPR | Arch_x86_64, "x86_64");
00396 DEF_REGISTER(r9w, BASE9 | W_REG | GPR | Arch_x86_64, "x86_64");
00397 DEF_REGISTER(r9d, BASE9 | D_REG | GPR | Arch_x86_64, "x86_64");
00398 DEF_REGISTER(r10b, BASE10 | L_REG | GPR | Arch_x86_64, "x86_64");
00399 DEF_REGISTER(r10w, BASE10 | W_REG | GPR | Arch_x86_64, "x86_64");
00400 DEF_REGISTER(r10d, BASE10 | D_REG | GPR | Arch_x86_64, "x86_64");
00401 DEF_REGISTER(r11b, BASE11 | L_REG | GPR | Arch_x86_64, "x86_64");
00402 DEF_REGISTER(r11w, BASE11 | W_REG | GPR | Arch_x86_64, "x86_64");
00403 DEF_REGISTER(r11d, BASE11 | D_REG | GPR | Arch_x86_64, "x86_64");
00404 DEF_REGISTER(r12b, BASE12 | L_REG | GPR | Arch_x86_64, "x86_64");
00405 DEF_REGISTER(r12w, BASE12 | W_REG | GPR | Arch_x86_64, "x86_64");
00406 DEF_REGISTER(r12d, BASE12 | D_REG | GPR | Arch_x86_64, "x86_64");
00407 DEF_REGISTER(r13b, BASE13 | L_REG | GPR | Arch_x86_64, "x86_64");
00408 DEF_REGISTER(r13w, BASE13 | W_REG | GPR | Arch_x86_64, "x86_64");
00409 DEF_REGISTER(r13d, BASE13 | D_REG | GPR | Arch_x86_64, "x86_64");
00410 DEF_REGISTER(r14b, BASE14 | L_REG | GPR | Arch_x86_64, "x86_64");
00411 DEF_REGISTER(r14w, BASE14 | W_REG | GPR | Arch_x86_64, "x86_64");
00412 DEF_REGISTER(r14d, BASE14 | D_REG | GPR | Arch_x86_64, "x86_64");
00413 DEF_REGISTER(r15b, BASE15 | L_REG | GPR | Arch_x86_64, "x86_64");
00414 DEF_REGISTER(r15w, BASE15 | W_REG | GPR | Arch_x86_64, "x86_64");
00415 DEF_REGISTER(r15d, BASE15 | D_REG | GPR | Arch_x86_64, "x86_64");
00416 DEF_REGISTER(rip, 0x10 | FULL | Arch_x86_64, "x86_64");
00417 DEF_REGISTER(eip, 0x10 | D_REG | Arch_x86_64, "x86_64");
00418 DEF_REGISTER(flags, FLAGS | FULL | FLAG | Arch_x86_64, "x86_64");
00419 DEF_REGISTER(cf, CF | BIT | FLAG | Arch_x86_64, "x86_64");
00420 DEF_REGISTER(pf, PF | BIT | FLAG | Arch_x86_64, "x86_64");
00421 DEF_REGISTER(af, AF | BIT | FLAG | Arch_x86_64, "x86_64");
00422 DEF_REGISTER(zf, ZF | BIT | FLAG | Arch_x86_64, "x86_64");
00423 DEF_REGISTER(sf, SF | BIT | FLAG | Arch_x86_64, "x86_64");
00424 DEF_REGISTER(tf, TF | BIT | FLAG | Arch_x86_64, "x86_64");
00425 DEF_REGISTER(if_, IF | BIT | FLAG | Arch_x86_64, "x86_64");
00426 DEF_REGISTER(df, DF | BIT | FLAG | Arch_x86_64, "x86_64");
00427 DEF_REGISTER(of, OF | BIT | FLAG | Arch_x86_64, "x86_64");
00428 DEF_REGISTER(nt_, NT | BIT | FLAG | Arch_x86_64, "x86_64");
00429 DEF_REGISTER(rf, RF | BIT | FLAG | Arch_x86_64, "x86_64");
00430 DEF_REGISTER(ds, 0x0 | FULL | SEG | Arch_x86_64, "x86_64");
00431 DEF_REGISTER(es, 0x1 | FULL | SEG | Arch_x86_64, "x86_64");
00432 DEF_REGISTER(fs, 0x2 | FULL | SEG | Arch_x86_64, "x86_64");
00433 DEF_REGISTER(gs, 0x3 | FULL | SEG | Arch_x86_64, "x86_64");
00434 DEF_REGISTER(cs, 0x4 | FULL | SEG | Arch_x86_64, "x86_64");
00435 DEF_REGISTER(ss, 0x5 | FULL | SEG | Arch_x86_64, "x86_64");
00436 DEF_REGISTER(orax, 0x0 | FULL | MISC | Arch_x86_64, "x86_64");
00437 DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86_64, "x86_64");
00438 DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86_64, "x86_64");
00439 DEF_REGISTER(xmm0, 0x0 | OCT | XMM | Arch_x86_64, "x86_64");
00440 DEF_REGISTER(xmm1, 0x1 | OCT | XMM | Arch_x86_64, "x86_64");
00441 DEF_REGISTER(xmm2, 0x2 | OCT | XMM | Arch_x86_64, "x86_64");
00442 DEF_REGISTER(xmm3, 0x3 | OCT | XMM | Arch_x86_64, "x86_64");
00443 DEF_REGISTER(xmm4, 0x4 | OCT | XMM | Arch_x86_64, "x86_64");
00444 DEF_REGISTER(xmm5, 0x5 | OCT | XMM | Arch_x86_64, "x86_64");
00445 DEF_REGISTER(xmm6, 0x6 | OCT | XMM | Arch_x86_64, "x86_64");
00446 DEF_REGISTER(xmm7, 0x7 | OCT | XMM | Arch_x86_64, "x86_64");
00447 DEF_REGISTER(xmm8, 0x8 | OCT | XMM | Arch_x86_64, "x86_64");
00448 DEF_REGISTER(xmm9, 0x9 | OCT | XMM | Arch_x86_64, "x86_64");
00449 DEF_REGISTER(xmm10, 0xA | OCT | XMM | Arch_x86_64, "x86_64");
00450 DEF_REGISTER(xmm11, 0xB | OCT | XMM | Arch_x86_64, "x86_64");
00451 DEF_REGISTER(xmm12, 0xC | OCT | XMM | Arch_x86_64, "x86_64");
00452 DEF_REGISTER(xmm13, 0xD | OCT | XMM | Arch_x86_64, "x86_64");
00453 DEF_REGISTER(xmm14, 0xE | OCT | XMM | Arch_x86_64, "x86_64");
00454 DEF_REGISTER(xmm15, 0xF | OCT | XMM | Arch_x86_64, "x86_64");
00455 DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86_64, "x86_64");
00456 DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86_64, "x86_64");
00457 DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86_64, "x86_64");
00458 DEF_REGISTER(mm3, 0x3 | FPDBL | MMX | Arch_x86_64, "x86_64");
00459 DEF_REGISTER(mm4, 0x4 | FPDBL | MMX | Arch_x86_64, "x86_64");
00460 DEF_REGISTER(mm5, 0x5 | FPDBL | MMX | Arch_x86_64, "x86_64");
00461 DEF_REGISTER(mm6, 0x6 | FPDBL | MMX | Arch_x86_64, "x86_64");
00462 DEF_REGISTER(mm7, 0x7 | FPDBL | MMX | Arch_x86_64, "x86_64");
00463 DEF_REGISTER(cr0, 0x0 | FULL | CTL | Arch_x86_64, "x86_64");
00464 DEF_REGISTER(cr1, 0x1 | FULL | CTL | Arch_x86_64, "x86_64");
00465 DEF_REGISTER(cr2, 0x2 | FULL | CTL | Arch_x86_64, "x86_64");
00466 DEF_REGISTER(cr3, 0x3 | FULL | CTL | Arch_x86_64, "x86_64");
00467 DEF_REGISTER(cr4, 0x4 | FULL | CTL | Arch_x86_64, "x86_64");
00468 DEF_REGISTER(cr5, 0x5 | FULL | CTL | Arch_x86_64, "x86_64");
00469 DEF_REGISTER(cr6, 0x6 | FULL | CTL | Arch_x86_64, "x86_64");
00470 DEF_REGISTER(cr7, 0x7 | FULL | CTL | Arch_x86_64, "x86_64");
00471 DEF_REGISTER(dr0, 0x0 | FULL | DBG | Arch_x86_64, "x86_64");
00472 DEF_REGISTER(dr1, 0x1 | FULL | DBG | Arch_x86_64, "x86_64");
00473 DEF_REGISTER(dr2, 0x2 | FULL | DBG | Arch_x86_64, "x86_64");
00474 DEF_REGISTER(dr3, 0x3 | FULL | DBG | Arch_x86_64, "x86_64");
00475 DEF_REGISTER(dr4, 0x4 | FULL | DBG | Arch_x86_64, "x86_64");
00476 DEF_REGISTER(dr5, 0x5 | FULL | DBG | Arch_x86_64, "x86_64");
00477 DEF_REGISTER(dr6, 0x6 | FULL | DBG | Arch_x86_64, "x86_64");
00478 DEF_REGISTER(dr7, 0x7 | FULL | DBG | Arch_x86_64, "x86_64");
00479 DEF_REGISTER(tr0, 0x0 | FULL | TST | Arch_x86_64, "x86_64");
00480 DEF_REGISTER(tr1, 0x1 | FULL | TST | Arch_x86_64, "x86_64");
00481 DEF_REGISTER(tr2, 0x2 | FULL | TST | Arch_x86_64, "x86_64");
00482 DEF_REGISTER(tr3, 0x3 | FULL | TST | Arch_x86_64, "x86_64");
00483 DEF_REGISTER(tr4, 0x4 | FULL | TST | Arch_x86_64, "x86_64");
00484 DEF_REGISTER(tr5, 0x5 | FULL | TST | Arch_x86_64, "x86_64");
00485 DEF_REGISTER(tr6, 0x6 | FULL | TST | Arch_x86_64, "x86_64");
00486 DEF_REGISTER(tr7, 0x7 | FULL | TST | Arch_x86_64, "x86_64");
00487 DEF_REGISTER(st0, 0x0 | FPDBL | MMX | Arch_x86_64, "x86_64");
00488 DEF_REGISTER(st1, 0x1 | FPDBL | MMX | Arch_x86_64, "x86_64");
00489 DEF_REGISTER(st2, 0x2 | FPDBL | MMX | Arch_x86_64, "x86_64");
00490 DEF_REGISTER(st3, 0x3 | FPDBL | MMX | Arch_x86_64, "x86_64");
00491 DEF_REGISTER(st4, 0x4 | FPDBL | MMX | Arch_x86_64, "x86_64");
00492 DEF_REGISTER(st5, 0x5 | FPDBL | MMX | Arch_x86_64, "x86_64");
00493 DEF_REGISTER(st6, 0x6 | FPDBL | MMX | Arch_x86_64, "x86_64");
00494 DEF_REGISTER(st7, 0x7 | FPDBL | MMX | Arch_x86_64, "x86_64");
00495 }
00496 namespace ppc32 {
00497 const signed int GPR = 0x00010000;
00498 const signed int FPR = 0x00020000;
00499 const signed int FSR = 0x00040000;
00500 const signed int SPR = 0x00080000;
00501
00502 DEF_REGISTER(r0, 0 | GPR | Arch_ppc32, "ppc32");
00503 DEF_REGISTER(r1, 1 | GPR | Arch_ppc32, "ppc32");
00504 DEF_REGISTER(r2, 2 | GPR | Arch_ppc32, "ppc32");
00505 DEF_REGISTER(r3, 3 | GPR | Arch_ppc32, "ppc32");
00506 DEF_REGISTER(r4, 4 | GPR | Arch_ppc32, "ppc32");
00507 DEF_REGISTER(r5, 5 | GPR | Arch_ppc32, "ppc32");
00508 DEF_REGISTER(r6, 6 | GPR | Arch_ppc32, "ppc32");
00509 DEF_REGISTER(r7, 7 | GPR | Arch_ppc32, "ppc32");
00510 DEF_REGISTER(r8, 8 | GPR | Arch_ppc32, "ppc32");
00511 DEF_REGISTER(r9, 9 | GPR | Arch_ppc32, "ppc32");
00512 DEF_REGISTER(r10, 10 | GPR | Arch_ppc32, "ppc32");
00513 DEF_REGISTER(r11, 11 | GPR | Arch_ppc32, "ppc32");
00514 DEF_REGISTER(r12, 12 | GPR | Arch_ppc32, "ppc32");
00515 DEF_REGISTER(r13, 13 | GPR | Arch_ppc32, "ppc32");
00516 DEF_REGISTER(r14, 14 | GPR | Arch_ppc32, "ppc32");
00517 DEF_REGISTER(r15, 15 | GPR | Arch_ppc32, "ppc32");
00518 DEF_REGISTER(r16, 16 | GPR | Arch_ppc32, "ppc32");
00519 DEF_REGISTER(r17, 17 | GPR | Arch_ppc32, "ppc32");
00520 DEF_REGISTER(r18, 18 | GPR | Arch_ppc32, "ppc32");
00521 DEF_REGISTER(r19, 19 | GPR | Arch_ppc32, "ppc32");
00522 DEF_REGISTER(r20, 20 | GPR | Arch_ppc32, "ppc32");
00523 DEF_REGISTER(r21, 21 | GPR | Arch_ppc32, "ppc32");
00524 DEF_REGISTER(r22, 22 | GPR | Arch_ppc32, "ppc32");
00525 DEF_REGISTER(r23, 23 | GPR | Arch_ppc32, "ppc32");
00526 DEF_REGISTER(r24, 24 | GPR | Arch_ppc32, "ppc32");
00527 DEF_REGISTER(r25, 25 | GPR | Arch_ppc32, "ppc32");
00528 DEF_REGISTER(r26, 26 | GPR | Arch_ppc32, "ppc32");
00529 DEF_REGISTER(r27, 27 | GPR | Arch_ppc32, "ppc32");
00530 DEF_REGISTER(r28, 28 | GPR | Arch_ppc32, "ppc32");
00531 DEF_REGISTER(r29, 29 | GPR | Arch_ppc32, "ppc32");
00532 DEF_REGISTER(r30, 30 | GPR | Arch_ppc32, "ppc32");
00533 DEF_REGISTER(r31, 31 | GPR | Arch_ppc32, "ppc32");
00534 DEF_REGISTER(fpr0, 0 | FPR | Arch_ppc32, "ppc32");
00535 DEF_REGISTER(fpr1, 1 | FPR | Arch_ppc32, "ppc32");
00536 DEF_REGISTER(fpr2, 2 | FPR | Arch_ppc32, "ppc32");
00537 DEF_REGISTER(fpr3, 3 | FPR | Arch_ppc32, "ppc32");
00538 DEF_REGISTER(fpr4, 4 | FPR | Arch_ppc32, "ppc32");
00539 DEF_REGISTER(fpr5, 5 | FPR | Arch_ppc32, "ppc32");
00540 DEF_REGISTER(fpr6, 6 | FPR | Arch_ppc32, "ppc32");
00541 DEF_REGISTER(fpr7, 7 | FPR | Arch_ppc32, "ppc32");
00542 DEF_REGISTER(fpr8, 8 | FPR | Arch_ppc32, "ppc32");
00543 DEF_REGISTER(fpr9, 9 | FPR | Arch_ppc32, "ppc32");
00544 DEF_REGISTER(fpr10, 10 | FPR | Arch_ppc32, "ppc32");
00545 DEF_REGISTER(fpr11, 11 | FPR | Arch_ppc32, "ppc32");
00546 DEF_REGISTER(fpr12, 12 | FPR | Arch_ppc32, "ppc32");
00547 DEF_REGISTER(fpr13, 13 | FPR | Arch_ppc32, "ppc32");
00548 DEF_REGISTER(fpr14, 14 | FPR | Arch_ppc32, "ppc32");
00549 DEF_REGISTER(fpr15, 15 | FPR | Arch_ppc32, "ppc32");
00550 DEF_REGISTER(fpr16, 16 | FPR | Arch_ppc32, "ppc32");
00551 DEF_REGISTER(fpr17, 17 | FPR | Arch_ppc32, "ppc32");
00552 DEF_REGISTER(fpr18, 18 | FPR | Arch_ppc32, "ppc32");
00553 DEF_REGISTER(fpr19, 19 | FPR | Arch_ppc32, "ppc32");
00554 DEF_REGISTER(fpr20, 20 | FPR | Arch_ppc32, "ppc32");
00555 DEF_REGISTER(fpr21, 21 | FPR | Arch_ppc32, "ppc32");
00556 DEF_REGISTER(fpr22, 22 | FPR | Arch_ppc32, "ppc32");
00557 DEF_REGISTER(fpr23, 23 | FPR | Arch_ppc32, "ppc32");
00558 DEF_REGISTER(fpr24, 24 | FPR | Arch_ppc32, "ppc32");
00559 DEF_REGISTER(fpr25, 25 | FPR | Arch_ppc32, "ppc32");
00560 DEF_REGISTER(fpr26, 26 | FPR | Arch_ppc32, "ppc32");
00561 DEF_REGISTER(fpr27, 27 | FPR | Arch_ppc32, "ppc32");
00562 DEF_REGISTER(fpr28, 28 | FPR | Arch_ppc32, "ppc32");
00563 DEF_REGISTER(fpr29, 29 | FPR | Arch_ppc32, "ppc32");
00564 DEF_REGISTER(fpr30, 30 | FPR | Arch_ppc32, "ppc32");
00565 DEF_REGISTER(fpr31, 31 | FPR | Arch_ppc32, "ppc32");
00566 DEF_REGISTER(fsr0, 0 | FSR | Arch_ppc32, "ppc32");
00567 DEF_REGISTER(fsr1, 1 | FSR | Arch_ppc32, "ppc32");
00568 DEF_REGISTER(fsr2, 2 | FSR | Arch_ppc32, "ppc32");
00569 DEF_REGISTER(fsr3, 3 | FSR | Arch_ppc32, "ppc32");
00570 DEF_REGISTER(fsr4, 4 | FSR | Arch_ppc32, "ppc32");
00571 DEF_REGISTER(fsr5, 5 | FSR | Arch_ppc32, "ppc32");
00572 DEF_REGISTER(fsr6, 6 | FSR | Arch_ppc32, "ppc32");
00573 DEF_REGISTER(fsr7, 7 | FSR | Arch_ppc32, "ppc32");
00574 DEF_REGISTER(fsr8, 8 | FSR | Arch_ppc32, "ppc32");
00575 DEF_REGISTER(fsr9, 9 | FSR | Arch_ppc32, "ppc32");
00576 DEF_REGISTER(fsr10, 10 | FSR | Arch_ppc32, "ppc32");
00577 DEF_REGISTER(fsr11, 11 | FSR | Arch_ppc32, "ppc32");
00578 DEF_REGISTER(fsr12, 12 | FSR | Arch_ppc32, "ppc32");
00579 DEF_REGISTER(fsr13, 13 | FSR | Arch_ppc32, "ppc32");
00580 DEF_REGISTER(fsr14, 14 | FSR | Arch_ppc32, "ppc32");
00581 DEF_REGISTER(fsr15, 15 | FSR | Arch_ppc32, "ppc32");
00582 DEF_REGISTER(fsr16, 16 | FSR | Arch_ppc32, "ppc32");
00583 DEF_REGISTER(fsr17, 17 | FSR | Arch_ppc32, "ppc32");
00584 DEF_REGISTER(fsr18, 18 | FSR | Arch_ppc32, "ppc32");
00585 DEF_REGISTER(fsr19, 19 | FSR | Arch_ppc32, "ppc32");
00586 DEF_REGISTER(fsr20, 20 | FSR | Arch_ppc32, "ppc32");
00587 DEF_REGISTER(fsr21, 21 | FSR | Arch_ppc32, "ppc32");
00588 DEF_REGISTER(fsr22, 22 | FSR | Arch_ppc32, "ppc32");
00589 DEF_REGISTER(fsr23, 23 | FSR | Arch_ppc32, "ppc32");
00590 DEF_REGISTER(fsr24, 24 | FSR | Arch_ppc32, "ppc32");
00591 DEF_REGISTER(fsr25, 25 | FSR | Arch_ppc32, "ppc32");
00592 DEF_REGISTER(fsr26, 26 | FSR | Arch_ppc32, "ppc32");
00593 DEF_REGISTER(fsr27, 27 | FSR | Arch_ppc32, "ppc32");
00594 DEF_REGISTER(fsr28, 28 | FSR | Arch_ppc32, "ppc32");
00595 DEF_REGISTER(fsr29, 29 | FSR | Arch_ppc32, "ppc32");
00596 DEF_REGISTER(fsr30, 30 | FSR | Arch_ppc32, "ppc32");
00597 DEF_REGISTER(fsr31, 31 | FSR | Arch_ppc32, "ppc32");
00598 DEF_REGISTER(mq, 0 | SPR | Arch_ppc32, "ppc32");
00599 DEF_REGISTER(xer, 1 | SPR | Arch_ppc32, "ppc32");
00600 DEF_REGISTER(lr, 8 | SPR | Arch_ppc32, "ppc32");
00601 DEF_REGISTER(ctr, 9 | SPR | Arch_ppc32, "ppc32");
00602 DEF_REGISTER(dsisr, 18 | SPR | Arch_ppc32, "ppc32");
00603 DEF_REGISTER(dar, 19 | SPR | Arch_ppc32, "ppc32");
00604 DEF_REGISTER(dec, 22 | SPR | Arch_ppc32, "ppc32");
00605 DEF_REGISTER(sdr1, 25 | SPR | Arch_ppc32, "ppc32");
00606 DEF_REGISTER(srr0, 26 | SPR | Arch_ppc32, "ppc32");
00607 DEF_REGISTER(srr1, 27 | SPR | Arch_ppc32, "ppc32");
00608 DEF_REGISTER(sprg0, 272 | SPR | Arch_ppc32, "ppc32");
00609 DEF_REGISTER(sprg1, 273 | SPR | Arch_ppc32, "ppc32");
00610 DEF_REGISTER(sprg2, 274 | SPR | Arch_ppc32, "ppc32");
00611 DEF_REGISTER(sprg3, 275 | SPR | Arch_ppc32, "ppc32");
00612 DEF_REGISTER(sprg4, 276 | SPR | Arch_ppc32, "ppc32");
00613 DEF_REGISTER(sprg5, 277 | SPR | Arch_ppc32, "ppc32");
00614 DEF_REGISTER(sprg6, 278 | SPR | Arch_ppc32, "ppc32");
00615 DEF_REGISTER(sprg7, 279 | SPR | Arch_ppc32, "ppc32");
00616
00617 DEF_REGISTER(sprg3_ro, 259 | SPR | Arch_ppc32, "ppc32");
00618 DEF_REGISTER(sprg4_ro, 260 | SPR | Arch_ppc32, "ppc32");
00619 DEF_REGISTER(sprg5_ro, 261 | SPR | Arch_ppc32, "ppc32");
00620 DEF_REGISTER(sprg6_ro, 262 | SPR | Arch_ppc32, "ppc32");
00621 DEF_REGISTER(sprg7_ro, 263 | SPR | Arch_ppc32, "ppc32");
00622
00623
00624 DEF_REGISTER(ear, 282 | SPR | Arch_ppc32, "ppc32");
00625 DEF_REGISTER(tbl_wo, 284 | SPR | Arch_ppc32, "ppc32");
00626 DEF_REGISTER(tbl_ro, 268 | SPR | Arch_ppc32, "ppc32");
00627 DEF_REGISTER(tbu_wo, 285 | SPR | Arch_ppc32, "ppc32");
00628 DEF_REGISTER(tbu_ro, 269 | SPR | Arch_ppc32, "ppc32");
00629 DEF_REGISTER(pvr, 287 | SPR | Arch_ppc32, "ppc32");
00630 DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc32, "ppc32");
00631 DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc32, "ppc32");
00632 DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc32, "ppc32");
00633 DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc32, "ppc32");
00634 DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc32, "ppc32");
00635 DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc32, "ppc32");
00636 DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc32, "ppc32");
00637 DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc32, "ppc32");
00638 DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc32, "ppc32");
00639 DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc32, "ppc32");
00640 DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc32, "ppc32");
00641 DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc32, "ppc32");
00642 DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc32, "ppc32");
00643 DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc32, "ppc32");
00644 DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc32, "ppc32");
00645 DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc32, "ppc32");
00646 DEF_REGISTER(pc, 600 | SPR | Arch_ppc32, "ppc32");
00647 DEF_REGISTER(fpscw, 601 | SPR | Arch_ppc32, "ppc32");
00648 DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc32, "ppc32");
00649 DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc32, "ppc32");
00650 DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc32, "ppc32");
00651 DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc32, "ppc32");
00652 DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc32, "ppc32");
00653 DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc32, "ppc32");
00654 DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc32, "ppc32");
00655 DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc32, "ppc32");
00656 DEF_REGISTER(msr, 610 | SPR | Arch_ppc32, "ppc32");
00657 DEF_REGISTER(ivpr, 611 | SPR | Arch_ppc32, "ppc32");
00658 DEF_REGISTER(ivor8, 612 | SPR | Arch_ppc32, "ppc32");
00659 DEF_REGISTER(seg0, 613 | SPR | Arch_ppc32, "ppc32");
00660 DEF_REGISTER(seg1, 614 | SPR | Arch_ppc32, "ppc32");
00661 DEF_REGISTER(seg2, 615 | SPR | Arch_ppc32, "ppc32");
00662 DEF_REGISTER(seg3, 616 | SPR | Arch_ppc32, "ppc32");
00663 DEF_REGISTER(seg4, 617 | SPR | Arch_ppc32, "ppc32");
00664 DEF_REGISTER(seg5, 618 | SPR | Arch_ppc32, "ppc32");
00665 DEF_REGISTER(seg6, 619 | SPR | Arch_ppc32, "ppc32");
00666 DEF_REGISTER(seg7, 620 | SPR | Arch_ppc32, "ppc32");
00667 DEF_REGISTER(cr0, 621 | SPR | Arch_ppc32, "ppc32");
00668 DEF_REGISTER(cr1, 622 | SPR | Arch_ppc32, "ppc32");
00669 DEF_REGISTER(cr2, 623 | SPR | Arch_ppc32, "ppc32");
00670 DEF_REGISTER(cr3, 624 | SPR | Arch_ppc32, "ppc32");
00671 DEF_REGISTER(cr4, 625 | SPR | Arch_ppc32, "ppc32");
00672 DEF_REGISTER(cr5, 626 | SPR | Arch_ppc32, "ppc32");
00673 DEF_REGISTER(cr6, 627 | SPR | Arch_ppc32, "ppc32");
00674 DEF_REGISTER(cr7, 628 | SPR | Arch_ppc32, "ppc32");
00675 DEF_REGISTER(cr, 629 | SPR | Arch_ppc32, "ppc32");
00676 DEF_REGISTER(or3, 630 | SPR | Arch_ppc32, "ppc32");
00677 DEF_REGISTER(trap, 631 | SPR | Arch_ppc32, "ppc32");
00678 }
00679 namespace ppc64 {
00680 const signed int GPR = 0x00010000;
00681 const signed int FPR = 0x00020000;
00682 const signed int FSR = 0x00040000;
00683 const signed int SPR = 0x00080000;
00684
00685 DEF_REGISTER(r0, 0 | GPR | Arch_ppc64, "ppc64");
00686 DEF_REGISTER(r1, 1 | GPR | Arch_ppc64, "ppc64");
00687 DEF_REGISTER(r2, 2 | GPR | Arch_ppc64, "ppc64");
00688 DEF_REGISTER(r3, 3 | GPR | Arch_ppc64, "ppc64");
00689 DEF_REGISTER(r4, 4 | GPR | Arch_ppc64, "ppc64");
00690 DEF_REGISTER(r5, 5 | GPR | Arch_ppc64, "ppc64");
00691 DEF_REGISTER(r6, 6 | GPR | Arch_ppc64, "ppc64");
00692 DEF_REGISTER(r7, 7 | GPR | Arch_ppc64, "ppc64");
00693 DEF_REGISTER(r8, 8 | GPR | Arch_ppc64, "ppc64");
00694 DEF_REGISTER(r9, 9 | GPR | Arch_ppc64, "ppc64");
00695 DEF_REGISTER(r10, 10 | GPR | Arch_ppc64, "ppc64");
00696 DEF_REGISTER(r11, 11 | GPR | Arch_ppc64, "ppc64");
00697 DEF_REGISTER(r12, 12 | GPR | Arch_ppc64, "ppc64");
00698 DEF_REGISTER(r13, 13 | GPR | Arch_ppc64, "ppc64");
00699 DEF_REGISTER(r14, 14 | GPR | Arch_ppc64, "ppc64");
00700 DEF_REGISTER(r15, 15 | GPR | Arch_ppc64, "ppc64");
00701 DEF_REGISTER(r16, 16 | GPR | Arch_ppc64, "ppc64");
00702 DEF_REGISTER(r17, 17 | GPR | Arch_ppc64, "ppc64");
00703 DEF_REGISTER(r18, 18 | GPR | Arch_ppc64, "ppc64");
00704 DEF_REGISTER(r19, 19 | GPR | Arch_ppc64, "ppc64");
00705 DEF_REGISTER(r20, 20 | GPR | Arch_ppc64, "ppc64");
00706 DEF_REGISTER(r21, 21 | GPR | Arch_ppc64, "ppc64");
00707 DEF_REGISTER(r22, 22 | GPR | Arch_ppc64, "ppc64");
00708 DEF_REGISTER(r23, 23 | GPR | Arch_ppc64, "ppc64");
00709 DEF_REGISTER(r24, 24 | GPR | Arch_ppc64, "ppc64");
00710 DEF_REGISTER(r25, 25 | GPR | Arch_ppc64, "ppc64");
00711 DEF_REGISTER(r26, 26 | GPR | Arch_ppc64, "ppc64");
00712 DEF_REGISTER(r27, 27 | GPR | Arch_ppc64, "ppc64");
00713 DEF_REGISTER(r28, 28 | GPR | Arch_ppc64, "ppc64");
00714 DEF_REGISTER(r29, 29 | GPR | Arch_ppc64, "ppc64");
00715 DEF_REGISTER(r30, 30 | GPR | Arch_ppc64, "ppc64");
00716 DEF_REGISTER(r31, 31 | GPR | Arch_ppc64, "ppc64");
00717 DEF_REGISTER(fpr0, 0 | FPR | Arch_ppc64, "ppc64");
00718 DEF_REGISTER(fpr1, 1 | FPR | Arch_ppc64, "ppc64");
00719 DEF_REGISTER(fpr2, 2 | FPR | Arch_ppc64, "ppc64");
00720 DEF_REGISTER(fpr3, 3 | FPR | Arch_ppc64, "ppc64");
00721 DEF_REGISTER(fpr4, 4 | FPR | Arch_ppc64, "ppc64");
00722 DEF_REGISTER(fpr5, 5 | FPR | Arch_ppc64, "ppc64");
00723 DEF_REGISTER(fpr6, 6 | FPR | Arch_ppc64, "ppc64");
00724 DEF_REGISTER(fpr7, 7 | FPR | Arch_ppc64, "ppc64");
00725 DEF_REGISTER(fpr8, 8 | FPR | Arch_ppc64, "ppc64");
00726 DEF_REGISTER(fpr9, 9 | FPR | Arch_ppc64, "ppc64");
00727 DEF_REGISTER(fpr10, 10 | FPR | Arch_ppc64, "ppc64");
00728 DEF_REGISTER(fpr11, 11 | FPR | Arch_ppc64, "ppc64");
00729 DEF_REGISTER(fpr12, 12 | FPR | Arch_ppc64, "ppc64");
00730 DEF_REGISTER(fpr13, 13 | FPR | Arch_ppc64, "ppc64");
00731 DEF_REGISTER(fpr14, 14 | FPR | Arch_ppc64, "ppc64");
00732 DEF_REGISTER(fpr15, 15 | FPR | Arch_ppc64, "ppc64");
00733 DEF_REGISTER(fpr16, 16 | FPR | Arch_ppc64, "ppc64");
00734 DEF_REGISTER(fpr17, 17 | FPR | Arch_ppc64, "ppc64");
00735 DEF_REGISTER(fpr18, 18 | FPR | Arch_ppc64, "ppc64");
00736 DEF_REGISTER(fpr19, 19 | FPR | Arch_ppc64, "ppc64");
00737 DEF_REGISTER(fpr20, 20 | FPR | Arch_ppc64, "ppc64");
00738 DEF_REGISTER(fpr21, 21 | FPR | Arch_ppc64, "ppc64");
00739 DEF_REGISTER(fpr22, 22 | FPR | Arch_ppc64, "ppc64");
00740 DEF_REGISTER(fpr23, 23 | FPR | Arch_ppc64, "ppc64");
00741 DEF_REGISTER(fpr24, 24 | FPR | Arch_ppc64, "ppc64");
00742 DEF_REGISTER(fpr25, 25 | FPR | Arch_ppc64, "ppc64");
00743 DEF_REGISTER(fpr26, 26 | FPR | Arch_ppc64, "ppc64");
00744 DEF_REGISTER(fpr27, 27 | FPR | Arch_ppc64, "ppc64");
00745 DEF_REGISTER(fpr28, 28 | FPR | Arch_ppc64, "ppc64");
00746 DEF_REGISTER(fpr29, 29 | FPR | Arch_ppc64, "ppc64");
00747 DEF_REGISTER(fpr30, 30 | FPR | Arch_ppc64, "ppc64");
00748 DEF_REGISTER(fpr31, 31 | FPR | Arch_ppc64, "ppc64");
00749 DEF_REGISTER(fsr0, 0 | FSR | Arch_ppc64, "ppc64");
00750 DEF_REGISTER(fsr1, 1 | FSR | Arch_ppc64, "ppc64");
00751 DEF_REGISTER(fsr2, 2 | FSR | Arch_ppc64, "ppc64");
00752 DEF_REGISTER(fsr3, 3 | FSR | Arch_ppc64, "ppc64");
00753 DEF_REGISTER(fsr4, 4 | FSR | Arch_ppc64, "ppc64");
00754 DEF_REGISTER(fsr5, 5 | FSR | Arch_ppc64, "ppc64");
00755 DEF_REGISTER(fsr6, 6 | FSR | Arch_ppc64, "ppc64");
00756 DEF_REGISTER(fsr7, 7 | FSR | Arch_ppc64, "ppc64");
00757 DEF_REGISTER(fsr8, 8 | FSR | Arch_ppc64, "ppc64");
00758 DEF_REGISTER(fsr9, 9 | FSR | Arch_ppc64, "ppc64");
00759 DEF_REGISTER(fsr10, 10 | FSR | Arch_ppc64, "ppc64");
00760 DEF_REGISTER(fsr11, 11 | FSR | Arch_ppc64, "ppc64");
00761 DEF_REGISTER(fsr12, 12 | FSR | Arch_ppc64, "ppc64");
00762 DEF_REGISTER(fsr13, 13 | FSR | Arch_ppc64, "ppc64");
00763 DEF_REGISTER(fsr14, 14 | FSR | Arch_ppc64, "ppc64");
00764 DEF_REGISTER(fsr15, 15 | FSR | Arch_ppc64, "ppc64");
00765 DEF_REGISTER(fsr16, 16 | FSR | Arch_ppc64, "ppc64");
00766 DEF_REGISTER(fsr17, 17 | FSR | Arch_ppc64, "ppc64");
00767 DEF_REGISTER(fsr18, 18 | FSR | Arch_ppc64, "ppc64");
00768 DEF_REGISTER(fsr19, 19 | FSR | Arch_ppc64, "ppc64");
00769 DEF_REGISTER(fsr20, 20 | FSR | Arch_ppc64, "ppc64");
00770 DEF_REGISTER(fsr21, 21 | FSR | Arch_ppc64, "ppc64");
00771 DEF_REGISTER(fsr22, 22 | FSR | Arch_ppc64, "ppc64");
00772 DEF_REGISTER(fsr23, 23 | FSR | Arch_ppc64, "ppc64");
00773 DEF_REGISTER(fsr24, 24 | FSR | Arch_ppc64, "ppc64");
00774 DEF_REGISTER(fsr25, 25 | FSR | Arch_ppc64, "ppc64");
00775 DEF_REGISTER(fsr26, 26 | FSR | Arch_ppc64, "ppc64");
00776 DEF_REGISTER(fsr27, 27 | FSR | Arch_ppc64, "ppc64");
00777 DEF_REGISTER(fsr28, 28 | FSR | Arch_ppc64, "ppc64");
00778 DEF_REGISTER(fsr29, 29 | FSR | Arch_ppc64, "ppc64");
00779 DEF_REGISTER(fsr30, 30 | FSR | Arch_ppc64, "ppc64");
00780 DEF_REGISTER(fsr31, 31 | FSR | Arch_ppc64, "ppc64");
00781 DEF_REGISTER(mq, 0 | SPR | Arch_ppc64, "ppc64");
00782 DEF_REGISTER(xer, 1 | SPR | Arch_ppc64, "ppc64");
00783 DEF_REGISTER(lr, 8 | SPR | Arch_ppc64, "ppc64");
00784 DEF_REGISTER(ctr, 9 | SPR | Arch_ppc64, "ppc64");
00785 DEF_REGISTER(dsisr, 18 | SPR | Arch_ppc64, "ppc64");
00786 DEF_REGISTER(dar, 19 | SPR | Arch_ppc64, "ppc64");
00787 DEF_REGISTER(dec, 22 | SPR | Arch_ppc64, "ppc64");
00788 DEF_REGISTER(sdr1, 25 | SPR | Arch_ppc64, "ppc64");
00789 DEF_REGISTER(srr0, 26 | SPR | Arch_ppc64, "ppc64");
00790 DEF_REGISTER(srr1, 27 | SPR | Arch_ppc64, "ppc64");
00791 DEF_REGISTER(sprg0, 272 | SPR | Arch_ppc64, "ppc64");
00792 DEF_REGISTER(sprg1, 273 | SPR | Arch_ppc64, "ppc64");
00793 DEF_REGISTER(sprg2, 274 | SPR | Arch_ppc64, "ppc64");
00794 DEF_REGISTER(sprg3, 275 | SPR | Arch_ppc64, "ppc64");
00795 DEF_REGISTER(sprg4, 276 | SPR | Arch_ppc64, "ppc64");
00796 DEF_REGISTER(sprg5, 277 | SPR | Arch_ppc64, "ppc64");
00797 DEF_REGISTER(sprg6, 278 | SPR | Arch_ppc64, "ppc64");
00798 DEF_REGISTER(sprg7, 279 | SPR | Arch_ppc64, "ppc64");
00799
00800 DEF_REGISTER(sprg3_ro, 259 | SPR | Arch_ppc64, "ppc64");
00801 DEF_REGISTER(sprg4_ro, 260 | SPR | Arch_ppc64, "ppc64");
00802 DEF_REGISTER(sprg5_ro, 261 | SPR | Arch_ppc64, "ppc64");
00803 DEF_REGISTER(sprg6_ro, 262 | SPR | Arch_ppc64, "ppc64");
00804 DEF_REGISTER(sprg7_ro, 263 | SPR | Arch_ppc64, "ppc64");
00805 DEF_REGISTER(ear, 282 | SPR | Arch_ppc64, "ppc64");
00806 DEF_REGISTER(tbl_wo, 284 | SPR | Arch_ppc64, "ppc64");
00807 DEF_REGISTER(tbl_ro, 268 | SPR | Arch_ppc64, "ppc64");
00808 DEF_REGISTER(tbu_wo, 285 | SPR | Arch_ppc64, "ppc64");
00809 DEF_REGISTER(tbu_ro, 269 | SPR | Arch_ppc64, "ppc64");
00810 DEF_REGISTER(pvr, 287 | SPR | Arch_ppc64, "ppc64");
00811 DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc64, "ppc64");
00812 DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc64, "ppc64");
00813 DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc64, "ppc64");
00814 DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc64, "ppc64");
00815 DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc64, "ppc64");
00816 DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc64, "ppc64");
00817 DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc64, "ppc64");
00818 DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc64, "ppc64");
00819 DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc64, "ppc64");
00820 DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc64, "ppc64");
00821 DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc64, "ppc64");
00822 DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc64, "ppc64");
00823 DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc64, "ppc64");
00824 DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc64, "ppc64");
00825 DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc64, "ppc64");
00826 DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc64, "ppc64");
00827 DEF_REGISTER(pc, 600 | SPR | Arch_ppc64, "ppc64");
00828 DEF_REGISTER(fpscw, 601 | SPR | Arch_ppc64, "ppc64");
00829 DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc64, "ppc64");
00830 DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc64, "ppc64");
00831 DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc64, "ppc64");
00832 DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc64, "ppc64");
00833 DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc64, "ppc64");
00834 DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc64, "ppc64");
00835 DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc64, "ppc64");
00836 DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc64, "ppc64");
00837 DEF_REGISTER(msr, 610 | SPR | Arch_ppc64, "ppc64");
00838 DEF_REGISTER(ivpr, 611 | SPR | Arch_ppc64, "ppc64");
00839 DEF_REGISTER(ivor8, 612 | SPR | Arch_ppc64, "ppc64");
00840 DEF_REGISTER(seg0, 613 | SPR | Arch_ppc64, "ppc64");
00841 DEF_REGISTER(seg1, 614 | SPR | Arch_ppc64, "ppc64");
00842 DEF_REGISTER(seg2, 615 | SPR | Arch_ppc64, "ppc64");
00843 DEF_REGISTER(seg3, 616 | SPR | Arch_ppc64, "ppc64");
00844 DEF_REGISTER(seg4, 617 | SPR | Arch_ppc64, "ppc64");
00845 DEF_REGISTER(seg5, 618 | SPR | Arch_ppc64, "ppc64");
00846 DEF_REGISTER(seg6, 619 | SPR | Arch_ppc64, "ppc64");
00847 DEF_REGISTER(seg7, 620 | SPR | Arch_ppc64, "ppc64");
00848 DEF_REGISTER(cr0, 621 | SPR | Arch_ppc64, "ppc64");
00849 DEF_REGISTER(cr1, 622 | SPR | Arch_ppc64, "ppc64");
00850 DEF_REGISTER(cr2, 623 | SPR | Arch_ppc64, "ppc64");
00851 DEF_REGISTER(cr3, 624 | SPR | Arch_ppc64, "ppc64");
00852 DEF_REGISTER(cr4, 625 | SPR | Arch_ppc64, "ppc64");
00853 DEF_REGISTER(cr5, 626 | SPR | Arch_ppc64, "ppc64");
00854 DEF_REGISTER(cr6, 627 | SPR | Arch_ppc64, "ppc64");
00855 DEF_REGISTER(cr7, 628 | SPR | Arch_ppc64, "ppc64");
00856 DEF_REGISTER(cr, 629 | SPR | Arch_ppc64, "ppc64");
00857 DEF_REGISTER(or3, 630 | SPR | Arch_ppc64, "ppc64");
00858 DEF_REGISTER(trap, 631 | SPR | Arch_ppc64, "ppc64");
00859 }
00860 }
00861
00862 #endif