summaryrefslogblamecommitdiffstats
path: root/c/src/lib/start/a29k/amd.ah
blob: 69f34f173ea8489b28c3ab795cc2c60bd0aecf57 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517




































































































































































































































































































































































































































































































































                                                                             
; /* @(#)amd.ah	1.1 96/05/23 08:56:58, TEI */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;		 Initialization values for registers after RESET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  /* $Id$ */
;
;* File information and includes.

        .file   "amd.ah"
        .ident  "@(#)amd.ah	1.1 96/05/23 08:56:58, TEI"



;
;* AMD PROCESSOR SPECIFIC VALUES...
;

;
;* Processor revision levels...
;

; PRL values: 31-28   27-24
; Am29000	0	x
; Am29005	1	x
; Am29050	2	x
; Am29035	3	x
; Am29030	4	x
; Am29200	5	x
; Am29205	5	1x
; Am29240	6	0
; Manx		7	0
; Cougar	8	0


	.equ	AM29000_PRL, 	0x00

	.equ	AM29005_PRL, 	0x10

	.equ	AM29050_PRL, 	0x20

	.equ	AM29035_PRL, 	0x30

	.equ	AM29030_PRL, 	0x40

	.equ	AM29200_PRL, 	0x50

	.equ	AM29205_PRL, 	0x58

	.equ	AM29240_PRL, 	0x60

	.equ	AM29040_PRL, 	0x70

	.equ	MANX_PRL,  	0x70

	.equ	COUGAR_PRL, 	0x80

;
;* data structures sizes.
;
	.equ	CFGINFO_SIZE,	16*4

	.equ	PGMINFO_SIZE,	16*4

	.equ	VARARGS_SPACE,	16*4

	.equ	WINDOWSIZE,	0x80
;
;* Am29027 Mode registers
;

	.equ	Am29027Mode1, 0x0fc00820

	.equ	Am29027Mode2, 0x00001375
	


;* Processor Based Equates and Defines

	.equ	SIG_SYNC,	-1	

	.equ	ENABLE,		(SM)

	.equ	DISABLE,	(ENABLE | DI | DA)

	.equ	DISABLE_FZ,	(FZ | ENABLE | DI | DA)

	.equ	CLR_TRAP,	(FZ | DA)	

	.equ	InitOPS,	(TD | SM | (3<<IMShift) | DI | DA) 
	
	.equ	InitCPS,	(TD | SM | (0<<IMShift) | DI | DA) 

	.equ	InitCPS1,	(TD | SM | (0<<IMShift) | DI ) 

	.equ	CPS_TMR,	(SM | (0<<IMShift) | DI)

	.equ	CPS_INT0,	(TD | SM | (0<<IMShift))

	.equ	CPS_TMRINT0,	(SM | (0<<IMShift))

	.equ	InitCFG,	0x0 

	.equ	InitRBP,	(B0|B1|B2|B3|B4|B5)

	.equ	TMC_VALUE,	0xFFFFFF

	.equ	TMR_VALUE,	(IE | TMC_VALUE)






;* 29205 specific (internal) peripheral initialization constants.

; Current Processor Status (CPS) Register.
; Old Processor Status Register (OPS).

	.equ	DA,	0x00001
	.equ	DI,	0x00002
	.equ	IMShift,0x2
	.equ	SM,	0x00010
	.equ	PI,	0x00020
	.equ	PD,	0x00040
	.equ	WM,	0x00080
	.equ	RE, 	0x00100
	.equ	LK,	0x00200
	.equ	FZ, 	0x00400
	.equ	TU,	0x00800
	.equ	TP,	0x01000
	.equ	TE,	0x02000
	.equ	IP,	0x04000
	.equ	CA,	0x08000
	.equ	MM,	0x10000
	.equ	TD,	0x20000

