|
964
|
1 //============================================================================= |
|
|
2 // |
|
|
3 // openrisc_opcode.h |
|
|
4 // |
|
|
5 // Define the instruction formats and opcode values for the OpenRISC |
|
|
6 // instruction set...or at least just enough of them to implement |
|
|
7 // single-stepping. |
|
|
8 // |
|
|
9 //============================================================================= |
|
|
10 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
|
11 // ------------------------------------------- |
|
|
12 // This file is part of eCos, the Embedded Configurable Operating System. |
|
|
13 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
|
14 // |
|
|
15 // eCos is free software; you can redistribute it and/or modify it under |
|
|
16 // the terms of the GNU General Public License as published by the Free |
|
|
17 // Software Foundation; either version 2 or (at your option) any later version. |
|
|
18 // |
|
|
19 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
|
20 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
|
21 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
|
22 // for more details. |
|
|
23 // |
|
|
24 // You should have received a copy of the GNU General Public License along |
|
|
25 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
|
26 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
|
27 // |
|
|
28 // As a special exception, if other files instantiate templates or use macros |
|
|
29 // or inline functions from this file, or you compile this file and link it |
|
|
30 // with other works to produce a work based on this file, this file does not |
|
|
31 // by itself cause the resulting work to be covered by the GNU General Public |
|
|
32 // License. However the source code for this file must still be made available |
|
|
33 // in accordance with section (3) of the GNU General Public License. |
|
|
34 // |
|
|
35 // This exception does not invalidate any other reasons why a work based on |
|
|
36 // this file might be covered by the GNU General Public License. |
|
|
37 // |
|
|
38 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
|
39 // at http://sources.redhat.com/ecos/ecos-license/ |
|
|
40 // ------------------------------------------- |
|
|
41 //####ECOSGPLCOPYRIGHTEND#### |
|
|
42 //============================================================================= |
|
|
43 //#####DESCRIPTIONBEGIN#### |
|
|
44 // |
|
|
45 // Author(s): sfurman |
|
|
46 // Contributors: |
|
|
47 // Date: 2003-02-28 |
|
|
48 // Purpose: Allow dissection of OpenRISC instructions |
|
|
49 // Description: The types and macros defined here define the instruction |
|
|
50 // formats of the OpenRISC instruction set...or at least the |
|
|
51 // very limited subset necessary to allow single-stepping. |
|
|
52 // |
|
|
53 //####DESCRIPTIONEND#### |
|
|
54 // |
|
|
55 //============================================================================= |
|
|
56 |
|
|
57 #ifndef _OPENRISC_OPCODE_H |
|
|
58 #define _OPENRISC_OPCODE_H |
|
|
59 |
|
|
60 |
|
|
61 // Define the instruction formats. |
|
|
62 typedef union { |
|
|
63 unsigned word; |
|
|
64 |
|
|
65 // (Possibly conditional) relative jump w/ immediate displacement |
|
|
66 struct { |
|
|
67 unsigned op: 6; // OP_J, OP_JAL, OP_BNF, or OP_BF |
|
|
68 signed target: 26; |
|
|
69 } JType; |
|
|
70 |
|
|
71 // Absolute jump w/ register contents used as PC target address |
|
|
72 struct { |
|
|
73 unsigned op: 6; // OP_JR or OP_JALR |
|
|
74 unsigned unused1:10; |
|
|
75 unsigned rB: 5; // Register containing new PC |
|
|
76 unsigned unused2:11; |
|
|
77 } JRType; |
|
|
78 |
|
|
79 } InstFmt; |
|
|
80 |
|
|
81 /* |
|
|
82 * Values for the 'op' field. |
|
|
83 */ |
|
|
84 #define OP_J 0x00 |
|
|
85 #define OP_JAL 0x01 |
|
|
86 #define OP_BNF 0x03 |
|
|
87 #define OP_BF 0x04 |
|
|
88 #define OP_RFE 0x09 |
|
|
89 #define OP_JR 0x11 |
|
|
90 #define OP_JALR 0x12 |
|
|
91 |
|
|
92 #endif /* _OPENRISC_OPCODE_H */ |
|
|
93 |
|
|
94 // EOF openrisc_opcode.h |