Commit | Line | Data |
---|---|---|
7ba29e2a NC |
1 | /* microblaze-opcm.h -- Header used in microblaze-opc.h |
2 | ||
3 | Copyright 2009 Free Software Foundation, Inc. | |
4 | ||
5 | This file is part of the GNU opcodes library. | |
6 | ||
7 | This library is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3, or (at your option) | |
10 | any later version. | |
11 | ||
12 | It is distributed in the hope that it will be useful, but WITHOUT | |
13 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
14 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
15 | License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this file; see the file COPYING. If not, write to the | |
19 | Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, | |
20 | MA 02110-1301, USA. */ | |
21 | ||
22 | ||
23 | #ifndef MICROBLAZE_OPCM | |
24 | #define MICROBLAZE_OPCM | |
25 | ||
26 | enum microblaze_instr | |
27 | { | |
28 | add, rsub, addc, rsubc, addk, rsubk, addkc, rsubkc, cmp, cmpu, | |
29 | addi, rsubi, addic, rsubic, addik, rsubik, addikc, rsubikc, mul, | |
30 | mulh, mulhu, mulhsu, | |
31 | idiv, idivu, bsll, bsra, bsrl, get, put, nget, nput, cget, cput, | |
32 | ncget, ncput, muli, bslli, bsrai, bsrli, mului, or, and, xor, | |
33 | andn, pcmpbf, pcmpbc, pcmpeq, pcmpne, sra, src, srl, sext8, sext16, | |
34 | wic, wdc, wdcclear, wdcflush, mts, mfs, br, brd, | |
35 | brld, bra, brad, brald, microblaze_brk, beq, beqd, bne, bned, blt, | |
36 | bltd, ble, bled, bgt, bgtd, bge, bged, ori, andi, xori, andni, | |
37 | imm, rtsd, rtid, rtbd, rted, bri, brid, brlid, brai, braid, bralid, | |
38 | brki, beqi, beqid, bnei, bneid, blti, bltid, blei, bleid, bgti, | |
39 | bgtid, bgei, bgeid, lbu, lhu, lw, lwx, sb, sh, sw, swx, lbui, lhui, lwi, | |
40 | sbi, shi, swi, msrset, msrclr, tuqula, fadd, frsub, fmul, fdiv, | |
41 | fcmp_lt, fcmp_eq, fcmp_le, fcmp_gt, fcmp_ne, fcmp_ge, fcmp_un, flt, | |
42 | fint, fsqrt, | |
43 | tget, tcget, tnget, tncget, tput, tcput, tnput, tncput, | |
44 | eget, ecget, neget, necget, eput, ecput, neput, necput, | |
45 | teget, tecget, tneget, tnecget, teput, tecput, tneput, tnecput, | |
46 | aget, caget, naget, ncaget, aput, caput, naput, ncaput, | |
47 | taget, tcaget, tnaget, tncaget, taput, tcaput, tnaput, tncaput, | |
48 | eaget, ecaget, neaget, necaget, eaput, ecaput, neaput, necaput, | |
49 | teaget, tecaget, tneaget, tnecaget, teaput, tecaput, tneaput, tnecaput, | |
50 | getd, tgetd, cgetd, tcgetd, ngetd, tngetd, ncgetd, tncgetd, | |
51 | putd, tputd, cputd, tcputd, nputd, tnputd, ncputd, tncputd, | |
52 | egetd, tegetd, ecgetd, tecgetd, negetd, tnegetd, necgetd, tnecgetd, | |
53 | eputd, teputd, ecputd, tecputd, neputd, tneputd, necputd, tnecputd, | |
54 | agetd, tagetd, cagetd, tcagetd, nagetd, tnagetd, ncagetd, tncagetd, | |
55 | aputd, taputd, caputd, tcaputd, naputd, tnaputd, ncaputd, tncaputd, | |
56 | eagetd, teagetd, ecagetd, tecagetd, neagetd, tneagetd, necagetd, tnecagetd, | |
57 | eaputd, teaputd, ecaputd, tecaputd, neaputd, tneaputd, necaputd, tnecaputd, | |
58 | invalid_inst | |
59 | }; | |
60 | ||
61 | enum microblaze_instr_type | |
62 | { | |
63 | arithmetic_inst, logical_inst, mult_inst, div_inst, branch_inst, | |
64 | return_inst, immediate_inst, special_inst, memory_load_inst, | |
65 | memory_store_inst, barrel_shift_inst, anyware_inst | |
66 | }; | |
67 | ||
68 | #define INST_WORD_SIZE 4 | |
69 | ||
70 | /* Gen purpose regs go from 0 to 31. */ | |
71 | /* Mask is reg num - max_reg_num, ie reg_num - 32 in this case. */ | |
72 | ||
73 | #define REG_PC_MASK 0x8000 | |
74 | #define REG_MSR_MASK 0x8001 | |
75 | #define REG_EAR_MASK 0x8003 | |
76 | #define REG_ESR_MASK 0x8005 | |
77 | #define REG_FSR_MASK 0x8007 | |
78 | #define REG_BTR_MASK 0x800b | |
79 | #define REG_EDR_MASK 0x800d | |
80 | #define REG_PVR_MASK 0xa000 | |
81 | ||
82 | #define REG_PID_MASK 0x9000 | |
83 | #define REG_ZPR_MASK 0x9001 | |
84 | #define REG_TLBX_MASK 0x9002 | |
85 | #define REG_TLBLO_MASK 0x9003 | |
86 | #define REG_TLBHI_MASK 0x9004 | |
87 | #define REG_TLBSX_MASK 0x9005 | |
88 | ||
89 | #define MIN_REGNUM 0 | |
90 | #define MAX_REGNUM 31 | |
91 | ||
92 | #define MIN_PVR_REGNUM 0 | |
93 | #define MAX_PVR_REGNUM 15 | |
94 | ||
95 | #define REG_PC 32 /* PC. */ | |
96 | #define REG_MSR 33 /* Machine status reg. */ | |
97 | #define REG_EAR 35 /* Exception reg. */ | |
98 | #define REG_ESR 37 /* Exception reg. */ | |
99 | #define REG_FSR 39 /* FPU Status reg. */ | |
100 | #define REG_BTR 43 /* Branch Target reg. */ | |
101 | #define REG_EDR 45 /* Exception reg. */ | |
102 | #define REG_PVR 40960 /* Program Verification reg. */ | |
103 | ||
104 | #define REG_PID 36864 /* MMU: Process ID reg. */ | |
105 | #define REG_ZPR 36865 /* MMU: Zone Protect reg. */ | |
106 | #define REG_TLBX 36866 /* MMU: TLB Index reg. */ | |
107 | #define REG_TLBLO 36867 /* MMU: TLB Low reg. */ | |
108 | #define REG_TLBHI 36868 /* MMU: TLB High reg. */ | |
109 | #define REG_TLBSX 36869 /* MMU: TLB Search Index reg. */ | |
110 | ||
111 | /* Alternate names for gen purpose regs. */ | |
112 | #define REG_SP 1 /* stack pointer. */ | |
113 | #define REG_ROSDP 2 /* read-only small data pointer. */ | |
114 | #define REG_RWSDP 13 /* read-write small data pointer. */ | |
115 | ||
116 | /* Assembler Register - Used in Delay Slot Optimization. */ | |
117 | #define REG_AS 18 | |
118 | #define REG_ZERO 0 | |
119 | ||
120 | #define RD_LOW 21 /* Low bit for RD. */ | |
121 | #define RA_LOW 16 /* Low bit for RA. */ | |
122 | #define RB_LOW 11 /* Low bit for RB. */ | |
123 | #define IMM_LOW 0 /* Low bit for immediate. */ | |
124 | ||
125 | #define RD_MASK 0x03E00000 | |
126 | #define RA_MASK 0x001F0000 | |
127 | #define RB_MASK 0x0000F800 | |
128 | #define IMM_MASK 0x0000FFFF | |
129 | ||
130 | /* Imm mask for barrel shifts. */ | |
131 | #define IMM5_MASK 0x0000001F | |
132 | ||
133 | /* FSL imm mask for get, put instructions. */ | |
134 | #define RFSL_MASK 0x000000F | |
135 | ||
136 | /* Imm mask for msrset, msrclr instructions. */ | |
137 | #define IMM15_MASK 0x00007FFF | |
138 | ||
139 | #endif /* MICROBLAZE-OPCM */ |