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

Subversion Repositories thor

[/] [thor/] [trunk/] [rtl/] [verilog/] [Thor_defines.v] - Blame information for rev 42

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 robfinch
// ============================================================================
2
//        __
3 42 robfinch
//   \\__/ o\    (C) 2013-2016  Robert Finch, Stratford
4 3 robfinch
//    \  __ /    All rights reserved.
5
//     \/_//     robfinch<remove>@finitron.ca
6
//       ||
7
//
8
// This source file is free software: you can redistribute it and/or modify 
9
// it under the terms of the GNU Lesser General Public License as published 
10
// by the Free Software Foundation, either version 3 of the License, or     
11
// (at your option) any later version.                                      
12
//                                                                          
13
// This source file is distributed in the hope that it will be useful,      
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of           
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            
16
// GNU General Public License for more details.                             
17
//                                                                          
18
// You should have received a copy of the GNU General Public License        
19
// along with this program.  If not, see <http://www.gnu.org/licenses/>.    
20
//
21
//
22
// Thor Scaler
23
//
24
// ============================================================================
25
//
26
`ifndef THOR_DEFINES
27
`define THOR_DEFINES    1'b1
28
 
29 42 robfinch
//`define SIMULATION      1'b1
30
//`define SEGMENTATION  1'b1
31
//`define VECTOROPS     1'b1
32 10 robfinch
//`define SEGLIMITS       1'b1
33 3 robfinch
//`define STACKOPS        1'b1
34 10 robfinch
//`define UNLINKOP        1'b1
35 3 robfinch
//`define BITFIELDOPS     1'b1
36
//`define FLOATING_POINT        1'b1
37
`define STRINGOPS       1'b1
38 10 robfinch
//`define DEBUG_LOGIC     1'b1
39 3 robfinch
//`define THREEWAY    1'b1
40 10 robfinch
//`define TRAP_ILLEGALOPS 1'b1
41 13 robfinch
//`define PRIVCHKS        1'b1
42
//`define PCHIST      1'b1      // Primarily for debugging the processor
43 3 robfinch
 
44
`define TRUE    1'b1
45
`define FALSE   1'b0
46
`define INV             1'b0
47
`define VAL             1'b1
48
`define ZERO            64'd0
49
 
50
 
51 9 robfinch
`define TST                     4'b0000
52
`define CMP                     4'b0001
53
`define CMPI            4'b0010
54
`define BR                      4'b0011
55 3 robfinch
 
56
`define RR                      8'h40
57
`define ADD                             6'h00
58
`define SUB                             6'h01
59
`define MUL                             6'h02
60
`define DIV                             6'h03
61
`define ADDU                    6'h04
62
`define SUBU                    6'h05
63
`define MULU                    6'h06
64
`define DIVU                    6'h07
65
`define _2ADDU                  6'h08
66
`define _4ADDU                  6'h09
67
`define _8ADDU                  6'h0A
68
`define _16ADDU                 6'h0B
69
`define MIN             6'h10
70
`define MAX             6'h11
71 13 robfinch
`define MOD             6'h13
72 42 robfinch
`define CHKX            6'h14
73
`define CHK             6'h15
74 13 robfinch
`define MODU            6'h17
75 3 robfinch
`define R2          8'h41
76
`define CPUID           4'h0
77
`define REDOR           4'h1    // reduction or
78
`define REDAND          4'h2    // reduction and
79
`define PAR             4'h3    // parity
80
`define P           8'h42
81
`define PAND            6'd0
82
`define POR             6'd1
83
`define PEOR            6'd2
84
`define PNAND           6'd3
85
`define PNOR            6'd4
86
`define PENOR           6'd5
87
`define PANDC           6'd6
88
`define PORC            6'd7
89 42 robfinch
`define CHKI        8'h45
90 3 robfinch
`define BITI        8'h46
91
`define ADDUIS      8'h47
92
`define ADDI            8'h48
93
`define SUBI            8'h49
94
`define MULI            8'h4A
95
`define DIVI            8'h4B
96
`define ADDUI           8'h4C
97
`define SUBUI           8'h4D
98
`define MULUI           8'h4E
99
`define DIVUI           8'h4F
100
`define LOGIC           8'h50
101
`define AND                             6'h0
102
`define OR                              6'h1
103
`define EOR                             6'h2
104
`define NAND                    6'h3
105
`define NOR                             6'h4
106
`define ENOR                    6'h5
107
`define ANDC                    6'h6
108
`define ORC                             6'h7
109
`define MLO         8'h51
110
`define ANDI            8'h53
111
`define ORI                     8'h54
112
`define EORI            8'h55
113 42 robfinch
`define VR      8'h56
114
`define VEX       6'h0
115
`define VEINS     6'h1
116
`define VSHLV     6'h2
117
`define VSHRV     6'h3
118
`define VFLT2INT  6'h4
119
`define VINT2FLT  6'h5
120
`define VBITS2V   6'h6
121
`define VRR     8'h57
122
`define VADD      5'h00
123
`define VSUB      5'h01
124
`define VMUL      5'h02
125
`define VDIV      5'h03
126
`define VSCALE    5'h05
127
`define VCMP      5'h06
128
`define VAND      5'h08
129
`define VOR       5'h09
130
`define VEOR      5'h0A
131
`define VADDL     5'h10
132
`define VSUBL     5'h11
133
`define VMULL     5'h12
134
`define VDIVL     5'h13
135
`define VSCALEL   5'h15
136
`define VCMPL     5'h16
137
`define VANDL     5'h18
138
`define VORL      5'h19
139
`define VEORL     5'h1A
140 3 robfinch
 
141
`define SHIFT           8'h58
142
`define SHL                             6'h00
143
`define SHR                             6'h01
144
`define SHLU                    6'h02
145
`define SHRU                    6'h03
146
`define ROL                             6'h04
147
`define ROR                             6'h05
148
`define SHLI                    6'h10
149
`define SHRI                    6'h11
150
`define SHLUI                   6'h12
151
`define SHRUI                   6'h13
152
`define ROLI                    6'h14
153
`define RORI                    6'h15
154 42 robfinch
`define VMAC    8'h5A
155
`define MODI    8'h5B
156
`define CHKXI   8'h5D
157
`define MODUI   8'h5F
158 3 robfinch
 
