OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [binutils-2.20.1/] [opcodes/] [microblaze-opcm.h] - Blame information for rev 846

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
/* 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 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.