; Configuration Register (CFG)

	.equ	CD,	0x01
	.equ	CP,	0x02
	.equ	BO,	0x04
	.equ	RV, 	0x08
	.equ	VF,	0x10
	.equ	DW,	0x20
	.equ	CO,	0x40
	.equ	EE,	0x80
	.equ	IDShift,	8
	.equ	CFG_ID,	0x100
	.equ	ILShift,	9
	.equ	CFG_ILMask,	0x600
	.equ	DDShift,	11
	.equ	CFG_DD,	0x800
	.equ	DLShift,	12
	.equ	CFG_DLMask,	0x3000
	.equ	PCEShift, 	14
	.equ	CFG_PCE,	0x4000
	.equ	PMBShift, 	16
	.equ	D16,	0x8000
	.equ	TBOShift,	23
	.equ	PRLShift, 24

; Channel Control Register (CHC)

	.equ	CV, 0x1
	.equ	NN, 0x2
	.equ	TRShift, 2
	.equ	TF, 0x400
	.equ	PER, 0x800
	.equ	LA, 0x1000
	.equ	ST, 0x2000
	.equ	ML, 0x4000
	.equ	LS, 0x8000
	.equ 	CRShift, 16
	.equ	CNTLShift, 24
	.equ	CEShift, 31
	.equ	WBERShift, 31

; Register Bank Protect (RBP)
	.equ	B0, 0x1
	.equ	B1, 0x2
	.equ	B2, 0x4
	.equ	B3, 0x8
	.equ	B4, 0x10
	.equ	B5, 0x20
	.equ	B6, 0x40
	.equ	B7, 0x80
	.equ	B8, 0x100
	.equ	B9, 0x200
	.equ	B10, 0x400
	.equ	B11, 0x800
	.equ	B12, 0x1000
	.equ	B13, 0x2000
	.equ	B14, 0x4000
	.equ	B15, 0x8000

; Timer Counter

	.equ	TCVMask, 0xffffff

; Timer Reload Register

	.equ	IE, 0x1000000
	.equ	IN, 0x2000000
	.equ	OV, 0x4000000
	.equ	TRVMAsk, 0xffffff

; MMU Configuration

	.equ	PSShift, 8
	.equ	PS0Shift, 8
	.equ	PS1Shift, 12

; LRU Recommendation (LRU)
	.equ	LRUMask, 0xff

; Reason Vector (RSN)
	.equ 	RSNMask, 0xff

; Region Mapping Address (RMA0 | RMA1)
	.equ	PBAMask,0xffff
	.equ	VBAShift, 16

; Region Mapping Control (RMC0 | RMC1)
	.equ	TIDMask, 0xff
	.equ	RMC_UE, 0x100
	.equ	RMC_UW, 0x200
	.equ	RMC_UR, 0x400
	.equ	RMC_SE, 0x800
	.equ	RMC_SW, 0x1000
	.equ	RMC_SR, 0x2000
	.equ	RMC_VE, 0x4000
	.equ	RMC_IO, 0x10000
	.equ	RGSShift, 17
	.equ	RMC_PGMShift, 22

; Instruction breakpoint Control (IBC0 | IBC1)
	.equ	BPIDMask, 0xff
	.equ	BTE, 0x100
	.equ	BRM, 0x200
	.equ	IBC_BSY, 0x400
	.equ	BEN, 0x800
	.equ	BHO, 0x1000

; Cache Data Register (CDR)
	.equ	CDR_US, 0x1
	.equ	P, 0x2
	.equ	CDR_V, 0x4
	.equ	IATAGShift, 20

; Cache Interface Register (CIR)
	.equ	CPTRShift, 2
	.equ	CIR_RW, 0x1000000
	.equ	FSELShift, 28

; Indirect Pointer A, B, C (IPA, IPB, IPC)
	.equ	IPShift, 2

; ALU Status (ALU)
	.equ	FCMask, 0x1F
	.equ	BPShift, 5
	.equ	C, 0x80
	.equ	Z, 0x100
	.equ	N, 0x200
	.equ	ALU_V, 0x400
	.equ	DF, 0x800

; Byte Pointer
	.equ	BPMask, 0x3