159 42 robfinch
`define LLA       8'h6A       // compute linear address
160 3 robfinch
`define _2ADDUI         8'h6B
161
`define _4ADDUI         8'h6C
162
`define _8ADDUI         8'h6D
163
`define _16ADDUI        8'h6E
164
`define LDI                     8'h6F
165
 
166
`define MUX                     8'h72
167
 
168
`define FSTAT           8'h73
169
`define FRM                     8'h74
170
`define FTX                     8'h75
171
`define DOUBLE_R    8'h77
172
`define FMOV            4'h00
173
`define FTOI                4'h02
174
`define ITOF                4'h03
175
`define FNEG                    4'h04
176
`define FABS                    4'h05
177
`define FSIGN                   4'h06
178
`define FMAN            4'h07
179
`define FNABS           4'h08
180
`define FSTAT           4'h0C
181
`define FRM             4'h0D
182
`define FLOAT           8'h78
183
`define FCMP            6'h07
184
`define FADD                    6'h08
185
`define FSUB                    6'h09
186
`define FMUL                    6'h0A
187
`define FDIV                    6'h0B
188
`define FCMPS           6'h17
189
`define FADDS           6'h18
190
`define FSUBS           6'h19
191
`define FMULS           6'h1A
192
`define FDIVS           6'h1B
193
`define SINGLE_R    8'h79
194
`define FMOVS           4'h00
195
`define FTOIS               4'h02
196
`define ITOFS               4'h03
197
`define FNEGS                   4'h04
198
`define FABSS                   4'h05
199
`define FSIGNS                  4'h06
200
`define FMANS           4'h07
201
`define FNABSS          4'h08
202
`define FTX             4'h0C
203
`define FCX             4'h0D
204
`define FEX             4'h0E
205
`define FDX             4'h0F
206
 
207
`define LB                      8'h80
208
`define LBU                     8'h81
209
`define LC                      8'h82
210
`define LCU                     8'h83
211
`define LH                      8'h84
212
`define LHU                     8'h85
213
`define LW                      8'h86
214
`define LFS                     8'h87
215
`define LFD                     8'h88
216 42 robfinch
`define LVWAR   8'h8B
217
`define SWCR    8'h8C
218 10 robfinch
`define JMPI            8'h8D
219 3 robfinch
`define LWS                     8'h8E
220 42 robfinch
`define LCL               8'h8F
221 3 robfinch
 
222
`define SB                      8'h90
223
`define SC                      8'h91
224
`define SH                      8'h92
225
`define SW                      8'h93
226
`define SFS                     8'h94
227
`define SFD                     8'h95
228
`define STI                     8'h96
229
`define CAS                     8'h97
230
`define STS             8'h98
231
`define STMV        8'h99
232
`define STCMP       8'h9A
233
`define STFND       8'h9B
234
 
235
`define LDIT10          8'h9C
236
`define LDIS            8'h9D
237
`define SWS                     8'h9E
238
`define CACHE           8'h9F
239
 
240
// Flow control Opcodes
241
`define JSRZ        8'hA0
242
`define JSRS        8'hA1
243
`define JSR                     8'hA2
244
`define RTS                     8'hA3
245
`define LOOP            8'hA4
246
`define SYS                     8'hA5
247
`define INT                     8'hA6
248
`define R           8'hA7
249
`define MOV                         4'h0
250
`define NEG                         4'h1
251
`define NOT                         4'h2
252
`define ABS             4'h3
253
`define SGN             4'h4
254
`define CNTLZ           4'h5
255
`define CNTLO           4'h6
256
`define CNTPOP          4'h7
257
`define SXB             4'h8
258
`define SXC             4'h9
259
`define SXH             4'hA
260
`define COM             4'hB
261
`define ZXB             4'hC
262
`define ZXC             4'hD
263
`define ZXH             4'hE
264
`define MFSPR           8'hA8
265
`define MTSPR           8'hA9
266
 
