Merge branch 'master' of http://github.com/dyninst/dyninst into att_syntax_merge
[dyninst.git] / common / h / dyn_regs.h
1 /*
2  * See the dyninst/COPYRIGHT file for copyright information.
3  *
4  * We provide the Paradyn Tools (below described as "Paradyn")
5  * on an AS IS basis, and do not warrant its validity or performance.
6  * We reserve the right to update, modify, or discontinue this
7  * software at any time.  We shall have no obligation to supply such
8  * updates or modifications or any other form of support to you.
9  *
10  * By your use of Paradyn, you understand and agree that we (or any
11  * other person or entity with proprietary rights in Paradyn) are
12  * under no obligation to provide either maintenance services,
13  * update services, notices of latent defects, or correction of
14  * defects for Paradyn.
15  *
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  *
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24  * Lesser General Public License for more details.
25  *
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29  */
30
31
32 #if !defined(DYN_REGS_H_)
33 #define DYN_REGS_H_
34
35 #include "util.h"
36 #include "boost/shared_ptr.hpp"
37
38 #include <assert.h>
39 #include <map>
40 #include <string>
41
42 namespace Dyninst
43 {
44     struct x86OperandParser;
45     struct ppcOperandParser;
46     struct aarch64OperandParser;
47
48     typedef unsigned long MachRegisterVal;
49
50     //0xff000000 is used to encode architecture
51     typedef enum
52     {
53         Arch_none   = 0x00000000,
54         Arch_x86    = 0x14000000,
55         Arch_x86_64 = 0x18000000,
56         Arch_ppc32  = 0x24000000,
57         Arch_ppc64  = 0x28000000,
58                 Arch_aarch32 = 0x44000000, //for later use
59                 Arch_aarch64 = 0x48000000
60     } Architecture;
61
62
63     COMMON_EXPORT bool isSegmentRegister(int regClass);
64     COMMON_EXPORT unsigned getArchAddressWidth(Dyninst::Architecture arch);
65     class COMMON_EXPORT MachRegister {
66         friend struct ::Dyninst::x86OperandParser;
67         friend struct ::Dyninst::ppcOperandParser;
68         friend struct ::Dyninst::aarch64OperandParser;
69     private:
70         signed int reg;
71
72         typedef std::map<signed int, std::string> NameMap;
73         static boost::shared_ptr<MachRegister::NameMap> names();
74         void init_names();
75     public:
76
77         MachRegister();
78         explicit MachRegister(signed int r);
79         explicit MachRegister(signed int r, const char *n);
80         explicit MachRegister(signed int r, std::string n);
81
82         MachRegister getBaseRegister() const;
83         Architecture getArchitecture() const;
84         bool isValid() const;
85         MachRegisterVal getSubRegValue(const MachRegister& subreg, MachRegisterVal &orig) const;
86
87         std::string name() const;
88         unsigned int size() const;
89         bool operator<(const MachRegister &a) const;
90         bool operator==(const MachRegister &a) const;
91         operator signed int() const;
92         signed int val() const;
93         unsigned int regClass() const;
94
95         static MachRegister getPC(Dyninst::Architecture arch);
96         static MachRegister getReturnAddress(Dyninst::Architecture arch);
97         static MachRegister getFramePointer(Dyninst::Architecture arch);
98         static MachRegister getStackPointer(Dyninst::Architecture arch);
99         static MachRegister getSyscallNumberReg(Dyninst::Architecture arch);
100         static MachRegister getSyscallNumberOReg(Dyninst::Architecture arch);
101         static MachRegister getSyscallReturnValueReg(Dyninst::Architecture arch);
102         static MachRegister getZeroFlag(Dyninst::Architecture arch);
103
104         bool isPC() const;
105         bool isFramePointer() const;
106         bool isStackPointer() const;
107         bool isSyscallNumberReg() const;
108         bool isSyscallReturnValueReg() const;
109         bool isFlag() const;
110
111         void getROSERegister(int &c, int &n, int &p);
112
113         static MachRegister DwarfEncToReg(int encoding, Dyninst::Architecture arch);
114         static MachRegister getArchRegFromAbstractReg(MachRegister abstract, Dyninst::Architecture arch);
115         int getDwarfEnc() const;
116
117         static MachRegister getArchReg(unsigned int regNum, Dyninst::Architecture arch);
118    };
119
120    /**
121     * DEF_REGISTER will define its first parameter as the name of the object
122     * it's declaring, and 'i<name>' as the integer value representing that object.
123     * As an example, the name of a register may be
124     *  x86::EAX
125     * with that register having a value of
126     *  x86::iEAX
127     *
128     * The value is mostly useful in the 'case' part switch statements.
129     **/
130 #if defined(DYN_DEFINE_REGS)
131    //DYN_DEFINE_REGS Should only be defined in libcommon.
132    //We want one definition, which will be in libcommon, and declarations
133    //for everyone else.
134    //
135    //I wanted these to be const MachRegister objects, but that changes the
136    //linker scope.  Instead they're non-const.  Every accessor function is
137    //const anyways, so we'll just close our eyes and pretend they're declared
138    //const.
139 #define DEF_REGISTER(name, value, Arch) \
140   const signed int i##name = (value); \
141   COMMON_EXPORT MachRegister name(i##name, Arch "::" #name)
142 #else
143 #define DEF_REGISTER(name, value, Arch) \
144   const signed int i##name = (value); \
145   COMMON_EXPORT extern MachRegister name
146
147 #endif
148
149    /**
150     * For interpreting constants:
151     *  Lowest 16 bits (0x000000ff) is base register ID
152     *  Next 16 bits (0x0000ff00) is the aliasing and subrange ID-
153     *    used on x86/x86_64 to distinguish between things like EAX and AH
154     *  Next 16 bits (0x00ff0000) are the register category, GPR/FPR/MMX/...
155     *  Top 16 bits (0xff000000) are the architecture.
156     *
157     *  These values/layout are not guaranteed to remain the same as part of the
158     *  public interface, and may change.
159     **/
160
161    //Abstract registers used for stackwalking
162    DEF_REGISTER(InvalidReg, 0 | Arch_none, "abstract");
163    DEF_REGISTER(FrameBase,  1 | Arch_none, "abstract");
164    DEF_REGISTER(ReturnAddr, 2 | Arch_none, "abstract");
165    DEF_REGISTER(StackTop,   3 | Arch_none, "abstract");
166    // DWARF-ism; the CFA is the value of the stack pointer in the previous frame
167    DEF_REGISTER(CFA,        4 | Arch_none, "abstract");
168
169    namespace x86
170    {
171       const signed int L_REG = 0x00000100; //8-bit, first byte
172       const signed int H_REG = 0x00000200; //8-bit, second byte
173       const signed int W_REG = 0x00000300; //16-bit, first word
174       const signed int FULL  = 0x00000000; //32 bits
175       const signed int QUAD  = 0x00004000; //64 bits
176       const signed int OCT   = 0x00002000; //128 bits
177       const signed int FPDBL = 0x00001000; // 80 bits
178       const signed int BIT   = 0x00008000; // 1 bit
179       const signed int GPR   = 0x00010000;
180       const signed int SEG   = 0x00020000;
181       const signed int FLAG  = 0x00030000;
182       const signed int MISC  = 0x00040000;
183       const signed int KMASK = 0x00050000;
184       const signed int XMM   = 0x00060000;
185       const signed int YMM   = 0x00070000;
186       const signed int ZMM   = 0x00080000;
187       const signed int MMX   = 0x00090000;
188       const signed int CTL   = 0x000A0000;
189       const signed int DBG   = 0x000B0000;
190       const signed int TST   = 0x000C0000;
191       const signed int BASEA  = 0x0;
192       const signed int BASEC  = 0x1;
193       const signed int BASED  = 0x2;
194       const signed int BASEB  = 0x3;
195       const signed int BASESP = 0x4;
196       const signed int BASEBP = 0x5;
197       const signed int BASESI = 0x6;
198       const signed int BASEDI = 0x7;
199       const signed int FLAGS = 0x0;
200
201       const signed int CF = 0x0;
202       const signed int FLAG1 = 0x1;
203       const signed int PF = 0x2;
204       const signed int FLAG3 = 0x3;
205       const signed int AF = 0x4;
206       const signed int FLAG5 = 0x5;
207       const signed int ZF = 0x6;
208       const signed int SF = 0x7;
209       const signed int TF = 0x8;
210       const signed int IF = 0x9;
211       const signed int DF = 0xa;
212       const signed int OF = 0xb;
213       const signed int FLAGC = 0xc;
214       const signed int FLAGD = 0xd;
215       const signed int NT = 0xe;
216       const signed int FLAGF = 0xf;
217       const signed int RF = 0x10;
218
219       DEF_REGISTER(eax,   BASEA   | FULL  | GPR  | Arch_x86, "x86");
220       DEF_REGISTER(ecx,   BASEC   | FULL  | GPR  | Arch_x86, "x86");
221       DEF_REGISTER(edx,   BASED   | FULL  | GPR  | Arch_x86, "x86");
222       DEF_REGISTER(ebx,   BASEB   | FULL  | GPR  | Arch_x86, "x86");
223       DEF_REGISTER(esp,   BASESP  | FULL  | GPR  | Arch_x86, "x86");
224       DEF_REGISTER(ebp,   BASEBP  | FULL  | GPR  | Arch_x86, "x86");
225       DEF_REGISTER(esi,   BASESI  | FULL  | GPR  | Arch_x86, "x86");
226       DEF_REGISTER(edi,   BASEDI  | FULL  | GPR  | Arch_x86, "x86");
227       DEF_REGISTER(ah,    BASEA   | H_REG | GPR  | Arch_x86, "x86");
228       DEF_REGISTER(al,    BASEA   | L_REG | GPR  | Arch_x86, "x86");
229       DEF_REGISTER(ax,    BASEA   | W_REG | GPR  | Arch_x86, "x86");
230       DEF_REGISTER(ch,    BASEC   | H_REG | GPR  | Arch_x86, "x86");
231       DEF_REGISTER(cl,    BASEC   | L_REG | GPR  | Arch_x86, "x86");
232       DEF_REGISTER(cx,    BASEC   | W_REG | GPR  | Arch_x86, "x86");
233       DEF_REGISTER(dh,    BASED   | H_REG | GPR  | Arch_x86, "x86");
234       DEF_REGISTER(dl,    BASED   | L_REG | GPR  | Arch_x86, "x86");
235       DEF_REGISTER(dx,    BASED   | W_REG | GPR  | Arch_x86, "x86");
236       DEF_REGISTER(bh,    BASEB   | H_REG | GPR  | Arch_x86, "x86");
237       DEF_REGISTER(bl,    BASEB   | L_REG | GPR  | Arch_x86, "x86");
238       DEF_REGISTER(bx,    BASEB   | W_REG | GPR  | Arch_x86, "x86");
239       DEF_REGISTER(sp,    BASESP  | W_REG | GPR  | Arch_x86, "x86");
240       DEF_REGISTER(bp,    BASEBP  | W_REG | GPR  | Arch_x86, "x86");
241       DEF_REGISTER(si,    BASESI  | W_REG | GPR  | Arch_x86, "x86");
242       DEF_REGISTER(di,    BASEDI  | W_REG | GPR  | Arch_x86, "x86");
243       DEF_REGISTER(eip,   0x10    | FULL         | Arch_x86, "x86");
244       DEF_REGISTER(flags, FLAGS   | FULL  | FLAG | Arch_x86, "x86");
245       DEF_REGISTER(cf,    CF      | BIT   | FLAG | Arch_x86, "x86");
246       DEF_REGISTER(flag1, FLAG1   | BIT   | FLAG | Arch_x86, "x86");
247       DEF_REGISTER(pf,    PF      | BIT   | FLAG | Arch_x86, "x86");
248       DEF_REGISTER(flag3, FLAG3   | BIT   | FLAG | Arch_x86, "x86");
249       DEF_REGISTER(af,    AF      | BIT   | FLAG | Arch_x86, "x86");
250       DEF_REGISTER(flag5, FLAG5   | BIT   | FLAG | Arch_x86, "x86");
251       DEF_REGISTER(zf,    ZF      | BIT   | FLAG | Arch_x86, "x86");
252       DEF_REGISTER(sf,    SF      | BIT   | FLAG | Arch_x86, "x86");
253       DEF_REGISTER(tf,    TF      | BIT   | FLAG | Arch_x86, "x86");
254       DEF_REGISTER(if_,   IF      | BIT   | FLAG | Arch_x86, "x86");
255       DEF_REGISTER(df,    DF      | BIT   | FLAG | Arch_x86, "x86");
256       DEF_REGISTER(of,    OF      | BIT   | FLAG | Arch_x86, "x86");
257       DEF_REGISTER(flagc, FLAGC   | BIT   | FLAG | Arch_x86, "x86");
258       DEF_REGISTER(flagd, FLAGD   | BIT   | FLAG | Arch_x86, "x86");
259       DEF_REGISTER(nt_,   NT      | BIT   | FLAG | Arch_x86, "x86");
260       DEF_REGISTER(flagf, FLAGF   | BIT   | FLAG | Arch_x86, "x86");
261       DEF_REGISTER(rf,    RF      | BIT   | FLAG | Arch_x86, "x86");
262       DEF_REGISTER(ds,    0x0     | W_REG | SEG  | Arch_x86, "x86");
263       DEF_REGISTER(es,    0x1     | W_REG | SEG  | Arch_x86, "x86");
264       DEF_REGISTER(fs,    0x2     | W_REG | SEG  | Arch_x86, "x86");
265       DEF_REGISTER(gs,    0x3     | W_REG | SEG  | Arch_x86, "x86");
266       DEF_REGISTER(cs,    0x4     | W_REG | SEG  | Arch_x86, "x86");
267       DEF_REGISTER(ss,    0x5     | W_REG | SEG  | Arch_x86, "x86");
268       DEF_REGISTER(oeax,  0x0     | FULL  | MISC | Arch_x86, "x86");
269       DEF_REGISTER(fsbase, 0x1    | FULL  | MISC | Arch_x86, "x86");
270       DEF_REGISTER(gsbase, 0x2    | FULL  | MISC | Arch_x86, "x86");
271
272       DEF_REGISTER(k0,    0x00    | OCT   | KMASK| Arch_x86, "x86");
273       DEF_REGISTER(k1,    0x01    | OCT   | KMASK| Arch_x86, "x86");
274       DEF_REGISTER(k2,    0x02    | OCT   | KMASK| Arch_x86, "x86");
275       DEF_REGISTER(k3,    0x03    | OCT   | KMASK| Arch_x86, "x86");
276       DEF_REGISTER(k4,    0x04    | OCT   | KMASK| Arch_x86, "x86");
277       DEF_REGISTER(k5,    0x05    | OCT   | KMASK| Arch_x86, "x86");
278       DEF_REGISTER(k6,    0x06    | OCT   | KMASK| Arch_x86, "x86");
279       DEF_REGISTER(k7,    0x07    | OCT   | KMASK| Arch_x86, "x86");
280       
281       DEF_REGISTER(xmm0,  0x00    | OCT   | XMM  | Arch_x86, "x86");
282       DEF_REGISTER(xmm1,  0x01    | OCT   | XMM  | Arch_x86, "x86");
283       DEF_REGISTER(xmm2,  0x02    | OCT   | XMM  | Arch_x86, "x86");
284       DEF_REGISTER(xmm3,  0x03    | OCT   | XMM  | Arch_x86, "x86");
285       DEF_REGISTER(xmm4,  0x04    | OCT   | XMM  | Arch_x86, "x86");
286       DEF_REGISTER(xmm5,  0x05    | OCT   | XMM  | Arch_x86, "x86");
287       DEF_REGISTER(xmm6,  0x06    | OCT   | XMM  | Arch_x86, "x86");
288       DEF_REGISTER(xmm7,  0x07    | OCT   | XMM  | Arch_x86, "x86");
289       DEF_REGISTER(xmm8,  0x08    | OCT   | XMM  | Arch_x86, "x86");
290       DEF_REGISTER(xmm9,  0x09    | OCT   | XMM  | Arch_x86, "x86");
291       DEF_REGISTER(xmm10, 0x0A    | OCT   | XMM  | Arch_x86, "x86");
292       DEF_REGISTER(xmm11, 0x0B    | OCT   | XMM  | Arch_x86, "x86");
293       DEF_REGISTER(xmm12, 0x0C    | OCT   | XMM  | Arch_x86, "x86");
294       DEF_REGISTER(xmm13, 0x0D    | OCT   | XMM  | Arch_x86, "x86");
295       DEF_REGISTER(xmm14, 0x0E    | OCT   | XMM  | Arch_x86, "x86");
296       DEF_REGISTER(xmm15, 0x0F    | OCT   | XMM  | Arch_x86, "x86");
297       DEF_REGISTER(xmm16, 0x10    | OCT   | XMM  | Arch_x86, "x86");
298       DEF_REGISTER(xmm17, 0x11    | OCT   | XMM  | Arch_x86, "x86");
299       DEF_REGISTER(xmm18, 0x12    | OCT   | XMM  | Arch_x86, "x86");
300       DEF_REGISTER(xmm19, 0x13    | OCT   | XMM  | Arch_x86, "x86");
301       DEF_REGISTER(xmm20, 0x14    | OCT   | XMM  | Arch_x86, "x86");
302       DEF_REGISTER(xmm21, 0x15    | OCT   | XMM  | Arch_x86, "x86");
303       DEF_REGISTER(xmm22, 0x16    | OCT   | XMM  | Arch_x86, "x86");
304       DEF_REGISTER(xmm23, 0x17    | OCT   | XMM  | Arch_x86, "x86");
305       DEF_REGISTER(xmm24, 0x18    | OCT   | XMM  | Arch_x86, "x86");
306       DEF_REGISTER(xmm25, 0x19    | OCT   | XMM  | Arch_x86, "x86");
307       DEF_REGISTER(xmm26, 0x1A    | OCT   | XMM  | Arch_x86, "x86");
308       DEF_REGISTER(xmm27, 0x1B    | OCT   | XMM  | Arch_x86, "x86");
309       DEF_REGISTER(xmm28, 0x1C    | OCT   | XMM  | Arch_x86, "x86");
310       DEF_REGISTER(xmm29, 0x1D    | OCT   | XMM  | Arch_x86, "x86");
311       DEF_REGISTER(xmm30, 0x1E    | OCT   | XMM  | Arch_x86, "x86");
312       DEF_REGISTER(xmm31, 0x1F    | OCT   | XMM  | Arch_x86, "x86");
313
314
315       DEF_REGISTER(ymm0,  0x00    | OCT   | YMM  | Arch_x86, "x86");
316       DEF_REGISTER(ymm1,  0x01    | OCT   | YMM  | Arch_x86, "x86");
317       DEF_REGISTER(ymm2,  0x02    | OCT   | YMM  | Arch_x86, "x86");
318       DEF_REGISTER(ymm3,  0x03    | OCT   | YMM  | Arch_x86, "x86");
319       DEF_REGISTER(ymm4,  0x04    | OCT   | YMM  | Arch_x86, "x86");
320       DEF_REGISTER(ymm5,  0x05    | OCT   | YMM  | Arch_x86, "x86");
321       DEF_REGISTER(ymm6,  0x06    | OCT   | YMM  | Arch_x86, "x86");
322       DEF_REGISTER(ymm7,  0x07    | OCT   | YMM  | Arch_x86, "x86");
323       DEF_REGISTER(ymm8,  0x08    | OCT   | YMM  | Arch_x86, "x86");
324       DEF_REGISTER(ymm9,  0x09    | OCT   | YMM  | Arch_x86, "x86");
325       DEF_REGISTER(ymm10, 0x0A    | OCT   | YMM  | Arch_x86, "x86");
326       DEF_REGISTER(ymm11, 0x0B    | OCT   | YMM  | Arch_x86, "x86");
327       DEF_REGISTER(ymm12, 0x0C    | OCT   | YMM  | Arch_x86, "x86");
328       DEF_REGISTER(ymm13, 0x0D    | OCT   | YMM  | Arch_x86, "x86");
329       DEF_REGISTER(ymm14, 0x0E    | OCT   | YMM  | Arch_x86, "x86");
330       DEF_REGISTER(ymm15, 0x0F    | OCT   | YMM  | Arch_x86, "x86");
331       DEF_REGISTER(ymm16, 0x10    | OCT   | YMM  | Arch_x86, "x86");
332       DEF_REGISTER(ymm17, 0x11    | OCT   | YMM  | Arch_x86, "x86");
333       DEF_REGISTER(ymm18, 0x12    | OCT   | YMM  | Arch_x86, "x86");
334       DEF_REGISTER(ymm19, 0x13    | OCT   | YMM  | Arch_x86, "x86");
335       DEF_REGISTER(ymm20, 0x14    | OCT   | YMM  | Arch_x86, "x86");
336       DEF_REGISTER(ymm21, 0x15    | OCT   | YMM  | Arch_x86, "x86");
337       DEF_REGISTER(ymm22, 0x16    | OCT   | YMM  | Arch_x86, "x86");
338       DEF_REGISTER(ymm23, 0x17    | OCT   | YMM  | Arch_x86, "x86");
339       DEF_REGISTER(ymm24, 0x18    | OCT   | YMM  | Arch_x86, "x86");
340       DEF_REGISTER(ymm25, 0x19    | OCT   | YMM  | Arch_x86, "x86");
341       DEF_REGISTER(ymm26, 0x1A    | OCT   | YMM  | Arch_x86, "x86");
342       DEF_REGISTER(ymm27, 0x1B    | OCT   | YMM  | Arch_x86, "x86");
343       DEF_REGISTER(ymm28, 0x1C    | OCT   | YMM  | Arch_x86, "x86");
344       DEF_REGISTER(ymm29, 0x1D    | OCT   | YMM  | Arch_x86, "x86");
345       DEF_REGISTER(ymm30, 0x1E    | OCT   | YMM  | Arch_x86, "x86");
346       DEF_REGISTER(ymm31, 0x1F    | OCT   | YMM  | Arch_x86, "x86");
347
348       DEF_REGISTER(zmm0,  0x00    | OCT   | ZMM  | Arch_x86, "x86");
349       DEF_REGISTER(zmm1,  0x01    | OCT   | ZMM  | Arch_x86, "x86");
350       DEF_REGISTER(zmm2,  0x02    | OCT   | ZMM  | Arch_x86, "x86");
351       DEF_REGISTER(zmm3,  0x03    | OCT   | ZMM  | Arch_x86, "x86");
352       DEF_REGISTER(zmm4,  0x04    | OCT   | ZMM  | Arch_x86, "x86");
353       DEF_REGISTER(zmm5,  0x05    | OCT   | ZMM  | Arch_x86, "x86");
354       DEF_REGISTER(zmm6,  0x06    | OCT   | ZMM  | Arch_x86, "x86");
355       DEF_REGISTER(zmm7,  0x07    | OCT   | ZMM  | Arch_x86, "x86");
356       DEF_REGISTER(zmm8,  0x08    | OCT   | ZMM  | Arch_x86, "x86");
357       DEF_REGISTER(zmm9,  0x09    | OCT   | ZMM  | Arch_x86, "x86");
358       DEF_REGISTER(zmm10, 0x0A    | OCT   | ZMM  | Arch_x86, "x86");
359       DEF_REGISTER(zmm11, 0x0B    | OCT   | ZMM  | Arch_x86, "x86");
360       DEF_REGISTER(zmm12, 0x0C    | OCT   | ZMM  | Arch_x86, "x86");
361       DEF_REGISTER(zmm13, 0x0D    | OCT   | ZMM  | Arch_x86, "x86");
362       DEF_REGISTER(zmm14, 0x0E    | OCT   | ZMM  | Arch_x86, "x86");
363       DEF_REGISTER(zmm15, 0x0F    | OCT   | ZMM  | Arch_x86, "x86");
364       DEF_REGISTER(zmm16, 0x10    | OCT   | ZMM  | Arch_x86, "x86");
365       DEF_REGISTER(zmm17, 0x11    | OCT   | ZMM  | Arch_x86, "x86");
366       DEF_REGISTER(zmm18, 0x12    | OCT   | ZMM  | Arch_x86, "x86");
367       DEF_REGISTER(zmm19, 0x13    | OCT   | ZMM  | Arch_x86, "x86");
368       DEF_REGISTER(zmm20, 0x14    | OCT   | ZMM  | Arch_x86, "x86");
369       DEF_REGISTER(zmm21, 0x15    | OCT   | ZMM  | Arch_x86, "x86");
370       DEF_REGISTER(zmm22, 0x16    | OCT   | ZMM  | Arch_x86, "x86");
371       DEF_REGISTER(zmm23, 0x17    | OCT   | ZMM  | Arch_x86, "x86");
372       DEF_REGISTER(zmm24, 0x18    | OCT   | ZMM  | Arch_x86, "x86");
373       DEF_REGISTER(zmm25, 0x19    | OCT   | ZMM  | Arch_x86, "x86");
374       DEF_REGISTER(zmm26, 0x1A    | OCT   | ZMM  | Arch_x86, "x86");
375       DEF_REGISTER(zmm27, 0x1B    | OCT   | ZMM  | Arch_x86, "x86");
376       DEF_REGISTER(zmm28, 0x1C    | OCT   | ZMM  | Arch_x86, "x86");
377       DEF_REGISTER(zmm29, 0x1D    | OCT   | ZMM  | Arch_x86, "x86");
378       DEF_REGISTER(zmm30, 0x1E    | OCT   | ZMM  | Arch_x86, "x86");
379       DEF_REGISTER(zmm31, 0x1F    | OCT   | ZMM  | Arch_x86, "x86");
380
381       DEF_REGISTER(mm0,   0x0     | FPDBL | MMX  | Arch_x86, "x86");
382       DEF_REGISTER(mm1,   0x1     | FPDBL | MMX  | Arch_x86, "x86");
383       DEF_REGISTER(mm2,   0x2     | FPDBL | MMX  | Arch_x86, "x86");
384       DEF_REGISTER(mm3,   0x3     | FPDBL | MMX  | Arch_x86, "x86");
385       DEF_REGISTER(mm4,   0x4     | FPDBL | MMX  | Arch_x86, "x86");
386       DEF_REGISTER(mm5,   0x5     | FPDBL | MMX  | Arch_x86, "x86");
387       DEF_REGISTER(mm6,   0x6     | FPDBL | MMX  | Arch_x86, "x86");
388       DEF_REGISTER(mm7,   0x7     | FPDBL | MMX  | Arch_x86, "x86");
389       DEF_REGISTER(cr0,   0x0     | FULL  | CTL  | Arch_x86, "x86");
390       DEF_REGISTER(cr1,   0x1     | FULL  | CTL  | Arch_x86, "x86");
391       DEF_REGISTER(cr2,   0x2     | FULL  | CTL  | Arch_x86, "x86");
392       DEF_REGISTER(cr3,   0x3     | FULL  | CTL  | Arch_x86, "x86");
393       DEF_REGISTER(cr4,   0x4     | FULL  | CTL  | Arch_x86, "x86");
394       DEF_REGISTER(cr5,   0x5     | FULL  | CTL  | Arch_x86, "x86");
395       DEF_REGISTER(cr6,   0x6     | FULL  | CTL  | Arch_x86, "x86");
396       DEF_REGISTER(cr7,   0x7     | FULL  | CTL  | Arch_x86, "x86");
397       DEF_REGISTER(dr0,   0x0     | FULL  | DBG  | Arch_x86, "x86");
398       DEF_REGISTER(dr1,   0x1     | FULL  | DBG  | Arch_x86, "x86");
399       DEF_REGISTER(dr2,   0x2     | FULL  | DBG  | Arch_x86, "x86");
400       DEF_REGISTER(dr3,   0x3     | FULL  | DBG  | Arch_x86, "x86");
401       DEF_REGISTER(dr4,   0x4     | FULL  | DBG  | Arch_x86, "x86");
402       DEF_REGISTER(dr5,   0x5     | FULL  | DBG  | Arch_x86, "x86");
403       DEF_REGISTER(dr6,   0x6     | FULL  | DBG  | Arch_x86, "x86");
404       DEF_REGISTER(dr7,   0x7     | FULL  | DBG  | Arch_x86, "x86");
405       DEF_REGISTER(tr0,   0x0     | FULL  | TST  | Arch_x86, "x86");
406       DEF_REGISTER(tr1,   0x1     | FULL  | TST  | Arch_x86, "x86");
407       DEF_REGISTER(tr2,   0x2     | FULL  | TST  | Arch_x86, "x86");
408       DEF_REGISTER(tr3,   0x3     | FULL  | TST  | Arch_x86, "x86");
409       DEF_REGISTER(tr4,   0x4     | FULL  | TST  | Arch_x86, "x86");
410       DEF_REGISTER(tr5,   0x5     | FULL  | TST  | Arch_x86, "x86");
411       DEF_REGISTER(tr6,   0x6     | FULL  | TST  | Arch_x86, "x86");
412       DEF_REGISTER(tr7,   0x7     | FULL  | TST  | Arch_x86, "x86");
413       DEF_REGISTER(st0,   0x0     | FPDBL | MMX  | Arch_x86, "x86");
414       DEF_REGISTER(st1,   0x1     | FPDBL | MMX  | Arch_x86, "x86");
415       DEF_REGISTER(st2,   0x2     | FPDBL | MMX  | Arch_x86, "x86");
416       DEF_REGISTER(st3,   0x3     | FPDBL | MMX  | Arch_x86, "x86");
417       DEF_REGISTER(st4,   0x4     | FPDBL | MMX  | Arch_x86, "x86");
418       DEF_REGISTER(st5,   0x5     | FPDBL | MMX  | Arch_x86, "x86");
419       DEF_REGISTER(st6,   0x6     | FPDBL | MMX  | Arch_x86, "x86");
420       DEF_REGISTER(st7,   0x7     | FPDBL | MMX  | Arch_x86, "x86");
421    }
422    namespace x86_64
423    {
424       const signed int L_REG = 0x00000100;  //8-bit, first byte
425       const signed int H_REG = 0x00000200;  //8-bit, second byte
426       const signed int W_REG = 0x00000300; //16 bit, first work
427       const signed int D_REG = 0x00000f00; //32 bit, first double word
428       const signed int FULL  = 0x00000000; //64 bit
429       const signed int FPDBL = 0x00001000; // 80 bits
430       const signed int OCT   = 0x00002000; //128 bits
431       const signed int BIT   = 0x00008000; // 1 bit
432       const signed int GPR   = 0x00010000;
433       const signed int SEG   = 0x00020000;
434       const signed int FLAG  = 0x00030000;
435       const signed int MISC  = 0x00040000;
436       const signed int KMASK = 0x00050000;
437       const signed int XMM   = 0x00060000;
438       const signed int YMM   = 0x00070000;
439       const signed int ZMM   = 0x00080000;
440       const signed int MMX   = 0x00090000;
441       const signed int CTL   = 0x000A0000;
442       const signed int DBG   = 0x000B0000;
443       const signed int TST   = 0x000C0000;
444       const signed int FLAGS = 0x00000000;
445       const signed int BASEA  = 0x0;
446       const signed int BASEC  = 0x1;
447       const signed int BASED  = 0x2;
448       const signed int BASEB  = 0x3;
449       const signed int BASESP = 0x4;
450       const signed int BASEBP = 0x5;
451       const signed int BASESI = 0x6;
452       const signed int BASEDI = 0x7;
453       const signed int BASE8  = 0x8;
454       const signed int BASE9  = 0x9;
455       const signed int BASE10 = 0xa;
456       const signed int BASE11 = 0xb;
457       const signed int BASE12 = 0xc;
458       const signed int BASE13 = 0xd;
459       const signed int BASE14 = 0xe;
460       const signed int BASE15 = 0xf;
461
462       const signed int CF = x86::CF;
463       const signed int PF = x86::PF;
464       const signed int AF = x86::AF;
465       const signed int ZF = x86::ZF;
466       const signed int SF = x86::SF;
467       const signed int TF = x86::TF;
468       const signed int IF = x86::IF;
469       const signed int DF = x86::DF;
470       const signed int OF = x86::OF;
471       const signed int NT = x86::NT;
472       const signed int RF = x86::RF;
473
474       DEF_REGISTER(rax,    BASEA  | FULL  | GPR  | Arch_x86_64, "x86_64");
475       DEF_REGISTER(rcx,    BASEC  | FULL  | GPR  | Arch_x86_64, "x86_64");
476       DEF_REGISTER(rdx,    BASED  | FULL  | GPR  | Arch_x86_64, "x86_64");
477       DEF_REGISTER(rbx,    BASEB  | FULL  | GPR  | Arch_x86_64, "x86_64");
478       DEF_REGISTER(rsp,    BASESP | FULL  | GPR  | Arch_x86_64, "x86_64");
479       DEF_REGISTER(rbp,    BASEBP | FULL  | GPR  | Arch_x86_64, "x86_64");
480       DEF_REGISTER(rsi,    BASESI | FULL  | GPR  | Arch_x86_64, "x86_64");
481       DEF_REGISTER(rdi,    BASEDI | FULL  | GPR  | Arch_x86_64, "x86_64");
482       DEF_REGISTER(r8,     BASE8  | FULL  | GPR  | Arch_x86_64, "x86_64");
483       DEF_REGISTER(r9,     BASE9  | FULL  | GPR  | Arch_x86_64, "x86_64");
484       DEF_REGISTER(r10,    BASE10 | FULL  | GPR  | Arch_x86_64, "x86_64");
485       DEF_REGISTER(r11,    BASE11 | FULL  | GPR  | Arch_x86_64, "x86_64");
486       DEF_REGISTER(r12,    BASE12 | FULL  | GPR  | Arch_x86_64, "x86_64");
487       DEF_REGISTER(r13,    BASE13 | FULL  | GPR  | Arch_x86_64, "x86_64");
488       DEF_REGISTER(r14,    BASE14 | FULL  | GPR  | Arch_x86_64, "x86_64");
489       DEF_REGISTER(r15,    BASE15 | FULL  | GPR  | Arch_x86_64, "x86_64");
490       DEF_REGISTER(ah,     BASEA  | H_REG | GPR  | Arch_x86_64, "x86_64");
491       DEF_REGISTER(al,     BASEA  | L_REG | GPR  | Arch_x86_64, "x86_64");
492       DEF_REGISTER(ax,     BASEA  | W_REG | GPR  | Arch_x86_64, "x86_64");
493       DEF_REGISTER(eax,    BASEA  | D_REG | GPR  | Arch_x86_64, "x86_64");
494       DEF_REGISTER(ch,     BASEC  | H_REG | GPR  | Arch_x86_64, "x86_64");
495       DEF_REGISTER(cl,     BASEC  | L_REG | GPR  | Arch_x86_64, "x86_64");
496       DEF_REGISTER(cx,     BASEC  | W_REG | GPR  | Arch_x86_64, "x86_64");
497       DEF_REGISTER(ecx,    BASEC  | D_REG | GPR  | Arch_x86_64, "x86_64");
498       DEF_REGISTER(dh,     BASED  | H_REG | GPR  | Arch_x86_64, "x86_64");
499       DEF_REGISTER(dl,     BASED  | L_REG | GPR  | Arch_x86_64, "x86_64");
500       DEF_REGISTER(dx,     BASED  | W_REG | GPR  | Arch_x86_64, "x86_64");
501       DEF_REGISTER(edx,    BASED  | D_REG | GPR  | Arch_x86_64, "x86_64");
502       DEF_REGISTER(bh,     BASEB  | H_REG | GPR  | Arch_x86_64, "x86_64");
503       DEF_REGISTER(bl,     BASEB  | L_REG | GPR  | Arch_x86_64, "x86_64");
504       DEF_REGISTER(bx,     BASEB  | W_REG | GPR  | Arch_x86_64, "x86_64");
505       DEF_REGISTER(ebx,    BASEB  | D_REG | GPR  | Arch_x86_64, "x86_64");
506       DEF_REGISTER(spl,    BASESP | L_REG | GPR  | Arch_x86_64, "x86_64");
507       DEF_REGISTER(sp,     BASESP | W_REG | GPR  | Arch_x86_64, "x86_64");
508       DEF_REGISTER(esp,    BASESP | D_REG | GPR  | Arch_x86_64, "x86_64");
509       DEF_REGISTER(bpl,    BASEBP | L_REG | GPR  | Arch_x86_64, "x86_64");
510       DEF_REGISTER(bp,     BASEBP | W_REG | GPR  | Arch_x86_64, "x86_64");
511       DEF_REGISTER(ebp,    BASEBP | D_REG | GPR  | Arch_x86_64, "x86_64");
512       DEF_REGISTER(dil,    BASEDI | L_REG | GPR  | Arch_x86_64, "x86_64");
513       DEF_REGISTER(di,     BASEDI | W_REG | GPR  | Arch_x86_64, "x86_64");
514       DEF_REGISTER(edi,    BASEDI | D_REG | GPR  | Arch_x86_64, "x86_64");
515       DEF_REGISTER(sil,    BASESI | L_REG | GPR  | Arch_x86_64, "x86_64");
516       DEF_REGISTER(si,     BASESI | W_REG | GPR  | Arch_x86_64, "x86_64");
517       DEF_REGISTER(esi,    BASESI | D_REG | GPR  | Arch_x86_64, "x86_64");
518       DEF_REGISTER(r8b,    BASE8  | L_REG | GPR  | Arch_x86_64, "x86_64");
519       DEF_REGISTER(r8w,    BASE8  | W_REG | GPR  | Arch_x86_64, "x86_64");
520       DEF_REGISTER(r8d,    BASE8  | D_REG | GPR  | Arch_x86_64, "x86_64");
521       DEF_REGISTER(r9b,    BASE9  | L_REG | GPR  | Arch_x86_64, "x86_64");
522       DEF_REGISTER(r9w,    BASE9  | W_REG | GPR  | Arch_x86_64, "x86_64");
523       DEF_REGISTER(r9d,    BASE9  | D_REG | GPR  | Arch_x86_64, "x86_64");
524       DEF_REGISTER(r10b,   BASE10 | L_REG | GPR  | Arch_x86_64, "x86_64");
525       DEF_REGISTER(r10w,   BASE10 | W_REG | GPR  | Arch_x86_64, "x86_64");
526       DEF_REGISTER(r10d,   BASE10 | D_REG | GPR  | Arch_x86_64, "x86_64");
527       DEF_REGISTER(r11b,   BASE11 | L_REG | GPR  | Arch_x86_64, "x86_64");
528       DEF_REGISTER(r11w,   BASE11 | W_REG | GPR  | Arch_x86_64, "x86_64");
529       DEF_REGISTER(r11d,   BASE11 | D_REG | GPR  | Arch_x86_64, "x86_64");
530       DEF_REGISTER(r12b,   BASE12 | L_REG | GPR  | Arch_x86_64, "x86_64");
531       DEF_REGISTER(r12w,   BASE12 | W_REG | GPR  | Arch_x86_64, "x86_64");
532       DEF_REGISTER(r12d,   BASE12 | D_REG | GPR  | Arch_x86_64, "x86_64");
533       DEF_REGISTER(r13b,   BASE13 | L_REG | GPR  | Arch_x86_64, "x86_64");
534       DEF_REGISTER(r13w,   BASE13 | W_REG | GPR  | Arch_x86_64, "x86_64");
535       DEF_REGISTER(r13d,   BASE13 | D_REG | GPR  | Arch_x86_64, "x86_64");
536       DEF_REGISTER(r14b,   BASE14 | L_REG | GPR  | Arch_x86_64, "x86_64");
537       DEF_REGISTER(r14w,   BASE14 | W_REG | GPR  | Arch_x86_64, "x86_64");
538       DEF_REGISTER(r14d,   BASE14 | D_REG | GPR  | Arch_x86_64, "x86_64");
539       DEF_REGISTER(r15b,   BASE15 | L_REG | GPR  | Arch_x86_64, "x86_64");
540       DEF_REGISTER(r15w,   BASE15 | W_REG | GPR  | Arch_x86_64, "x86_64");
541       DEF_REGISTER(r15d,   BASE15 | D_REG | GPR  | Arch_x86_64, "x86_64");
542       DEF_REGISTER(rip,    0x10   | FULL         | Arch_x86_64, "x86_64");
543       DEF_REGISTER(eip,    0x10   | D_REG        | Arch_x86_64, "x86_64");
544       DEF_REGISTER(flags,  FLAGS  | FULL  | FLAG | Arch_x86_64, "x86_64");
545       DEF_REGISTER(cf,     CF     | BIT   | FLAG | Arch_x86_64, "x86_64");
546       DEF_REGISTER(pf,     PF     | BIT   | FLAG | Arch_x86_64, "x86_64");
547       DEF_REGISTER(af,     AF     | BIT   | FLAG | Arch_x86_64, "x86_64");
548       DEF_REGISTER(zf,     ZF     | BIT   | FLAG | Arch_x86_64, "x86_64");
549       DEF_REGISTER(sf,     SF     | BIT   | FLAG | Arch_x86_64, "x86_64");
550       DEF_REGISTER(tf,     TF     | BIT   | FLAG | Arch_x86_64, "x86_64");
551       DEF_REGISTER(if_,    IF     | BIT   | FLAG | Arch_x86_64, "x86_64");
552       DEF_REGISTER(df,     DF     | BIT   | FLAG | Arch_x86_64, "x86_64");
553       DEF_REGISTER(of,     OF     | BIT   | FLAG | Arch_x86_64, "x86_64");
554       DEF_REGISTER(nt_,    NT     | BIT   | FLAG | Arch_x86_64, "x86_64");
555       DEF_REGISTER(rf,     RF     | BIT   | FLAG | Arch_x86_64, "x86_64");
556       DEF_REGISTER(ds,     0x0    | FULL  | SEG  | Arch_x86_64, "x86_64");
557       DEF_REGISTER(es,     0x1    | FULL  | SEG  | Arch_x86_64, "x86_64");
558       DEF_REGISTER(fs,     0x2    | FULL  | SEG  | Arch_x86_64, "x86_64");
559       DEF_REGISTER(gs,     0x3    | FULL  | SEG  | Arch_x86_64, "x86_64");
560       DEF_REGISTER(cs,     0x4    | FULL  | SEG  | Arch_x86_64, "x86_64");
561       DEF_REGISTER(ss,     0x5    | FULL  | SEG  | Arch_x86_64, "x86_64");
562       DEF_REGISTER(orax,   0x0    | FULL  | MISC | Arch_x86_64, "x86_64");
563       DEF_REGISTER(fsbase, 0x1    | FULL  | MISC | Arch_x86_64, "x86_64");
564       DEF_REGISTER(gsbase, 0x2    | FULL  | MISC | Arch_x86_64, "x86_64");
565       DEF_REGISTER(k0,    0x00    | OCT   | KMASK| Arch_x86_64, "x86_64");
566       DEF_REGISTER(k1,    0x01    | OCT   | KMASK| Arch_x86_64, "x86_64");
567       DEF_REGISTER(k2,    0x02    | OCT   | KMASK| Arch_x86_64, "x86_64");
568       DEF_REGISTER(k3,    0x03    | OCT   | KMASK| Arch_x86_64, "x86_64");
569       DEF_REGISTER(k4,    0x04    | OCT   | KMASK| Arch_x86_64, "x86_64");
570       DEF_REGISTER(k5,    0x05    | OCT   | KMASK| Arch_x86_64, "x86_64");
571       DEF_REGISTER(k6,    0x06    | OCT   | KMASK| Arch_x86_64, "x86_64");
572       DEF_REGISTER(k7,    0x07    | OCT   | KMASK| Arch_x86_64, "x86_64");
573       DEF_REGISTER(xmm0,  0x00    | OCT   | XMM  | Arch_x86_64, "x86_64");
574       DEF_REGISTER(xmm1,  0x01    | OCT   | XMM  | Arch_x86_64, "x86_64");
575       DEF_REGISTER(xmm2,  0x02    | OCT   | XMM  | Arch_x86_64, "x86_64");
576       DEF_REGISTER(xmm3,  0x03    | OCT   | XMM  | Arch_x86_64, "x86_64");
577       DEF_REGISTER(xmm4,  0x04    | OCT   | XMM  | Arch_x86_64, "x86_64");
578       DEF_REGISTER(xmm5,  0x05    | OCT   | XMM  | Arch_x86_64, "x86_64");
579       DEF_REGISTER(xmm6,  0x06    | OCT   | XMM  | Arch_x86_64, "x86_64");
580       DEF_REGISTER(xmm7,  0x07    | OCT   | XMM  | Arch_x86_64, "x86_64");
581       DEF_REGISTER(xmm8,  0x08    | OCT   | XMM  | Arch_x86_64, "x86_64");
582       DEF_REGISTER(xmm9,  0x09    | OCT   | XMM  | Arch_x86_64, "x86_64");
583       DEF_REGISTER(xmm10, 0x0A    | OCT   | XMM  | Arch_x86_64, "x86_64");
584       DEF_REGISTER(xmm11, 0x0B    | OCT   | XMM  | Arch_x86_64, "x86_64");
585       DEF_REGISTER(xmm12, 0x0C    | OCT   | XMM  | Arch_x86_64, "x86_64");
586       DEF_REGISTER(xmm13, 0x0D    | OCT   | XMM  | Arch_x86_64, "x86_64");
587       DEF_REGISTER(xmm14, 0x0E    | OCT   | XMM  | Arch_x86_64, "x86_64");
588       DEF_REGISTER(xmm15, 0x0F    | OCT   | XMM  | Arch_x86_64, "x86_64");
589       DEF_REGISTER(xmm16, 0x10    | OCT   | XMM  | Arch_x86_64, "x86_64");
590       DEF_REGISTER(xmm17, 0x11    | OCT   | XMM  | Arch_x86_64, "x86_64");
591       DEF_REGISTER(xmm18, 0x12    | OCT   | XMM  | Arch_x86_64, "x86_64");
592       DEF_REGISTER(xmm19, 0x13    | OCT   | XMM  | Arch_x86_64, "x86_64");
593       DEF_REGISTER(xmm20, 0x14    | OCT   | XMM  | Arch_x86_64, "x86_64");
594       DEF_REGISTER(xmm21, 0x15    | OCT   | XMM  | Arch_x86_64, "x86_64");
595       DEF_REGISTER(xmm22, 0x16    | OCT   | XMM  | Arch_x86_64, "x86_64");
596       DEF_REGISTER(xmm23, 0x17    | OCT   | XMM  | Arch_x86_64, "x86_64");
597       DEF_REGISTER(xmm24, 0x18    | OCT   | XMM  | Arch_x86_64, "x86_64");
598       DEF_REGISTER(xmm25, 0x19    | OCT   | XMM  | Arch_x86_64, "x86_64");
599       DEF_REGISTER(xmm26, 0x1A    | OCT   | XMM  | Arch_x86_64, "x86_64");
600       DEF_REGISTER(xmm27, 0x1B    | OCT   | XMM  | Arch_x86_64, "x86_64");
601       DEF_REGISTER(xmm28, 0x1C    | OCT   | XMM  | Arch_x86_64, "x86_64");
602       DEF_REGISTER(xmm29, 0x1D    | OCT   | XMM  | Arch_x86_64, "x86_64");
603       DEF_REGISTER(xmm30, 0x1E    | OCT   | XMM  | Arch_x86_64, "x86_64");
604       DEF_REGISTER(xmm31, 0x1F    | OCT   | XMM  | Arch_x86_64, "x86_64");
605       DEF_REGISTER(ymm0,  0x00    | OCT   | YMM  | Arch_x86_64, "x86_64");
606       DEF_REGISTER(ymm1,  0x01    | OCT   | YMM  | Arch_x86_64, "x86_64");
607       DEF_REGISTER(ymm2,  0x02    | OCT   | YMM  | Arch_x86_64, "x86_64");
608       DEF_REGISTER(ymm3,  0x03    | OCT   | YMM  | Arch_x86_64, "x86_64");
609       DEF_REGISTER(ymm4,  0x04    | OCT   | YMM  | Arch_x86_64, "x86_64");
610       DEF_REGISTER(ymm5,  0x05    | OCT   | YMM  | Arch_x86_64, "x86_64");
611       DEF_REGISTER(ymm6,  0x06    | OCT   | YMM  | Arch_x86_64, "x86_64");
612       DEF_REGISTER(ymm7,  0x07    | OCT   | YMM  | Arch_x86_64, "x86_64");
613       DEF_REGISTER(ymm8,  0x08    | OCT   | YMM  | Arch_x86_64, "x86_64");
614       DEF_REGISTER(ymm9,  0x09    | OCT   | YMM  | Arch_x86_64, "x86_64");
615       DEF_REGISTER(ymm10, 0x0A    | OCT   | YMM  | Arch_x86_64, "x86_64");
616       DEF_REGISTER(ymm11, 0x0B    | OCT   | YMM  | Arch_x86_64, "x86_64");
617       DEF_REGISTER(ymm12, 0x0C    | OCT   | YMM  | Arch_x86_64, "x86_64");
618       DEF_REGISTER(ymm13, 0x0D    | OCT   | YMM  | Arch_x86_64, "x86_64");
619       DEF_REGISTER(ymm14, 0x0E    | OCT   | YMM  | Arch_x86_64, "x86_64");
620       DEF_REGISTER(ymm15, 0x0F    | OCT   | YMM  | Arch_x86_64, "x86_64");
621       DEF_REGISTER(ymm16, 0x10    | OCT   | YMM  | Arch_x86_64, "x86_64");
622       DEF_REGISTER(ymm17, 0x11    | OCT   | YMM  | Arch_x86_64, "x86_64");
623       DEF_REGISTER(ymm18, 0x12    | OCT   | YMM  | Arch_x86_64, "x86_64");
624       DEF_REGISTER(ymm19, 0x13    | OCT   | YMM  | Arch_x86_64, "x86_64");
625       DEF_REGISTER(ymm20, 0x14    | OCT   | YMM  | Arch_x86_64, "x86_64");
626       DEF_REGISTER(ymm21, 0x15    | OCT   | YMM  | Arch_x86_64, "x86_64");
627       DEF_REGISTER(ymm22, 0x16    | OCT   | YMM  | Arch_x86_64, "x86_64");
628       DEF_REGISTER(ymm23, 0x17    | OCT   | YMM  | Arch_x86_64, "x86_64");
629       DEF_REGISTER(ymm24, 0x18    | OCT   | YMM  | Arch_x86_64, "x86_64");
630       DEF_REGISTER(ymm25, 0x19    | OCT   | YMM  | Arch_x86_64, "x86_64");
631       DEF_REGISTER(ymm26, 0x1A    | OCT   | YMM  | Arch_x86_64, "x86_64");
632       DEF_REGISTER(ymm27, 0x1B    | OCT   | YMM  | Arch_x86_64, "x86_64");
633       DEF_REGISTER(ymm28, 0x1C    | OCT   | YMM  | Arch_x86_64, "x86_64");
634       DEF_REGISTER(ymm29, 0x1D    | OCT   | YMM  | Arch_x86_64, "x86_64");
635       DEF_REGISTER(ymm30, 0x1E    | OCT   | YMM  | Arch_x86_64, "x86_64");
636       DEF_REGISTER(ymm31, 0x1F    | OCT   | YMM  | Arch_x86_64, "x86_64");
637       DEF_REGISTER(zmm0,  0x00    | OCT   | ZMM  | Arch_x86_64, "x86_64");
638       DEF_REGISTER(zmm1,  0x01    | OCT   | ZMM  | Arch_x86_64, "x86_64");
639       DEF_REGISTER(zmm2,  0x02    | OCT   | ZMM  | Arch_x86_64, "x86_64");
640       DEF_REGISTER(zmm3,  0x03    | OCT   | ZMM  | Arch_x86_64, "x86_64");
641       DEF_REGISTER(zmm4,  0x04    | OCT   | ZMM  | Arch_x86_64, "x86_64");
642       DEF_REGISTER(zmm5,  0x05    | OCT   | ZMM  | Arch_x86_64, "x86_64");
643       DEF_REGISTER(zmm6,  0x06    | OCT   | ZMM  | Arch_x86_64, "x86_64");
644       DEF_REGISTER(zmm7,  0x07    | OCT   | ZMM  | Arch_x86_64, "x86_64");
645       DEF_REGISTER(zmm8,  0x08    | OCT   | ZMM  | Arch_x86_64, "x86_64");
646       DEF_REGISTER(zmm9,  0x09    | OCT   | ZMM  | Arch_x86_64, "x86_64");
647       DEF_REGISTER(zmm10, 0x0A    | OCT   | ZMM  | Arch_x86_64, "x86_64");
648       DEF_REGISTER(zmm11, 0x0B    | OCT   | ZMM  | Arch_x86_64, "x86_64");
649       DEF_REGISTER(zmm12, 0x0C    | OCT   | ZMM  | Arch_x86_64, "x86_64");
650       DEF_REGISTER(zmm13, 0x0D    | OCT   | ZMM  | Arch_x86_64, "x86_64");
651       DEF_REGISTER(zmm14, 0x0E    | OCT   | ZMM  | Arch_x86_64, "x86_64");
652       DEF_REGISTER(zmm15, 0x0F    | OCT   | ZMM  | Arch_x86_64, "x86_64");
653       DEF_REGISTER(zmm16, 0x10    | OCT   | ZMM  | Arch_x86_64, "x86_64");
654       DEF_REGISTER(zmm17, 0x11    | OCT   | ZMM  | Arch_x86_64, "x86_64");
655       DEF_REGISTER(zmm18, 0x12    | OCT   | ZMM  | Arch_x86_64, "x86_64");
656       DEF_REGISTER(zmm19, 0x13    | OCT   | ZMM  | Arch_x86_64, "x86_64");
657       DEF_REGISTER(zmm20, 0x14    | OCT   | ZMM  | Arch_x86_64, "x86_64");
658       DEF_REGISTER(zmm21, 0x15    | OCT   | ZMM  | Arch_x86_64, "x86_64");
659       DEF_REGISTER(zmm22, 0x16    | OCT   | ZMM  | Arch_x86_64, "x86_64");
660       DEF_REGISTER(zmm23, 0x17    | OCT   | ZMM  | Arch_x86_64, "x86_64");
661       DEF_REGISTER(zmm24, 0x18    | OCT   | ZMM  | Arch_x86_64, "x86_64");
662       DEF_REGISTER(zmm25, 0x19    | OCT   | ZMM  | Arch_x86_64, "x86_64");
663       DEF_REGISTER(zmm26, 0x1A    | OCT   | ZMM  | Arch_x86_64, "x86_64");
664       DEF_REGISTER(zmm27, 0x1B    | OCT   | ZMM  | Arch_x86_64, "x86_64");
665       DEF_REGISTER(zmm28, 0x1C    | OCT   | ZMM  | Arch_x86_64, "x86_64");
666       DEF_REGISTER(zmm29, 0x1D    | OCT   | ZMM  | Arch_x86_64, "x86_64");
667       DEF_REGISTER(zmm30, 0x1E    | OCT   | ZMM  | Arch_x86_64, "x86_64");
668       DEF_REGISTER(zmm31, 0x1F    | OCT   | ZMM  | Arch_x86_64, "x86_64");
669       DEF_REGISTER(mm0,   0x0     | FPDBL | MMX  | Arch_x86_64, "x86_64");
670       DEF_REGISTER(mm1,   0x1     | FPDBL | MMX  | Arch_x86_64, "x86_64");
671       DEF_REGISTER(mm2,   0x2     | FPDBL | MMX  | Arch_x86_64, "x86_64");
672       DEF_REGISTER(mm3,   0x3     | FPDBL | MMX  | Arch_x86_64, "x86_64");
673       DEF_REGISTER(mm4,   0x4     | FPDBL | MMX  | Arch_x86_64, "x86_64");
674       DEF_REGISTER(mm5,   0x5     | FPDBL | MMX  | Arch_x86_64, "x86_64");
675       DEF_REGISTER(mm6,   0x6     | FPDBL | MMX  | Arch_x86_64, "x86_64");
676       DEF_REGISTER(mm7,   0x7     | FPDBL | MMX  | Arch_x86_64, "x86_64");
677       DEF_REGISTER(cr0,   0x0     | FULL  | CTL  | Arch_x86_64, "x86_64");
678       DEF_REGISTER(cr1,   0x1     | FULL  | CTL  | Arch_x86_64, "x86_64");
679       DEF_REGISTER(cr2,   0x2     | FULL  | CTL  | Arch_x86_64, "x86_64");
680       DEF_REGISTER(cr3,   0x3     | FULL  | CTL  | Arch_x86_64, "x86_64");
681       DEF_REGISTER(cr4,   0x4     | FULL  | CTL  | Arch_x86_64, "x86_64");
682       DEF_REGISTER(cr5,   0x5     | FULL  | CTL  | Arch_x86_64, "x86_64");
683       DEF_REGISTER(cr6,   0x6     | FULL  | CTL  | Arch_x86_64, "x86_64");
684       DEF_REGISTER(cr7,   0x7     | FULL  | CTL  | Arch_x86_64, "x86_64");
685       DEF_REGISTER(dr0,   0x0     | FULL  | DBG  | Arch_x86_64, "x86_64");
686       DEF_REGISTER(dr1,   0x1     | FULL  | DBG  | Arch_x86_64, "x86_64");
687       DEF_REGISTER(dr2,   0x2     | FULL  | DBG  | Arch_x86_64, "x86_64");
688       DEF_REGISTER(dr3,   0x3     | FULL  | DBG  | Arch_x86_64, "x86_64");
689       DEF_REGISTER(dr4,   0x4     | FULL  | DBG  | Arch_x86_64, "x86_64");
690       DEF_REGISTER(dr5,   0x5     | FULL  | DBG  | Arch_x86_64, "x86_64");
691       DEF_REGISTER(dr6,   0x6     | FULL  | DBG  | Arch_x86_64, "x86_64");
692       DEF_REGISTER(dr7,   0x7     | FULL  | DBG  | Arch_x86_64, "x86_64");
693       DEF_REGISTER(tr0,   0x0     | FULL  | TST  | Arch_x86_64, "x86_64");
694       DEF_REGISTER(tr1,   0x1     | FULL  | TST  | Arch_x86_64, "x86_64");
695       DEF_REGISTER(tr2,   0x2     | FULL  | TST  | Arch_x86_64, "x86_64");
696       DEF_REGISTER(tr3,   0x3     | FULL  | TST  | Arch_x86_64, "x86_64");
697       DEF_REGISTER(tr4,   0x4     | FULL  | TST  | Arch_x86_64, "x86_64");
698       DEF_REGISTER(tr5,   0x5     | FULL  | TST  | Arch_x86_64, "x86_64");
699       DEF_REGISTER(tr6,   0x6     | FULL  | TST  | Arch_x86_64, "x86_64");
700       DEF_REGISTER(tr7,   0x7     | FULL  | TST  | Arch_x86_64, "x86_64");
701       DEF_REGISTER(st0,   0x0     | FPDBL | MMX  | Arch_x86_64, "x86_64");
702       DEF_REGISTER(st1,   0x1     | FPDBL | MMX  | Arch_x86_64, "x86_64");
703       DEF_REGISTER(st2,   0x2     | FPDBL | MMX  | Arch_x86_64, "x86_64");
704       DEF_REGISTER(st3,   0x3     | FPDBL | MMX  | Arch_x86_64, "x86_64");
705       DEF_REGISTER(st4,   0x4     | FPDBL | MMX  | Arch_x86_64, "x86_64");
706       DEF_REGISTER(st5,   0x5     | FPDBL | MMX  | Arch_x86_64, "x86_64");
707       DEF_REGISTER(st6,   0x6     | FPDBL | MMX  | Arch_x86_64, "x86_64");
708       DEF_REGISTER(st7,   0x7     | FPDBL | MMX  | Arch_x86_64, "x86_64");
709    }
710    namespace ppc32 {
711       const signed int GPR   = 0x00010000;
712       const signed int FPR   = 0x00020000;
713       const signed int FSR   = 0x00040000;
714       const signed int SPR   = 0x00080000;
715
716       DEF_REGISTER(r0,       0 | GPR | Arch_ppc32, "ppc32");
717       DEF_REGISTER(r1,       1 | GPR | Arch_ppc32, "ppc32");
718       DEF_REGISTER(r2,       2 | GPR | Arch_ppc32, "ppc32");
719       DEF_REGISTER(r3,       3 | GPR | Arch_ppc32, "ppc32");
720       DEF_REGISTER(r4,       4 | GPR | Arch_ppc32, "ppc32");
721       DEF_REGISTER(r5,       5 | GPR | Arch_ppc32, "ppc32");
722       DEF_REGISTER(r6,       6 | GPR | Arch_ppc32, "ppc32");
723       DEF_REGISTER(r7,       7 | GPR | Arch_ppc32, "ppc32");
724       DEF_REGISTER(r8,       8 | GPR | Arch_ppc32, "ppc32");
725       DEF_REGISTER(r9,       9 | GPR | Arch_ppc32, "ppc32");
726       DEF_REGISTER(r10,     10 | GPR | Arch_ppc32, "ppc32");
727       DEF_REGISTER(r11,     11 | GPR | Arch_ppc32, "ppc32");
728       DEF_REGISTER(r12,     12 | GPR | Arch_ppc32, "ppc32");
729       DEF_REGISTER(r13,     13 | GPR | Arch_ppc32, "ppc32");
730       DEF_REGISTER(r14,     14 | GPR | Arch_ppc32, "ppc32");
731       DEF_REGISTER(r15,     15 | GPR | Arch_ppc32, "ppc32");
732       DEF_REGISTER(r16,     16 | GPR | Arch_ppc32, "ppc32");
733       DEF_REGISTER(r17,     17 | GPR | Arch_ppc32, "ppc32");
734       DEF_REGISTER(r18,     18 | GPR | Arch_ppc32, "ppc32");
735       DEF_REGISTER(r19,     19 | GPR | Arch_ppc32, "ppc32");
736       DEF_REGISTER(r20,     20 | GPR | Arch_ppc32, "ppc32");
737       DEF_REGISTER(r21,     21 | GPR | Arch_ppc32, "ppc32");
738       DEF_REGISTER(r22,     22 | GPR | Arch_ppc32, "ppc32");
739       DEF_REGISTER(r23,     23 | GPR | Arch_ppc32, "ppc32");
740       DEF_REGISTER(r24,     24 | GPR | Arch_ppc32, "ppc32");
741       DEF_REGISTER(r25,     25 | GPR | Arch_ppc32, "ppc32");
742       DEF_REGISTER(r26,     26 | GPR | Arch_ppc32, "ppc32");
743       DEF_REGISTER(r27,     27 | GPR | Arch_ppc32, "ppc32");
744       DEF_REGISTER(r28,     28 | GPR | Arch_ppc32, "ppc32");
745       DEF_REGISTER(r29,     29 | GPR | Arch_ppc32, "ppc32");
746       DEF_REGISTER(r30,     30 | GPR | Arch_ppc32, "ppc32");
747       DEF_REGISTER(r31,     31 | GPR | Arch_ppc32, "ppc32");
748       DEF_REGISTER(fpr0,     0 | FPR | Arch_ppc32, "ppc32");
749       DEF_REGISTER(fpr1,     1 | FPR | Arch_ppc32, "ppc32");
750       DEF_REGISTER(fpr2,     2 | FPR | Arch_ppc32, "ppc32");
751       DEF_REGISTER(fpr3,     3 | FPR | Arch_ppc32, "ppc32");
752       DEF_REGISTER(fpr4,     4 | FPR | Arch_ppc32, "ppc32");
753       DEF_REGISTER(fpr5,     5 | FPR | Arch_ppc32, "ppc32");
754       DEF_REGISTER(fpr6,     6 | FPR | Arch_ppc32, "ppc32");
755       DEF_REGISTER(fpr7,     7 | FPR | Arch_ppc32, "ppc32");
756       DEF_REGISTER(fpr8,     8 | FPR | Arch_ppc32, "ppc32");
757       DEF_REGISTER(fpr9,     9 | FPR | Arch_ppc32, "ppc32");
758       DEF_REGISTER(fpr10,   10 | FPR | Arch_ppc32, "ppc32");
759       DEF_REGISTER(fpr11,   11 | FPR | Arch_ppc32, "ppc32");
760       DEF_REGISTER(fpr12,   12 | FPR | Arch_ppc32, "ppc32");
761       DEF_REGISTER(fpr13,   13 | FPR | Arch_ppc32, "ppc32");
762       DEF_REGISTER(fpr14,   14 | FPR | Arch_ppc32, "ppc32");
763       DEF_REGISTER(fpr15,   15 | FPR | Arch_ppc32, "ppc32");
764       DEF_REGISTER(fpr16,   16 | FPR | Arch_ppc32, "ppc32");
765       DEF_REGISTER(fpr17,   17 | FPR | Arch_ppc32, "ppc32");
766       DEF_REGISTER(fpr18,   18 | FPR | Arch_ppc32, "ppc32");
767       DEF_REGISTER(fpr19,   19 | FPR | Arch_ppc32, "ppc32");
768       DEF_REGISTER(fpr20,   20 | FPR | Arch_ppc32, "ppc32");
769       DEF_REGISTER(fpr21,   21 | FPR | Arch_ppc32, "ppc32");
770       DEF_REGISTER(fpr22,   22 | FPR | Arch_ppc32, "ppc32");
771       DEF_REGISTER(fpr23,   23 | FPR | Arch_ppc32, "ppc32");
772       DEF_REGISTER(fpr24,   24 | FPR | Arch_ppc32, "ppc32");
773       DEF_REGISTER(fpr25,   25 | FPR | Arch_ppc32, "ppc32");
774       DEF_REGISTER(fpr26,   26 | FPR | Arch_ppc32, "ppc32");
775       DEF_REGISTER(fpr27,   27 | FPR | Arch_ppc32, "ppc32");
776       DEF_REGISTER(fpr28,   28 | FPR | Arch_ppc32, "ppc32");
777       DEF_REGISTER(fpr29,   29 | FPR | Arch_ppc32, "ppc32");
778       DEF_REGISTER(fpr30,   30 | FPR | Arch_ppc32, "ppc32");
779       DEF_REGISTER(fpr31,   31 | FPR | Arch_ppc32, "ppc32");
780       DEF_REGISTER(fsr0,     0 | FSR | Arch_ppc32, "ppc32");
781       DEF_REGISTER(fsr1,     1 | FSR | Arch_ppc32, "ppc32");
782       DEF_REGISTER(fsr2,     2 | FSR | Arch_ppc32, "ppc32");
783       DEF_REGISTER(fsr3,     3 | FSR | Arch_ppc32, "ppc32");
784       DEF_REGISTER(fsr4,     4 | FSR | Arch_ppc32, "ppc32");
785       DEF_REGISTER(fsr5,     5 | FSR | Arch_ppc32, "ppc32");
786       DEF_REGISTER(fsr6,     6 | FSR | Arch_ppc32, "ppc32");
787       DEF_REGISTER(fsr7,     7 | FSR | Arch_ppc32, "ppc32");
788       DEF_REGISTER(fsr8,     8 | FSR | Arch_ppc32, "ppc32");
789       DEF_REGISTER(fsr9,     9 | FSR | Arch_ppc32, "ppc32");
790       DEF_REGISTER(fsr10,   10 | FSR | Arch_ppc32, "ppc32");
791       DEF_REGISTER(fsr11,   11 | FSR | Arch_ppc32, "ppc32");
792       DEF_REGISTER(fsr12,   12 | FSR | Arch_ppc32, "ppc32");
793       DEF_REGISTER(fsr13,   13 | FSR | Arch_ppc32, "ppc32");
794       DEF_REGISTER(fsr14,   14 | FSR | Arch_ppc32, "ppc32");
795       DEF_REGISTER(fsr15,   15 | FSR | Arch_ppc32, "ppc32");
796       DEF_REGISTER(fsr16,   16 | FSR | Arch_ppc32, "ppc32");
797       DEF_REGISTER(fsr17,   17 | FSR | Arch_ppc32, "ppc32");
798       DEF_REGISTER(fsr18,   18 | FSR | Arch_ppc32, "ppc32");
799       DEF_REGISTER(fsr19,   19 | FSR | Arch_ppc32, "ppc32");
800       DEF_REGISTER(fsr20,   20 | FSR | Arch_ppc32, "ppc32");
801       DEF_REGISTER(fsr21,   21 | FSR | Arch_ppc32, "ppc32");
802       DEF_REGISTER(fsr22,   22 | FSR | Arch_ppc32, "ppc32");
803       DEF_REGISTER(fsr23,   23 | FSR | Arch_ppc32, "ppc32");
804       DEF_REGISTER(fsr24,   24 | FSR | Arch_ppc32, "ppc32");
805       DEF_REGISTER(fsr25,   25 | FSR | Arch_ppc32, "ppc32");
806       DEF_REGISTER(fsr26,   26 | FSR | Arch_ppc32, "ppc32");
807       DEF_REGISTER(fsr27,   27 | FSR | Arch_ppc32, "ppc32");
808       DEF_REGISTER(fsr28,   28 | FSR | Arch_ppc32, "ppc32");
809       DEF_REGISTER(fsr29,   29 | FSR | Arch_ppc32, "ppc32");
810       DEF_REGISTER(fsr30,   30 | FSR | Arch_ppc32, "ppc32");
811       DEF_REGISTER(fsr31,   31 | FSR | Arch_ppc32, "ppc32");
812       DEF_REGISTER(mq,       0 | SPR | Arch_ppc32, "ppc32");
813       DEF_REGISTER(xer,      1 | SPR | Arch_ppc32, "ppc32");
814       DEF_REGISTER(lr,       8 | SPR | Arch_ppc32, "ppc32");
815       DEF_REGISTER(ctr,      9 | SPR | Arch_ppc32, "ppc32");
816       DEF_REGISTER(dsisr,   18 | SPR | Arch_ppc32, "ppc32");
817       DEF_REGISTER(dar,     19 | SPR | Arch_ppc32, "ppc32");
818       DEF_REGISTER(dec,     22 | SPR | Arch_ppc32, "ppc32");
819       DEF_REGISTER(sdr1,    25 | SPR | Arch_ppc32, "ppc32");
820       DEF_REGISTER(srr0,    26 | SPR | Arch_ppc32, "ppc32");
821       DEF_REGISTER(srr1,    27 | SPR | Arch_ppc32, "ppc32");
822       DEF_REGISTER(sprg0,  272 | SPR | Arch_ppc32, "ppc32");
823       DEF_REGISTER(sprg1,  273 | SPR | Arch_ppc32, "ppc32");
824       DEF_REGISTER(sprg2,  274 | SPR | Arch_ppc32, "ppc32");
825       DEF_REGISTER(sprg3,  275 | SPR | Arch_ppc32, "ppc32");
826       DEF_REGISTER(sprg4,  276 | SPR | Arch_ppc32, "ppc32");
827       DEF_REGISTER(sprg5,  277 | SPR | Arch_ppc32, "ppc32");
828       DEF_REGISTER(sprg6,  278 | SPR | Arch_ppc32, "ppc32");
829       DEF_REGISTER(sprg7,  279 | SPR | Arch_ppc32, "ppc32");
830
831       DEF_REGISTER(sprg3_ro,  259 | SPR | Arch_ppc32, "ppc32");
832       DEF_REGISTER(sprg4_ro,  260 | SPR | Arch_ppc32, "ppc32");
833       DEF_REGISTER(sprg5_ro,  261 | SPR | Arch_ppc32, "ppc32");
834       DEF_REGISTER(sprg6_ro,  262 | SPR | Arch_ppc32, "ppc32");
835       DEF_REGISTER(sprg7_ro,  263 | SPR | Arch_ppc32, "ppc32");
836
837
838       DEF_REGISTER(ear,    282 | SPR | Arch_ppc32, "ppc32");
839       DEF_REGISTER(tbl_wo,    284 | SPR | Arch_ppc32, "ppc32");
840       DEF_REGISTER(tbl_ro,    268 | SPR | Arch_ppc32, "ppc32");
841       DEF_REGISTER(tbu_wo,    285 | SPR | Arch_ppc32, "ppc32");
842       DEF_REGISTER(tbu_ro,    269 | SPR | Arch_ppc32, "ppc32");
843       DEF_REGISTER(pvr,    287 | SPR | Arch_ppc32, "ppc32");
844       DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc32, "ppc32");
845       DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc32, "ppc32");
846       DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc32, "ppc32");
847       DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc32, "ppc32");
848       DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc32, "ppc32");
849       DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc32, "ppc32");
850       DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc32, "ppc32");
851       DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc32, "ppc32");
852       DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc32, "ppc32");
853       DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc32, "ppc32");
854       DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc32, "ppc32");
855       DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc32, "ppc32");
856       DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc32, "ppc32");
857       DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc32, "ppc32");
858       DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc32, "ppc32");
859       DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc32, "ppc32");
860       DEF_REGISTER(pc,     600 | SPR | Arch_ppc32, "ppc32");
861       DEF_REGISTER(fpscw,  601 | SPR | Arch_ppc32, "ppc32");
862       DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc32, "ppc32");
863       DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc32, "ppc32");
864       DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc32, "ppc32");
865       DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc32, "ppc32");
866       DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc32, "ppc32");
867       DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc32, "ppc32");
868       DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc32, "ppc32");
869       DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc32, "ppc32");
870       DEF_REGISTER(msr,    610 | SPR | Arch_ppc32, "ppc32");
871       DEF_REGISTER(ivpr,   611 | SPR | Arch_ppc32, "ppc32");
872       DEF_REGISTER(ivor8,  612 | SPR | Arch_ppc32, "ppc32");
873       DEF_REGISTER(seg0,   613 | SPR | Arch_ppc32, "ppc32");
874       DEF_REGISTER(seg1,   614 | SPR | Arch_ppc32, "ppc32");
875       DEF_REGISTER(seg2,   615 | SPR | Arch_ppc32, "ppc32");
876       DEF_REGISTER(seg3,   616 | SPR | Arch_ppc32, "ppc32");
877       DEF_REGISTER(seg4,   617 | SPR | Arch_ppc32, "ppc32");
878       DEF_REGISTER(seg5,   618 | SPR | Arch_ppc32, "ppc32");
879       DEF_REGISTER(seg6,   619 | SPR | Arch_ppc32, "ppc32");
880       DEF_REGISTER(seg7,   620 | SPR | Arch_ppc32, "ppc32");
881       DEF_REGISTER(cr0,    621 | SPR | Arch_ppc32, "ppc32");
882       DEF_REGISTER(cr1,    622 | SPR | Arch_ppc32, "ppc32");
883       DEF_REGISTER(cr2,    623 | SPR | Arch_ppc32, "ppc32");
884       DEF_REGISTER(cr3,    624 | SPR | Arch_ppc32, "ppc32");
885       DEF_REGISTER(cr4,    625 | SPR | Arch_ppc32, "ppc32");
886       DEF_REGISTER(cr5,    626 | SPR | Arch_ppc32, "ppc32");
887       DEF_REGISTER(cr6,    627 | SPR | Arch_ppc32, "ppc32");
888       DEF_REGISTER(cr7,    628 | SPR | Arch_ppc32, "ppc32");
889       DEF_REGISTER(cr,     629 | SPR | Arch_ppc32, "ppc32");
890       DEF_REGISTER(or3,    630 | SPR | Arch_ppc32, "ppc32");
891       DEF_REGISTER(trap,   631 | SPR | Arch_ppc32, "ppc32");
892    }
893    namespace ppc64 {
894       const signed int GPR   = 0x00010000;
895       const signed int FPR   = 0x00020000;
896       const signed int FSR   = 0x00040000;
897       const signed int SPR   = 0x00080000;
898
899       DEF_REGISTER(r0,       0 | GPR | Arch_ppc64, "ppc64");
900       DEF_REGISTER(r1,       1 | GPR | Arch_ppc64, "ppc64");
901       DEF_REGISTER(r2,       2 | GPR | Arch_ppc64, "ppc64");
902       DEF_REGISTER(r3,       3 | GPR | Arch_ppc64, "ppc64");
903       DEF_REGISTER(r4,       4 | GPR | Arch_ppc64, "ppc64");
904       DEF_REGISTER(r5,       5 | GPR | Arch_ppc64, "ppc64");
905       DEF_REGISTER(r6,       6 | GPR | Arch_ppc64, "ppc64");
906       DEF_REGISTER(r7,       7 | GPR | Arch_ppc64, "ppc64");
907       DEF_REGISTER(r8,       8 | GPR | Arch_ppc64, "ppc64");
908       DEF_REGISTER(r9,       9 | GPR | Arch_ppc64, "ppc64");
909       DEF_REGISTER(r10,     10 | GPR | Arch_ppc64, "ppc64");
910       DEF_REGISTER(r11,     11 | GPR | Arch_ppc64, "ppc64");
911       DEF_REGISTER(r12,     12 | GPR | Arch_ppc64, "ppc64");
912       DEF_REGISTER(r13,     13 | GPR | Arch_ppc64, "ppc64");
913       DEF_REGISTER(r14,     14 | GPR | Arch_ppc64, "ppc64");
914       DEF_REGISTER(r15,     15 | GPR | Arch_ppc64, "ppc64");
915       DEF_REGISTER(r16,     16 | GPR | Arch_ppc64, "ppc64");
916       DEF_REGISTER(r17,     17 | GPR | Arch_ppc64, "ppc64");
917       DEF_REGISTER(r18,     18 | GPR | Arch_ppc64, "ppc64");
918       DEF_REGISTER(r19,     19 | GPR | Arch_ppc64, "ppc64");
919       DEF_REGISTER(r20,     20 | GPR | Arch_ppc64, "ppc64");
920       DEF_REGISTER(r21,     21 | GPR | Arch_ppc64, "ppc64");
921       DEF_REGISTER(r22,     22 | GPR | Arch_ppc64, "ppc64");
922       DEF_REGISTER(r23,     23 | GPR | Arch_ppc64, "ppc64");
923       DEF_REGISTER(r24,     24 | GPR | Arch_ppc64, "ppc64");
924       DEF_REGISTER(r25,     25 | GPR | Arch_ppc64, "ppc64");
925       DEF_REGISTER(r26,     26 | GPR | Arch_ppc64, "ppc64");
926       DEF_REGISTER(r27,     27 | GPR | Arch_ppc64, "ppc64");
927       DEF_REGISTER(r28,     28 | GPR | Arch_ppc64, "ppc64");
928       DEF_REGISTER(r29,     29 | GPR | Arch_ppc64, "ppc64");
929       DEF_REGISTER(r30,     30 | GPR | Arch_ppc64, "ppc64");
930       DEF_REGISTER(r31,     31 | GPR | Arch_ppc64, "ppc64");
931       DEF_REGISTER(fpr0,     0 | FPR | Arch_ppc64, "ppc64");
932       DEF_REGISTER(fpr1,     1 | FPR | Arch_ppc64, "ppc64");
933       DEF_REGISTER(fpr2,     2 | FPR | Arch_ppc64, "ppc64");
934       DEF_REGISTER(fpr3,     3 | FPR | Arch_ppc64, "ppc64");
935       DEF_REGISTER(fpr4,     4 | FPR | Arch_ppc64, "ppc64");
936       DEF_REGISTER(fpr5,     5 | FPR | Arch_ppc64, "ppc64");
937       DEF_REGISTER(fpr6,     6 | FPR | Arch_ppc64, "ppc64");
938       DEF_REGISTER(fpr7,     7 | FPR | Arch_ppc64, "ppc64");
939       DEF_REGISTER(fpr8,     8 | FPR | Arch_ppc64, "ppc64");
940       DEF_REGISTER(fpr9,     9 | FPR | Arch_ppc64, "ppc64");
941       DEF_REGISTER(fpr10,   10 | FPR | Arch_ppc64, "ppc64");
942       DEF_REGISTER(fpr11,   11 | FPR | Arch_ppc64, "ppc64");
943       DEF_REGISTER(fpr12,   12 | FPR | Arch_ppc64, "ppc64");
944       DEF_REGISTER(fpr13,   13 | FPR | Arch_ppc64, "ppc64");
945       DEF_REGISTER(fpr14,   14 | FPR | Arch_ppc64, "ppc64");
946       DEF_REGISTER(fpr15,   15 | FPR | Arch_ppc64, "ppc64");
947       DEF_REGISTER(fpr16,   16 | FPR | Arch_ppc64, "ppc64");
948       DEF_REGISTER(fpr17,   17 | FPR | Arch_ppc64, "ppc64");
949       DEF_REGISTER(fpr18,   18 | FPR | Arch_ppc64, "ppc64");
950       DEF_REGISTER(fpr19,   19 | FPR | Arch_ppc64, "ppc64");
951       DEF_REGISTER(fpr20,   20 | FPR | Arch_ppc64, "ppc64");
952       DEF_REGISTER(fpr21,   21 | FPR | Arch_ppc64, "ppc64");
953       DEF_REGISTER(fpr22,   22 | FPR | Arch_ppc64, "ppc64");
954       DEF_REGISTER(fpr23,   23 | FPR | Arch_ppc64, "ppc64");
955       DEF_REGISTER(fpr24,   24 | FPR | Arch_ppc64, "ppc64");
956       DEF_REGISTER(fpr25,   25 | FPR | Arch_ppc64, "ppc64");
957       DEF_REGISTER(fpr26,   26 | FPR | Arch_ppc64, "ppc64");
958       DEF_REGISTER(fpr27,   27 | FPR | Arch_ppc64, "ppc64");
959       DEF_REGISTER(fpr28,   28 | FPR | Arch_ppc64, "ppc64");
960       DEF_REGISTER(fpr29,   29 | FPR | Arch_ppc64, "ppc64");
961       DEF_REGISTER(fpr30,   30 | FPR | Arch_ppc64, "ppc64");
962       DEF_REGISTER(fpr31,   31 | FPR | Arch_ppc64, "ppc64");
963       DEF_REGISTER(fsr0,     0 | FSR | Arch_ppc64, "ppc64");
964       DEF_REGISTER(fsr1,     1 | FSR | Arch_ppc64, "ppc64");
965       DEF_REGISTER(fsr2,     2 | FSR | Arch_ppc64, "ppc64");
966       DEF_REGISTER(fsr3,     3 | FSR | Arch_ppc64, "ppc64");
967       DEF_REGISTER(fsr4,     4 | FSR | Arch_ppc64, "ppc64");
968       DEF_REGISTER(fsr5,     5 | FSR | Arch_ppc64, "ppc64");
969       DEF_REGISTER(fsr6,     6 | FSR | Arch_ppc64, "ppc64");
970       DEF_REGISTER(fsr7,     7 | FSR | Arch_ppc64, "ppc64");
971       DEF_REGISTER(fsr8,     8 | FSR | Arch_ppc64, "ppc64");
972       DEF_REGISTER(fsr9,     9 | FSR | Arch_ppc64, "ppc64");
973       DEF_REGISTER(fsr10,   10 | FSR | Arch_ppc64, "ppc64");
974       DEF_REGISTER(fsr11,   11 | FSR | Arch_ppc64, "ppc64");
975       DEF_REGISTER(fsr12,   12 | FSR | Arch_ppc64, "ppc64");
976       DEF_REGISTER(fsr13,   13 | FSR | Arch_ppc64, "ppc64");
977       DEF_REGISTER(fsr14,   14 | FSR | Arch_ppc64, "ppc64");
978       DEF_REGISTER(fsr15,   15 | FSR | Arch_ppc64, "ppc64");
979       DEF_REGISTER(fsr16,   16 | FSR | Arch_ppc64, "ppc64");
980       DEF_REGISTER(fsr17,   17 | FSR | Arch_ppc64, "ppc64");
981       DEF_REGISTER(fsr18,   18 | FSR | Arch_ppc64, "ppc64");
982       DEF_REGISTER(fsr19,   19 | FSR | Arch_ppc64, "ppc64");
983       DEF_REGISTER(fsr20,   20 | FSR | Arch_ppc64, "ppc64");
984       DEF_REGISTER(fsr21,   21 | FSR | Arch_ppc64, "ppc64");
985       DEF_REGISTER(fsr22,   22 | FSR | Arch_ppc64, "ppc64");
986       DEF_REGISTER(fsr23,   23 | FSR | Arch_ppc64, "ppc64");
987       DEF_REGISTER(fsr24,   24 | FSR | Arch_ppc64, "ppc64");
988       DEF_REGISTER(fsr25,   25 | FSR | Arch_ppc64, "ppc64");
989       DEF_REGISTER(fsr26,   26 | FSR | Arch_ppc64, "ppc64");
990       DEF_REGISTER(fsr27,   27 | FSR | Arch_ppc64, "ppc64");
991       DEF_REGISTER(fsr28,   28 | FSR | Arch_ppc64, "ppc64");
992       DEF_REGISTER(fsr29,   29 | FSR | Arch_ppc64, "ppc64");
993       DEF_REGISTER(fsr30,   30 | FSR | Arch_ppc64, "ppc64");
994       DEF_REGISTER(fsr31,   31 | FSR | Arch_ppc64, "ppc64");
995       DEF_REGISTER(mq,       0 | SPR | Arch_ppc64, "ppc64");
996       DEF_REGISTER(xer,      1 | SPR | Arch_ppc64, "ppc64");
997       DEF_REGISTER(lr,       8 | SPR | Arch_ppc64, "ppc64");
998       DEF_REGISTER(ctr,      9 | SPR | Arch_ppc64, "ppc64");
999       DEF_REGISTER(dsisr,   18 | SPR | Arch_ppc64, "ppc64");
1000       DEF_REGISTER(dar,     19 | SPR | Arch_ppc64, "ppc64");
1001       DEF_REGISTER(dec,     22 | SPR | Arch_ppc64, "ppc64");
1002       DEF_REGISTER(sdr1,    25 | SPR | Arch_ppc64, "ppc64");
1003       DEF_REGISTER(srr0,    26 | SPR | Arch_ppc64, "ppc64");
1004       DEF_REGISTER(srr1,    27 | SPR | Arch_ppc64, "ppc64");
1005       DEF_REGISTER(sprg0,  272 | SPR | Arch_ppc64, "ppc64");
1006       DEF_REGISTER(sprg1,  273 | SPR | Arch_ppc64, "ppc64");
1007       DEF_REGISTER(sprg2,  274 | SPR | Arch_ppc64, "ppc64");
1008       DEF_REGISTER(sprg3,  275 | SPR | Arch_ppc64, "ppc64");
1009       DEF_REGISTER(sprg4,  276 | SPR | Arch_ppc64, "ppc64");
1010       DEF_REGISTER(sprg5,  277 | SPR | Arch_ppc64, "ppc64");
1011       DEF_REGISTER(sprg6,  278 | SPR | Arch_ppc64, "ppc64");
1012       DEF_REGISTER(sprg7,  279 | SPR | Arch_ppc64, "ppc64");
1013
1014       DEF_REGISTER(sprg3_ro,  259 | SPR | Arch_ppc64, "ppc64");
1015       DEF_REGISTER(sprg4_ro,  260 | SPR | Arch_ppc64, "ppc64");
1016       DEF_REGISTER(sprg5_ro,  261 | SPR | Arch_ppc64, "ppc64");
1017       DEF_REGISTER(sprg6_ro,  262 | SPR | Arch_ppc64, "ppc64");
1018       DEF_REGISTER(sprg7_ro,  263 | SPR | Arch_ppc64, "ppc64");
1019       DEF_REGISTER(ear,    282 | SPR | Arch_ppc64, "ppc64");
1020       DEF_REGISTER(tbl_wo,    284 | SPR | Arch_ppc64, "ppc64");
1021       DEF_REGISTER(tbl_ro,    268 | SPR | Arch_ppc64, "ppc64");
1022       DEF_REGISTER(tbu_wo,    285 | SPR | Arch_ppc64, "ppc64");
1023       DEF_REGISTER(tbu_ro,    269 | SPR | Arch_ppc64, "ppc64");
1024       DEF_REGISTER(pvr,    287 | SPR | Arch_ppc64, "ppc64");
1025       DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc64, "ppc64");
1026       DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc64, "ppc64");
1027       DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc64, "ppc64");
1028       DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc64, "ppc64");
1029       DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc64, "ppc64");
1030       DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc64, "ppc64");
1031       DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc64, "ppc64");
1032       DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc64, "ppc64");
1033       DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc64, "ppc64");
1034       DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc64, "ppc64");
1035       DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc64, "ppc64");
1036       DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc64, "ppc64");
1037       DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc64, "ppc64");
1038       DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc64, "ppc64");
1039       DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc64, "ppc64");
1040       DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc64, "ppc64");
1041       DEF_REGISTER(pc,     600 | SPR | Arch_ppc64, "ppc64");
1042       DEF_REGISTER(fpscw,  601 | SPR | Arch_ppc64, "ppc64");
1043       DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc64, "ppc64");
1044       DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc64, "ppc64");
1045       DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc64, "ppc64");
1046       DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc64, "ppc64");
1047       DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc64, "ppc64");
1048       DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc64, "ppc64");
1049       DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc64, "ppc64");
1050       DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc64, "ppc64");
1051       DEF_REGISTER(msr,    610 | SPR | Arch_ppc64, "ppc64");
1052       DEF_REGISTER(ivpr,   611 | SPR | Arch_ppc64, "ppc64");
1053       DEF_REGISTER(ivor8,  612 | SPR | Arch_ppc64, "ppc64");
1054       DEF_REGISTER(seg0,   613 | SPR | Arch_ppc64, "ppc64");
1055       DEF_REGISTER(seg1,   614 | SPR | Arch_ppc64, "ppc64");
1056       DEF_REGISTER(seg2,   615 | SPR | Arch_ppc64, "ppc64");
1057       DEF_REGISTER(seg3,   616 | SPR | Arch_ppc64, "ppc64");
1058       DEF_REGISTER(seg4,   617 | SPR | Arch_ppc64, "ppc64");
1059       DEF_REGISTER(seg5,   618 | SPR | Arch_ppc64, "ppc64");
1060       DEF_REGISTER(seg6,   619 | SPR | Arch_ppc64, "ppc64");
1061       DEF_REGISTER(seg7,   620 | SPR | Arch_ppc64, "ppc64");
1062       DEF_REGISTER(cr0,    621 | SPR | Arch_ppc64, "ppc64");
1063       DEF_REGISTER(cr1,    622 | SPR | Arch_ppc64, "ppc64");
1064       DEF_REGISTER(cr2,    623 | SPR | Arch_ppc64, "ppc64");
1065       DEF_REGISTER(cr3,    624 | SPR | Arch_ppc64, "ppc64");
1066       DEF_REGISTER(cr4,    625 | SPR | Arch_ppc64, "ppc64");
1067       DEF_REGISTER(cr5,    626 | SPR | Arch_ppc64, "ppc64");
1068       DEF_REGISTER(cr6,    627 | SPR | Arch_ppc64, "ppc64");
1069       DEF_REGISTER(cr7,    628 | SPR | Arch_ppc64, "ppc64");
1070       DEF_REGISTER(cr,     629 | SPR | Arch_ppc64, "ppc64");
1071       DEF_REGISTER(or3,    630 | SPR | Arch_ppc64, "ppc64");
1072       DEF_REGISTER(trap,   631 | SPR | Arch_ppc64, "ppc64");
1073    }
1074
1075         namespace aarch64{
1076       //0xff000000  0x00ff0000      0x0000ff00      0x000000ff
1077       //arch        reg cat:GPR     alias&subrange  reg ID
1078       const signed int GPR   = 0x00010000;
1079       const signed int FPR   = 0x00020000;
1080       const signed int FLAG  = 0x00030000;
1081       const signed int FSR   = 0x00040000;
1082       const signed int SPR   = 0x00080000;
1083       const signed int SYSREG = 0x00100000;
1084
1085       const signed int BIT   = 0x00008000;
1086       const signed int B_REG = 0x00000100;      //8bit  byte reg
1087       const signed int W_REG = 0x00000300;      //16bit half-wor reg
1088       const signed int D_REG = 0x00000f00;      //32bit single-word reg
1089       const signed int FULL  = 0x00000000;      //64bit double-word reg
1090       const signed int Q_REG = 0x00000400;      //128bit reg
1091       const signed int HQ_REG = 0x00000500;      //second 64bit in 128bit reg
1092
1093       //31 GPRs, double word long registers
1094       //          (name   regID| alias | cat | arch           arch    )
1095       DEF_REGISTER(x0,       0 | FULL   |GPR | Arch_aarch64, "aarch64");
1096       DEF_REGISTER(w0,       0 | D_REG  |GPR | Arch_aarch64, "aarch64");
1097       DEF_REGISTER(x1,       1 | FULL   |GPR | Arch_aarch64, "aarch64");
1098       DEF_REGISTER(w1,       1 | D_REG  |GPR | Arch_aarch64, "aarch64");
1099       DEF_REGISTER(x2,       2 | FULL   |GPR | Arch_aarch64, "aarch64");
1100       DEF_REGISTER(w2,       2 | D_REG  |GPR | Arch_aarch64, "aarch64");
1101       DEF_REGISTER(x3,       3 | FULL   |GPR | Arch_aarch64, "aarch64");
1102       DEF_REGISTER(w3,       3 | D_REG  |GPR | Arch_aarch64, "aarch64");
1103       DEF_REGISTER(x4,       4 | FULL   |GPR | Arch_aarch64, "aarch64");
1104       DEF_REGISTER(w4,       4 | D_REG  |GPR | Arch_aarch64, "aarch64");
1105       DEF_REGISTER(x5,       5 | FULL   |GPR | Arch_aarch64, "aarch64");
1106       DEF_REGISTER(w5,       5 | D_REG  |GPR | Arch_aarch64, "aarch64");
1107       DEF_REGISTER(x6,       6 | FULL   |GPR | Arch_aarch64, "aarch64");
1108       DEF_REGISTER(w6,       6 | D_REG  |GPR | Arch_aarch64, "aarch64");
1109       DEF_REGISTER(x7,       7 | FULL   |GPR | Arch_aarch64, "aarch64");
1110       DEF_REGISTER(w7,       7 | D_REG  |GPR | Arch_aarch64, "aarch64");
1111       DEF_REGISTER(x8,       8 | FULL   |GPR | Arch_aarch64, "aarch64");
1112       DEF_REGISTER(w8,       8 | D_REG  |GPR | Arch_aarch64, "aarch64");
1113       DEF_REGISTER(x9,       9 | FULL   |GPR | Arch_aarch64, "aarch64");
1114       DEF_REGISTER(w9,       9 | D_REG  |GPR | Arch_aarch64, "aarch64");
1115       DEF_REGISTER(x10,     10 | FULL   |GPR | Arch_aarch64, "aarch64");
1116       DEF_REGISTER(w10,     10 | D_REG  |GPR | Arch_aarch64, "aarch64");
1117       DEF_REGISTER(x11,     11 | FULL   |GPR | Arch_aarch64, "aarch64");
1118       DEF_REGISTER(w11,     11 | D_REG  |GPR | Arch_aarch64, "aarch64");
1119       DEF_REGISTER(x12,     12 | FULL   |GPR | Arch_aarch64, "aarch64");
1120       DEF_REGISTER(w12,     12 | D_REG  |GPR | Arch_aarch64, "aarch64");
1121       DEF_REGISTER(x13,     13 | FULL   |GPR | Arch_aarch64, "aarch64");
1122       DEF_REGISTER(w13,     13 | D_REG  |GPR | Arch_aarch64, "aarch64");
1123       DEF_REGISTER(x14,     14 | FULL   |GPR | Arch_aarch64, "aarch64");
1124       DEF_REGISTER(w14,     14 | D_REG  |GPR | Arch_aarch64, "aarch64");
1125       DEF_REGISTER(x15,     15 | FULL   |GPR | Arch_aarch64, "aarch64");
1126       DEF_REGISTER(w15,     15 | D_REG  |GPR | Arch_aarch64, "aarch64");
1127       DEF_REGISTER(x16,     16 | FULL   |GPR | Arch_aarch64, "aarch64");
1128       DEF_REGISTER(w16,     16 | D_REG  |GPR | Arch_aarch64, "aarch64");
1129       DEF_REGISTER(x17,     17 | FULL   |GPR | Arch_aarch64, "aarch64");
1130       DEF_REGISTER(w17,     17 | D_REG  |GPR | Arch_aarch64, "aarch64");
1131       DEF_REGISTER(x18,     18 | FULL   |GPR | Arch_aarch64, "aarch64");
1132       DEF_REGISTER(w18,     18 | D_REG  |GPR | Arch_aarch64, "aarch64");
1133       DEF_REGISTER(x19,     19 | FULL   |GPR | Arch_aarch64, "aarch64");
1134       DEF_REGISTER(w19,     19 | D_REG  |GPR | Arch_aarch64, "aarch64");
1135       DEF_REGISTER(x20,     20 | FULL   |GPR | Arch_aarch64, "aarch64");
1136       DEF_REGISTER(w20,     20 | D_REG  |GPR | Arch_aarch64, "aarch64");
1137       DEF_REGISTER(x21,     21 | FULL   |GPR | Arch_aarch64, "aarch64");
1138       DEF_REGISTER(w21,     21 | D_REG  |GPR | Arch_aarch64, "aarch64");
1139       DEF_REGISTER(x22,     22 | FULL   |GPR | Arch_aarch64, "aarch64");
1140       DEF_REGISTER(w22,     22 | D_REG  |GPR | Arch_aarch64, "aarch64");
1141       DEF_REGISTER(x23,     23 | FULL   |GPR | Arch_aarch64, "aarch64");
1142       DEF_REGISTER(w23,     23 | D_REG  |GPR | Arch_aarch64, "aarch64");
1143       DEF_REGISTER(x24,     24 | FULL   |GPR | Arch_aarch64, "aarch64");
1144       DEF_REGISTER(w24,     24 | D_REG  |GPR | Arch_aarch64, "aarch64");
1145       DEF_REGISTER(x25,     25 | FULL   |GPR | Arch_aarch64, "aarch64");
1146       DEF_REGISTER(w25,     25 | D_REG  |GPR | Arch_aarch64, "aarch64");
1147       DEF_REGISTER(x26,     26 | FULL   |GPR | Arch_aarch64, "aarch64");
1148       DEF_REGISTER(w26,     26 | D_REG  |GPR | Arch_aarch64, "aarch64");
1149       DEF_REGISTER(x27,     27 | FULL   |GPR | Arch_aarch64, "aarch64");
1150       DEF_REGISTER(w27,     27 | D_REG  |GPR | Arch_aarch64, "aarch64");
1151       DEF_REGISTER(x28,     28 | FULL   |GPR | Arch_aarch64, "aarch64");
1152       DEF_REGISTER(w28,     28 | D_REG  |GPR | Arch_aarch64, "aarch64");
1153       DEF_REGISTER(x29,     29 | FULL   |GPR | Arch_aarch64, "aarch64");
1154       DEF_REGISTER(w29,     29 | D_REG  |GPR | Arch_aarch64, "aarch64");
1155       DEF_REGISTER(x30,     30 | FULL   |GPR | Arch_aarch64, "aarch64");
1156       DEF_REGISTER(w30,     30 | D_REG  |GPR | Arch_aarch64, "aarch64");
1157
1158       //32 FPRs-----------q-d-s-h-b
1159       //128 bit
1160       DEF_REGISTER(q0,       0 | Q_REG |FPR | Arch_aarch64, "aarch64");
1161       DEF_REGISTER(q1,       1 | Q_REG |FPR | Arch_aarch64, "aarch64");
1162       DEF_REGISTER(q2,       2 | Q_REG |FPR | Arch_aarch64, "aarch64");
1163       DEF_REGISTER(q3,       3 | Q_REG |FPR | Arch_aarch64, "aarch64");
1164       DEF_REGISTER(q4,       4 | Q_REG |FPR | Arch_aarch64, "aarch64");
1165       DEF_REGISTER(q5,       5 | Q_REG |FPR | Arch_aarch64, "aarch64");
1166       DEF_REGISTER(q6,       6 | Q_REG |FPR | Arch_aarch64, "aarch64");
1167       DEF_REGISTER(q7,       7 | Q_REG |FPR | Arch_aarch64, "aarch64");
1168       DEF_REGISTER(q8,       8 | Q_REG |FPR | Arch_aarch64, "aarch64");
1169       DEF_REGISTER(q9,       9 | Q_REG |FPR | Arch_aarch64, "aarch64");
1170       DEF_REGISTER(q10,     10 | Q_REG |FPR | Arch_aarch64, "aarch64");
1171       DEF_REGISTER(q11,     11 | Q_REG |FPR | Arch_aarch64, "aarch64");
1172       DEF_REGISTER(q12,     12 | Q_REG |FPR | Arch_aarch64, "aarch64");
1173       DEF_REGISTER(q13,     13 | Q_REG |FPR | Arch_aarch64, "aarch64");
1174       DEF_REGISTER(q14,     14 | Q_REG |FPR | Arch_aarch64, "aarch64");
1175       DEF_REGISTER(q15,     15 | Q_REG |FPR | Arch_aarch64, "aarch64");
1176       DEF_REGISTER(q16,     16 | Q_REG |FPR | Arch_aarch64, "aarch64");
1177       DEF_REGISTER(q17,     17 | Q_REG |FPR | Arch_aarch64, "aarch64");
1178       DEF_REGISTER(q18,     18 | Q_REG |FPR | Arch_aarch64, "aarch64");
1179       DEF_REGISTER(q19,     19 | Q_REG |FPR | Arch_aarch64, "aarch64");
1180       DEF_REGISTER(q20,     20 | Q_REG |FPR | Arch_aarch64, "aarch64");
1181       DEF_REGISTER(q21,     21 | Q_REG |FPR | Arch_aarch64, "aarch64");
1182       DEF_REGISTER(q22,     22 | Q_REG |FPR | Arch_aarch64, "aarch64");
1183       DEF_REGISTER(q23,     23 | Q_REG |FPR | Arch_aarch64, "aarch64");
1184       DEF_REGISTER(q24,     24 | Q_REG |FPR | Arch_aarch64, "aarch64");
1185       DEF_REGISTER(q25,     25 | Q_REG |FPR | Arch_aarch64, "aarch64");
1186       DEF_REGISTER(q26,     26 | Q_REG |FPR | Arch_aarch64, "aarch64");
1187       DEF_REGISTER(q27,     27 | Q_REG |FPR | Arch_aarch64, "aarch64");
1188       DEF_REGISTER(q28,     28 | Q_REG |FPR | Arch_aarch64, "aarch64");
1189       DEF_REGISTER(q29,     29 | Q_REG |FPR | Arch_aarch64, "aarch64");
1190       DEF_REGISTER(q30,     30 | Q_REG |FPR | Arch_aarch64, "aarch64");
1191       DEF_REGISTER(q31,     31 | Q_REG |FPR | Arch_aarch64, "aarch64");
1192
1193       // second 64bit
1194       DEF_REGISTER(hq0,       0 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1195       DEF_REGISTER(hq1,       1 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1196       DEF_REGISTER(hq2,       2 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1197       DEF_REGISTER(hq3,       3 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1198       DEF_REGISTER(hq4,       4 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1199       DEF_REGISTER(hq5,       5 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1200       DEF_REGISTER(hq6,       6 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1201       DEF_REGISTER(hq7,       7 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1202       DEF_REGISTER(hq8,       8 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1203       DEF_REGISTER(hq9,       9 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1204       DEF_REGISTER(hq10,     10 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1205       DEF_REGISTER(hq11,     11 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1206       DEF_REGISTER(hq12,     12 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1207       DEF_REGISTER(hq13,     13 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1208       DEF_REGISTER(hq14,     14 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1209       DEF_REGISTER(hq15,     15 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1210       DEF_REGISTER(hq16,     16 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1211       DEF_REGISTER(hq17,     17 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1212       DEF_REGISTER(hq18,     18 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1213       DEF_REGISTER(hq19,     19 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1214       DEF_REGISTER(hq20,     20 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1215       DEF_REGISTER(hq21,     21 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1216       DEF_REGISTER(hq22,     22 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1217       DEF_REGISTER(hq23,     23 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1218       DEF_REGISTER(hq24,     24 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1219       DEF_REGISTER(hq25,     25 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1220       DEF_REGISTER(hq26,     26 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1221       DEF_REGISTER(hq27,     27 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1222       DEF_REGISTER(hq28,     28 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1223       DEF_REGISTER(hq29,     29 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1224       DEF_REGISTER(hq30,     30 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1225       DEF_REGISTER(hq31,     31 | HQ_REG |FPR | Arch_aarch64, "aarch64");
1226
1227       //64bit FP regs
1228       DEF_REGISTER(d0,       0 | FULL |FPR | Arch_aarch64, "aarch64");
1229       DEF_REGISTER(d1,       1 | FULL |FPR | Arch_aarch64, "aarch64");
1230       DEF_REGISTER(d2,       2 | FULL |FPR | Arch_aarch64, "aarch64");
1231       DEF_REGISTER(d3,       3 | FULL |FPR | Arch_aarch64, "aarch64");
1232       DEF_REGISTER(d4,       4 | FULL |FPR | Arch_aarch64, "aarch64");
1233       DEF_REGISTER(d5,       5 | FULL |FPR | Arch_aarch64, "aarch64");
1234       DEF_REGISTER(d6,       6 | FULL |FPR | Arch_aarch64, "aarch64");
1235       DEF_REGISTER(d7,       7 | FULL |FPR | Arch_aarch64, "aarch64");
1236       DEF_REGISTER(d8,       8 | FULL |FPR | Arch_aarch64, "aarch64");
1237       DEF_REGISTER(d9,       9 | FULL |FPR | Arch_aarch64, "aarch64");
1238       DEF_REGISTER(d10,     10 | FULL |FPR | Arch_aarch64, "aarch64");
1239       DEF_REGISTER(d11,     11 | FULL |FPR | Arch_aarch64, "aarch64");
1240       DEF_REGISTER(d12,     12 | FULL |FPR | Arch_aarch64, "aarch64");
1241       DEF_REGISTER(d13,     13 | FULL |FPR | Arch_aarch64, "aarch64");
1242       DEF_REGISTER(d14,     14 | FULL |FPR | Arch_aarch64, "aarch64");
1243       DEF_REGISTER(d15,     15 | FULL |FPR | Arch_aarch64, "aarch64");
1244       DEF_REGISTER(d16,     16 | FULL |FPR | Arch_aarch64, "aarch64");
1245       DEF_REGISTER(d17,     17 | FULL |FPR | Arch_aarch64, "aarch64");
1246       DEF_REGISTER(d18,     18 | FULL |FPR | Arch_aarch64, "aarch64");
1247       DEF_REGISTER(d19,     19 | FULL |FPR | Arch_aarch64, "aarch64");
1248       DEF_REGISTER(d20,     20 | FULL |FPR | Arch_aarch64, "aarch64");
1249       DEF_REGISTER(d21,     21 | FULL |FPR | Arch_aarch64, "aarch64");
1250       DEF_REGISTER(d22,     22 | FULL |FPR | Arch_aarch64, "aarch64");
1251       DEF_REGISTER(d23,     23 | FULL |FPR | Arch_aarch64, "aarch64");
1252       DEF_REGISTER(d24,     24 | FULL |FPR | Arch_aarch64, "aarch64");
1253       DEF_REGISTER(d25,     25 | FULL |FPR | Arch_aarch64, "aarch64");
1254       DEF_REGISTER(d26,     26 | FULL |FPR | Arch_aarch64, "aarch64");
1255       DEF_REGISTER(d27,     27 | FULL |FPR | Arch_aarch64, "aarch64");
1256       DEF_REGISTER(d28,     28 | FULL |FPR | Arch_aarch64, "aarch64");
1257       DEF_REGISTER(d29,     29 | FULL |FPR | Arch_aarch64, "aarch64");
1258       DEF_REGISTER(d30,     30 | FULL |FPR | Arch_aarch64, "aarch64");
1259       DEF_REGISTER(d31,     31 | FULL |FPR | Arch_aarch64, "aarch64");
1260
1261       //32 bit FP regs
1262       DEF_REGISTER(s0,       0 | D_REG |FPR | Arch_aarch64, "aarch64");
1263       DEF_REGISTER(s1,       1 | D_REG |FPR | Arch_aarch64, "aarch64");
1264       DEF_REGISTER(s2,       2 | D_REG |FPR | Arch_aarch64, "aarch64");
1265       DEF_REGISTER(s3,       3 | D_REG |FPR | Arch_aarch64, "aarch64");
1266       DEF_REGISTER(s4,       4 | D_REG |FPR | Arch_aarch64, "aarch64");
1267       DEF_REGISTER(s5,       5 | D_REG |FPR | Arch_aarch64, "aarch64");
1268       DEF_REGISTER(s6,       6 | D_REG |FPR | Arch_aarch64, "aarch64");
1269       DEF_REGISTER(s7,       7 | D_REG |FPR | Arch_aarch64, "aarch64");
1270       DEF_REGISTER(s8,       8 | D_REG |FPR | Arch_aarch64, "aarch64");
1271       DEF_REGISTER(s9,       9 | D_REG |FPR | Arch_aarch64, "aarch64");
1272       DEF_REGISTER(s10,     10 | D_REG |FPR | Arch_aarch64, "aarch64");
1273       DEF_REGISTER(s11,     11 | D_REG |FPR | Arch_aarch64, "aarch64");
1274       DEF_REGISTER(s12,     12 | D_REG |FPR | Arch_aarch64, "aarch64");
1275       DEF_REGISTER(s13,     13 | D_REG |FPR | Arch_aarch64, "aarch64");
1276       DEF_REGISTER(s14,     14 | D_REG |FPR | Arch_aarch64, "aarch64");
1277       DEF_REGISTER(s15,     15 | D_REG |FPR | Arch_aarch64, "aarch64");
1278       DEF_REGISTER(s16,     16 | D_REG |FPR | Arch_aarch64, "aarch64");
1279       DEF_REGISTER(s17,     17 | D_REG |FPR | Arch_aarch64, "aarch64");
1280       DEF_REGISTER(s18,     18 | D_REG |FPR | Arch_aarch64, "aarch64");
1281       DEF_REGISTER(s19,     19 | D_REG |FPR | Arch_aarch64, "aarch64");
1282       DEF_REGISTER(s20,     20 | D_REG |FPR | Arch_aarch64, "aarch64");
1283       DEF_REGISTER(s21,     21 | D_REG |FPR | Arch_aarch64, "aarch64");
1284       DEF_REGISTER(s22,     22 | D_REG |FPR | Arch_aarch64, "aarch64");
1285       DEF_REGISTER(s23,     23 | D_REG |FPR | Arch_aarch64, "aarch64");
1286       DEF_REGISTER(s24,     24 | D_REG |FPR | Arch_aarch64, "aarch64");
1287       DEF_REGISTER(s25,     25 | D_REG |FPR | Arch_aarch64, "aarch64");
1288       DEF_REGISTER(s26,     26 | D_REG |FPR | Arch_aarch64, "aarch64");
1289       DEF_REGISTER(s27,     27 | D_REG |FPR | Arch_aarch64, "aarch64");
1290       DEF_REGISTER(s28,     28 | D_REG |FPR | Arch_aarch64, "aarch64");
1291       DEF_REGISTER(s29,     29 | D_REG |FPR | Arch_aarch64, "aarch64");
1292       DEF_REGISTER(s30,     30 | D_REG |FPR | Arch_aarch64, "aarch64");
1293       DEF_REGISTER(s31,     31 | D_REG |FPR | Arch_aarch64, "aarch64");
1294
1295
1296       //16 bit FP regs
1297       DEF_REGISTER(h0,       0 | W_REG |FPR | Arch_aarch64, "aarch64");
1298       DEF_REGISTER(h1,       1 | W_REG |FPR | Arch_aarch64, "aarch64");
1299       DEF_REGISTER(h2,       2 | W_REG |FPR | Arch_aarch64, "aarch64");
1300       DEF_REGISTER(h3,       3 | W_REG |FPR | Arch_aarch64, "aarch64");
1301       DEF_REGISTER(h4,       4 | W_REG |FPR | Arch_aarch64, "aarch64");
1302       DEF_REGISTER(h5,       5 | W_REG |FPR | Arch_aarch64, "aarch64");
1303       DEF_REGISTER(h6,       6 | W_REG |FPR | Arch_aarch64, "aarch64");
1304       DEF_REGISTER(h7,       7 | W_REG |FPR | Arch_aarch64, "aarch64");
1305       DEF_REGISTER(h8,       8 | W_REG |FPR | Arch_aarch64, "aarch64");
1306       DEF_REGISTER(h9,       9 | W_REG |FPR | Arch_aarch64, "aarch64");
1307       DEF_REGISTER(h10,     10 | W_REG |FPR | Arch_aarch64, "aarch64");
1308       DEF_REGISTER(h11,     11 | W_REG |FPR | Arch_aarch64, "aarch64");
1309       DEF_REGISTER(h12,     12 | W_REG |FPR | Arch_aarch64, "aarch64");
1310       DEF_REGISTER(h13,     13 | W_REG |FPR | Arch_aarch64, "aarch64");
1311       DEF_REGISTER(h14,     14 | W_REG |FPR | Arch_aarch64, "aarch64");
1312       DEF_REGISTER(h15,     15 | W_REG |FPR | Arch_aarch64, "aarch64");
1313       DEF_REGISTER(h16,     16 | W_REG |FPR | Arch_aarch64, "aarch64");
1314       DEF_REGISTER(h17,     17 | W_REG |FPR | Arch_aarch64, "aarch64");
1315       DEF_REGISTER(h18,     18 | W_REG |FPR | Arch_aarch64, "aarch64");
1316       DEF_REGISTER(h19,     19 | W_REG |FPR | Arch_aarch64, "aarch64");
1317       DEF_REGISTER(h20,     20 | W_REG |FPR | Arch_aarch64, "aarch64");
1318       DEF_REGISTER(h21,     21 | W_REG |FPR | Arch_aarch64, "aarch64");
1319       DEF_REGISTER(h22,     22 | W_REG |FPR | Arch_aarch64, "aarch64");
1320       DEF_REGISTER(h23,     23 | W_REG |FPR | Arch_aarch64, "aarch64");
1321       DEF_REGISTER(h24,     24 | W_REG |FPR | Arch_aarch64, "aarch64");
1322       DEF_REGISTER(h25,     25 | W_REG |FPR | Arch_aarch64, "aarch64");
1323       DEF_REGISTER(h26,     26 | W_REG |FPR | Arch_aarch64, "aarch64");
1324       DEF_REGISTER(h27,     27 | W_REG |FPR | Arch_aarch64, "aarch64");
1325       DEF_REGISTER(h28,     28 | W_REG |FPR | Arch_aarch64, "aarch64");
1326       DEF_REGISTER(h29,     29 | W_REG |FPR | Arch_aarch64, "aarch64");
1327       DEF_REGISTER(h30,     30 | W_REG |FPR | Arch_aarch64, "aarch64");
1328       DEF_REGISTER(h31,     31 | W_REG |FPR | Arch_aarch64, "aarch64");
1329
1330       //8 bit FP regs
1331       DEF_REGISTER(b0,       0 | B_REG |FPR | Arch_aarch64, "aarch64");
1332       DEF_REGISTER(b1,       1 | B_REG |FPR | Arch_aarch64, "aarch64");
1333       DEF_REGISTER(b2,       2 | B_REG |FPR | Arch_aarch64, "aarch64");
1334       DEF_REGISTER(b3,       3 | B_REG |FPR | Arch_aarch64, "aarch64");
1335       DEF_REGISTER(b4,       4 | B_REG |FPR | Arch_aarch64, "aarch64");
1336       DEF_REGISTER(b5,       5 | B_REG |FPR | Arch_aarch64, "aarch64");
1337       DEF_REGISTER(b6,       6 | B_REG |FPR | Arch_aarch64, "aarch64");
1338       DEF_REGISTER(b7,       7 | B_REG |FPR | Arch_aarch64, "aarch64");
1339       DEF_REGISTER(b8,       8 | B_REG |FPR | Arch_aarch64, "aarch64");
1340       DEF_REGISTER(b9,       9 | B_REG |FPR | Arch_aarch64, "aarch64");
1341       DEF_REGISTER(b10,     10 | B_REG |FPR | Arch_aarch64, "aarch64");
1342       DEF_REGISTER(b11,     11 | B_REG |FPR | Arch_aarch64, "aarch64");
1343       DEF_REGISTER(b12,     12 | B_REG |FPR | Arch_aarch64, "aarch64");
1344       DEF_REGISTER(b13,     13 | B_REG |FPR | Arch_aarch64, "aarch64");
1345       DEF_REGISTER(b14,     14 | B_REG |FPR | Arch_aarch64, "aarch64");
1346       DEF_REGISTER(b15,     15 | B_REG |FPR | Arch_aarch64, "aarch64");
1347       DEF_REGISTER(b16,     16 | B_REG |FPR | Arch_aarch64, "aarch64");
1348       DEF_REGISTER(b17,     17 | B_REG |FPR | Arch_aarch64, "aarch64");
1349       DEF_REGISTER(b18,     18 | B_REG |FPR | Arch_aarch64, "aarch64");
1350       DEF_REGISTER(b19,     19 | B_REG |FPR | Arch_aarch64, "aarch64");
1351       DEF_REGISTER(b20,     20 | B_REG |FPR | Arch_aarch64, "aarch64");
1352       DEF_REGISTER(b21,     21 | B_REG |FPR | Arch_aarch64, "aarch64");
1353       DEF_REGISTER(b22,     22 | B_REG |FPR | Arch_aarch64, "aarch64");
1354       DEF_REGISTER(b23,     23 | B_REG |FPR | Arch_aarch64, "aarch64");
1355       DEF_REGISTER(b24,     24 | B_REG |FPR | Arch_aarch64, "aarch64");
1356       DEF_REGISTER(b25,     25 | B_REG |FPR | Arch_aarch64, "aarch64");
1357       DEF_REGISTER(b26,     26 | B_REG |FPR | Arch_aarch64, "aarch64");
1358       DEF_REGISTER(b27,     27 | B_REG |FPR | Arch_aarch64, "aarch64");
1359       DEF_REGISTER(b28,     28 | B_REG |FPR | Arch_aarch64, "aarch64");
1360       DEF_REGISTER(b29,     29 | B_REG |FPR | Arch_aarch64, "aarch64");
1361       DEF_REGISTER(b30,     30 | B_REG |FPR | Arch_aarch64, "aarch64");
1362       DEF_REGISTER(b31,     31 | B_REG |FPR | Arch_aarch64, "aarch64");
1363
1364 #include "aarch64_sys_regs.h"
1365
1366       //GPRs aliases:
1367       //by convention
1368       //x29 is used as frame pointer
1369           //x30 is the linking register
1370       //x31 can be sp or zero register depending on the context
1371
1372       //special registers
1373           //PC is not writable in aarch64
1374       const signed int N_FLAG   =   31;
1375       const signed int Z_FLAG   =   30;
1376       const signed int C_FLAG   =   29;
1377       const signed int V_FLAG   =   28;
1378
1379       DEF_REGISTER(sp,       0 | FULL   |SPR | Arch_aarch64, "aarch64");
1380       DEF_REGISTER(wsp,      0 | D_REG  |SPR | Arch_aarch64, "aarch64");
1381       DEF_REGISTER(pc,       1 | FULL   |SPR | Arch_aarch64, "aarch64");
1382       DEF_REGISTER(pstate,   2 | D_REG  |SPR | Arch_aarch64, "aarch64");
1383       DEF_REGISTER(xzr,          3 | FULL   |SPR | Arch_aarch64, "aarch64");
1384       DEF_REGISTER(n,   N_FLAG | BIT    |FLAG| Arch_aarch64, "aarch64");
1385       DEF_REGISTER(z,   Z_FLAG | BIT    |FLAG| Arch_aarch64, "aarch64");
1386       DEF_REGISTER(c,   C_FLAG | BIT    |FLAG| Arch_aarch64, "aarch64");
1387       DEF_REGISTER(v,   V_FLAG | BIT    |FLAG| Arch_aarch64, "aarch64");
1388       DEF_REGISTER(wzr,          3 | D_REG  |SPR | Arch_aarch64, "aarch64");
1389       DEF_REGISTER(fpcr,     4 | D_REG  |SPR | Arch_aarch64, "aarch64");
1390       DEF_REGISTER(fpsr,     5 | D_REG  |SPR | Arch_aarch64, "aarch64");
1391
1392         }       //end of aarch64 namespace
1393 }
1394
1395 #endif