; Load/Store Count Remaining (CR)
	.equ	CRMask, 0xff

; Floating Point Environment (FPE)
	.equ	NM, 0x1
	.equ	RM, 0x2
	.equ	VM, 0x4
	.equ	UM, 0x8
	.equ	XM, 0x10
	.equ	DM, 0x20
	.equ 	FRMShift, 6
	.equ	FF, 0x100
	.equ	ACFShift, 9

; Integer Environment (INTE)
	.equ	MO, 0x1
	.equ	DO, 0x2

; Floating Point Status (FPS)
	.equ	NS, 0x1
	.equ	RS, 0x2
	.equ	VS, 0x4
	.equ	FPS_US, 0x8
	.equ	XS, 0x10
	.equ	DS, 0x20
	.equ	NT, 0x100
	.equ	RT, 0x200
	.equ	VT, 0x400
	.equ	UT, 0x800
	.equ	XT, 0x1000
	.equ	DT, 0x2000

; Exception Opcode (EXOP)
	.equ	IOPMask, 0xff

; TLB Entry Word 0
;	.equ	TIDMask, 0xff	already defined above
	.equ	TLB_UE, 0x100
	.equ	TLB_UW, 0x200
	.equ	TLB_UR, 0x400
	.equ	TLB_SE, 0x800
	.equ	TLB_SW, 0x1000
	.equ	TLB_SR, 0x2000
	.equ	TLB_VE, 0x4000
	.equ	VTAGShift, 15

; TLB Entry Word 1
	.equ	TLB_IO, 0x1
	.equ	U, 0x2
	.equ	TLB_PGMShift, 6
	.equ	RPNShift, 10

; Am29200 ROM Control bits.
	.equ	RMCT_DW0Shift, 29
	.equ	RMCT_DW1Shift, 21
	.equ	RMCT_DW2Shift, 13
	.equ	RMCT_DW3Shift, 5

; Am29200 DRAM Control bits.
	.equ	DW3, (1<<18)
	.equ	DW2, (1<<22)
	.equ	DW1, (1<<26)
	.equ	DW0, (1<<30)

	; Internal peripheral address assignments.
	.equ	RMCT, 0x80000000
	.equ	RMCF, 0x80000004
	.equ	DRCT, 0x80000008
	.equ	DRCF, 0x8000000C
	.equ	DRM0, 0x80000010
	.equ	DRM1, 0x80000014
	.equ	DRM2, 0x80000018
	.equ	DRM3, 0x8000001C
	.equ	PIACT0, 0x80000020
	.equ	PIACT1, 0x80000020
	.equ	ICT, 0x80000028
	.equ	DMCT0, 0x80000030
	.equ	DMAD0, 0x80000034
	.ifdef	revA
	.equ	TAD0, 0x80000036
	.equ	TCN0, 0x8000003A
	.else
	.equ	TAD0, 0x80000070	; default
	.equ	TCN0, 0x8000003C	; default
	.endif
	.equ	DMCN0, 0x80000038
	.equ	DMCT1, 0x80000040
	.equ	DMAD1, 0x80000044
	.equ	DMCN1, 0x80000048
	.equ	SPCT, 0x80000080
	.equ	SPST, 0x80000084
	.equ	SPTH, 0x80000088
	.equ	SPRB, 0x8000008C
	.equ	BAUD, 0x80000090
	.equ	PPCT, 0x800000C0
	.equ	PPST, 0x800000C1
	.equ	PPDT, 0x800000C4
	.equ	POCT, 0x800000D0
	.equ	PIN, 0x800000D4
	.equ	POUT, 0x800000D8
	.equ	POEN, 0x800000DC
	.equ	VCT, 0x800000E0
	.equ	TOP, 0x800000E4
	.equ	SIDE, 0x800000E8
	.equ	VDT, 0x800000EC

	; Interrupt Controller Register bits.
	.equ	TXDI,	(1<<5)
	.equ	RXDI,	(1<<6)
	.equ	RXSI,	(1<<7)
	.equ	PPI,	(1<<11)
	.equ	DMA1I,	(1<<13)
	.equ	DMA0I,	(1<<14)
	.equ	IOPIMask,	(0xFF<<16)
	.equ	VDI,	(1<<27)
	.equ	ICT200_I,  (TXDI|RXDI|RXSI|PPI|DMA1I|DMA0I|IOPIMask|VDI)
	.equ	ICT205_I,  (TXDI|RXDI|RXSI|PPI|DMA1I|DMA0I|IOPIMask|VDI)

	; Serial port Initialization bits
	.equ	NO_PARITY,	0
	

	; SPST bits
	.equ	THREShift, 22