267
`define BITFIELD        8'hAA
268
`define BFINS                   4'h0
269
`define BFSET                   4'h1
270
`define BFCLR                   4'h2
271
`define BFCHG                   4'h3
272
`define BFEXTU                  4'h4
273
`define BFEXT                   4'h5
274 9 robfinch
`define BFINSI          4'd6
275 3 robfinch
 
276
`define MOVS            8'hAB
277
// Uncached access instructions
278
`define LVB                     8'hAC
279
`define LVC                     8'hAD
280
`define LVH                     8'hAE
281
`define LVW                     8'hAF
282
 
283
`define LBX                     8'hB0
284
`define LBUX            8'hB1
285
`define LCX                     8'hB2
286
`define LCUX            8'hB3
287
`define LHX                     8'hB4
288
`define LHUX            8'hB5
289
`define LWX                     8'hB6
290 42 robfinch
`define JMPIX   8'hB7
291
`define LLAX    8'hB8
292
`define LV      8'hBD
293
`define LVWS    8'hBE
294
`define LVX     8'hBF
295 3 robfinch
 
296
`define SBX                     8'hC0
297
`define SCX                     8'hC1
298
`define SHX                     8'hC2
299
`define SWX                     8'hC3
300 42 robfinch
`define STIX    8'hC6
301
`define INC     8'hC7
302
`define PUSH    8'hC8
303
`define PEA     8'hC9
304
`define POP     8'hCA
305
`define LINK    8'hCB
306
`define UNLINK  8'hCC
307
`define SV      8'hCD
308
`define SVWS    8'hCE
309
`define SVX     8'hCF
310 3 robfinch
 
311
`define TLB                     8'hF0
312
`define TLB_NOP                 4'd0
313
`define TLB_P                   4'd1
314
`define TLB_RD                  4'd2
315
`define TLB_WR                  4'd3
316
`define TLB_WI                  4'd4
317
`define TLB_EN                  4'd5
318
`define TLB_DIS                 4'd6
319
`define TLB_RDREG               4'd7
320
`define TLB_WRREG               4'd8
321
`define TLB_INVALL              4'd9
322
`define NOP                     8'hF1
323
 
324
`define TLBWired                4'h0
325
`define TLBIndex                4'h1
326
`define TLBRandom               4'h2
327
`define TLBPageSize             4'h3
328
`define TLBVirtPage             4'h4
329
`define TLBPhysPage             4'h5
330
`define TLBASID                 4'h7
331
`define TLBDMissAdr             4'd8
332
`define TLBIMissAdr             4'd9
333
`define TLBPageTblAddr  4'd10
334
`define TLBPageTblCtrl  4'd11
335
 
