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

Subversion Repositories or1k

[/] [or1k/] [tags/] [stable_0_2_0_rc1/] [gdb-5.0/] [opcodes/] [or32.h] - Blame information for rev 133

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

Line No. Rev Author Line
1 133 markom
/* Table of opcodes for the OpenRISC 1000 ISA.
2
   Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
3
   Contributed by Damjan Lampret (lampret@opencores.org).
4
 
5
This file is part of or1k_gen_isa, or1ksim, GDB and GAS.
6
 
7
This program 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 2 of the License, or
10
(at your option) any later version.
11
 
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
GNU General Public License for more details.
16
 
17
You should have received a copy of the GNU General Public License
18
along with this program; if not, write to the Free Software
19
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
20
 
21
/* We treat all letters the same in encode/decode routines so
22
   we need to assign some characteristics to them like signess etc.*/
23
 
24
#ifndef OR32_H_ISA
25
#define OR32_H_ISA
26
 
27
#define NUM_UNSIGNED 0
28
#define NUM_SIGNED 1
29
 
30
#ifndef PARAMS
31
#define PARAMS(x) x
32
#endif
33
 
34
#ifndef CONST
35
#define CONST const
36
#endif
37
 
38
struct or32_letter {
39
        char letter;
40
        int  sign;
41
        /* int  reloc; relocation per letter ??*/
42
};
43
 
44
 
45
#define OR32_IF_DELAY 1
46
 
47
struct or32_opcode {
48
  /* Name of the instruction.  */
49
  char *name;
50
 
51
  /* A string of characters which describe the operands.
52
     Valid characters are:
53
     ,() Itself.  Characters appears in the assembly code.
54
     rA  Register operand.
55
     rB  Register operand.
56
     rD  Register operand.
57
     I   An immediate operand, range -32768 to 32767.
58
     J   An immediate operand, range . (unused)
59
     K   An immediate operand, range 0 to 65535.
60
     L   An immediate operand, range 0 to 63.
61
     M   An immediate operand, range . (unused)
62
     N   An immediate operand, range -33554432 to 33554431.
63
     O   An immediate operand, range . (unused) */
64
  char *args;
65
 
66
  /* Opcode and operand encoding. */
67
  char *encoding;
68
  void (*exec)();
69
  unsigned int flags;
70
};
71
 
72
#ifdef HAS_EXECUTION
73
extern void l_invalid PARAMS((void));
74
extern void l_sfne PARAMS((void));
75
extern void l_bf PARAMS((void));
76
extern void l_add PARAMS((void));
77
extern void l_sw PARAMS((void));
78
extern void l_sb PARAMS((void));
79
extern void l_sh PARAMS((void));
80
extern void l_lwz PARAMS((void));
81
extern void l_lbs PARAMS((void));
82
extern void l_lbz PARAMS((void));
83
extern void l_lhs PARAMS((void));
84
extern void l_lhz PARAMS((void));
85
extern void l_movhi PARAMS((void));
86
extern void l_and PARAMS((void));
87
extern void l_or PARAMS((void));
88
extern void l_xor PARAMS((void));
89
extern void l_sub PARAMS((void));
90
extern void l_mul PARAMS((void));
91
extern void l_div PARAMS((void));
92
extern void l_divu PARAMS((void));
93
extern void l_sll PARAMS((void));
94
extern void l_sra PARAMS((void));
95
extern void l_srl PARAMS((void));
96
extern void l_j PARAMS((void));
97
extern void l_jal PARAMS((void));
98
extern void l_jalr PARAMS((void));
99
extern void l_jr PARAMS((void));
100
extern void l_rfe PARAMS((void));
101
extern void l_nop PARAMS((void));
102
extern void l_bnf PARAMS((void));
103
extern void l_sfeq PARAMS((void));
104
extern void l_sfgts PARAMS((void));
105
extern void l_sfges PARAMS((void));
106
extern void l_sflts PARAMS((void));
107
extern void l_sfles PARAMS((void));
108
extern void l_sfgtu PARAMS((void));
109
extern void l_sfgeu PARAMS((void));
110
extern void l_sfltu PARAMS((void));
111
extern void l_sfleu PARAMS((void));
112
extern void l_mtspr PARAMS((void));
113
extern void l_mfspr PARAMS((void));
114
extern void l_sys PARAMS((void));
115
extern void l_macrc PARAMS((void));
116
extern void l_mac PARAMS((void));
117
extern void l_msb PARAMS((void));
118
extern void l_invalid PARAMS((void));
119
#endif
120
extern void l_none PARAMS((void));
121
 
122
extern CONST struct or32_letter or32_letters[];
123
 
124
extern CONST struct  or32_opcode or32_opcodes[];
125
 
126
extern CONST unsigned int num_opcodes;
127
 
128
/* Calculates instruction length in bytes. Either 2 or 4 for OR16
129
   and always 4 for OR32. */
130
extern int insn_len PARAMS((int insn_index));
131
 
132
/* Is individual insn's operand signed or unsigned? */
133
extern int letter_signed PARAMS((char l));
134
 
135
/* Number of letters in the individual lettered operand. */
136
extern int letter_range PARAMS((char l));
137
 
138
/* MM: Returns index of given instruction name.  */
139
extern int insn_index (char *insn);
140
 
141
extern CONST char *insn_name (int index);
142
#endif

powered by: WebSVN 2.1.0

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