;* REGISTER Addresses

	.equ	ROMCntlRegAddr,		0x80000000

	.equ	ROMCfgRegAddr, 		0x80000004

	.equ	DRAMCntlRegAddr,	0x80000008

	.equ	DRAMCfgRegAddr,		0x8000000C

	.equ	DRAMMap0RegAddr,	0x80000010

	.equ	DRAMMap1RegAddr,	0x80000014

	.equ	DRAMMap2RegAddr,	0x80000018

	.equ	DRAMMap3RegAddr,	0x8000001C

	.equ	PIACntl0RegAddr,	0x80000020

	.equ	PIACntl1RegAddr,	0x80000024

	.equ	INTRCntlRegAddr,	0x80000028

	.equ	DMACntl0RegAddr,	0x80000030

	.equ	DMACntl1RegAddr,	0x80000040

	.equ	SERPortCntlRegAddr,	0x80000080

	.equ	SERPortStatRegAddr,	0x80000084

	.equ	SERPortTHLDRegAddr,	0x80000088

	.equ	SERPortRbufRegAddr,	0x8000008C

	.equ	SERPortBaudRegAddr,	0x80000090

	.equ	PARPortCntlRegAddr,	0x800000C0

	.equ	PIOCntlRegAddr,		0x800000D0

	.equ	PIOInpRegAddr,		0x800000D4

	.equ	PIOOutRegAddr,		0x800000D8

	.equ	PIOOutEnaRegAddr,	0x800000DC

	.equ	VCTCntlRegAddr,		0x800000E0

;
;* Control constants
;

;* AM29030 Timer related constants.

	.equ	TMR_IE,			0x01000000

	.equ	TMR_IN,			0x02000000

	.equ	TMR_OV,			0x04000000

	.equ	TMC_INITCNT, 		1613

;
;* System initialization values.
;

	.equ	__os_version,		0x0001		;

	.equ	STACKSize,		0x8000		;

	.equ	PGMExecMode,		0x0000		;

	.equ	TSTCK_OFST,		28 * 4

	.equ	CSTCK_OFST,		29 * 4

	.equ	TMSTCK_OFST,		30 * 4

	.equ	CMSTCK_OFST,		31 * 4

	.equ	CTXSW_OK, 		0xA55A		; ctx switch ok

	.set	NV_STARTOFST,		0x20		; 32 bytes

	.set	NV_BAUDOFST,		0x00		; 00 bytes

	.set	reg_cir, 		29

	.set	reg_cdr, 		30

	.equ	MSG_BUFSIZE,		0x1000		; serial buffer size 

        .equ    ILLOPTRAP,      	0

        .equ    UATRAP,         	1

        .equ    PVTRAP,         	5

        .equ    UITLBMISSTRAP,  	8

        .equ    UDTLBMISSTRAP,  	9

        .equ    TIMERTRAP,      	14

        .equ    TRACETRAP,      	15

        .equ    XLINXTRAP,      	16

        .equ    SERIALTRAP,     	17

        .equ    SLOWTMRTRAP,    	18

        .equ    PORTTRAP,       	19

        .equ    SVSCTRAP,       	80

        .equ    SVSCTRAP1,       	81

        .equ    V_CACHETRAP,      	66		;

        .equ    V_SETSERVICE,      	67		;