336
`define RTS2        8'hF2
337
`define RTE                     8'hF3
338
`define RTI                     8'hF4
339
`define BCD                     8'hF5
340
`define BCDADD                  8'h00
341
`define BCDSUB                  8'h01
342
`define BCDMUL                  8'h02
343
`define STP         8'hF6
344
`define SYNC        8'hF7
345
`define MEMSB           8'hF8   // synchronization barrier
346
`define MEMDB           8'hF9   // data barrier
347
`define CLI                     8'hFA
348
`define SEI                     8'hFB
349 42 robfinch
`define RTD     8'hFC
350
`define RTF     8'hFD
351
`define JSF     8'hFE
352 3 robfinch
`define IMM                     8'hFF
353
 
354
`define PREDC   3:0
355
`define PREDR   7:4
356
`define OPCODE  15:8
357
`define RA              21:16
358
`define RB              27:22
359
`define INSTRUCTION_RA  21:16
360
`define INSTRUCTION_RB  27:22
361
`define INSTRUCTION_RC  33:28
362 42 robfinch
`define INSTRUCTION_RD  39:34
363 3 robfinch
 
364
`define XTBL    4'd12
365
`define EPC             4'd13
366
`define IPC             4'd14
367
 
368
// Special Registers
369
`define PREGS           6'h0x
370
`define CREGS                   6'h1x
371
`define SREGS                   6'h2x
372 42 robfinch
`define USP             6'h31
373 3 robfinch
`define TICK                    6'h32
374
`define LCTR                    6'h33
375 42 robfinch
`define PREGS_ALL               6'd52
376
`define ASID                    6'd53
377
`define VL        6'd54
378
`define SR                              6'h55
379
`define FPSCR     6'd56
380
`define ARG1      6'd58
381 3 robfinch
`define CLK_THROTTLE    6'h3F
382
 
383
// exception types:
384
`define EXC_NONE        4'd0
385
`define EXC_HALT        4'd1
386
`define EXC_TLBMISS     4'd2
387
`define EXC_SEGV        4'd3
388
`define EXC_INVALID     4'd4
389
`define EXC_SYS         4'd5
390
`define EXC_INT         4'd6
391
`define EXC_OFL         4'd7
392
`define EXC_DBE         4'd8            // databus error
393
`define EXC_DBZ         4'd9            // divide by zero
394
`define EXC_FLT     4'd10       // floating point exception
395
`define EXC_DBG     4'd11
396
`define EXC_PRIV    4'd12
397 37 robfinch
`define EXC_CHK     4'd13
398 42 robfinch
`define EXC_SEGLD   4'd14
399
 
400
`define EX_NONE     9'd000
401
`define EX_CHK      9'd239
402
`define EX_DBZ      9'd241
403
`define EX_FP       9'd242
404
`define EX_DBG      9'd243
405
`define EX_SEGV     9'd244
406
`define EX_PRIV     9'd245
407
`define EX_TLBMISS  9'd248
408
`define EX_DBE      9'd251
409
`define EX_SEGLD    9'd256
410
 
411 3 robfinch
//
412
// define PANIC types
413
//
414
`define PANIC_NONE              4'd0
415
`define PANIC_FETCHBUFBEQ       4'd1
416
`define PANIC_INVALIDISLOT      4'd2
417
`define PANIC_MEMORYRACE        4'd3
418
`define PANIC_IDENTICALDRAMS    4'd4
419
`define PANIC_OVERRUN           4'd5
420
`define PANIC_HALTINSTRUCTION   4'd6
421
`define PANIC_INVALIDMEMOP      4'd7
422
`define PANIC_INVALIDFBSTATE    4'd9
423
`define PANIC_INVALIDIQSTATE    4'd10
424
`define PANIC_BRANCHBACK        4'd11
425
`define PANIC_BADTARGETID       4'd12
426
 
427
`define DRAMSLOT_AVAIL  2'b00
428
`define DRAMREQ_READY   2'b11
429
 
430
`endif

powered by: WebSVN 2.1.0

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