165 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
| /****************************************************************************
 | |
| 
 | |
| 		THIS SOFTWARE IS NOT COPYRIGHTED
 | |
| 
 | |
|    HP offers the following for use in the public domain.  HP makes no
 | |
|    warranty with regard to the software or it's performance and the
 | |
|    user accepts the software "AS IS" with all faults.
 | |
| 
 | |
|    HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD
 | |
|    TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 | |
|    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
| ****************************************************************************/
 | |
| 
 | |
| 		/* Interrupt Vector Table entry macros */
 | |
| 
 | |
| #define	cstring(Len,String)	.byte	Len !\
 | |
| 				.string	String
 | |
| 
 | |
| #define	cstringz(Len,String)	.byte	Len !\
 | |
| 				.stringz	String
 | |
| 
 | |
| AdvancePCOQ	.macro
 | |
| 	mtctl	%r0,%pcoq	; throw away iiaoq head pointer, tail->head
 | |
| 	mfctl	%pcoq,%r1	; get tail pointer
 | |
| 	mtctl	%r1,%pcoq	; insert tail pointer
 | |
| 	ldo	4(%r1),%r1	; advance tail pointer
 | |
| 	mtctl	%r1,%pcoq	; insert new tail pointer, former tail->head
 | |
| 	.endm
 | |
| 
 | |
| #ifdef	PRINTSTRING_LED
 | |
| PrintString	.macro	NString,Num
 | |
| 	bl	put_led,%mrp
 | |
| 	ldi	Num+0xa0,%arg2
 | |
| 	addil	L%NString-$global$,%dp
 | |
| 	bl	puts,%rp
 | |
| 	ldo	R%NString-$global$(%r1),%arg0
 | |
| 	b,n	.
 | |
| 	nop
 | |
| 	.endm
 | |
| #endif
 | |
| 
 | |
| #ifdef	HALT
 | |
| 
 | |
| PrintString	.macro	NString,Num
 | |
| 	bl,n	save_state,%r25
 | |
| 	nop
 | |
| 	bl	print_intr,%rp
 | |
| 	ldi	NString-Str01,%arg0
 | |
| 	bl	print_state,%rp
 | |
| 	nop
 | |
| 	b,n	halt
 | |
| 	nop
 | |
| 	.endm
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #ifdef	RECOVER
 | |
| 
 | |
| PrintString	.macro	NString,Num
 | |
| 	bl,n	save_state,%r25
 | |
| 	nop
 | |
| 	bl	print_intr,%rp
 | |
| 	ldi	NString-Str01,%arg0
 | |
| 	bl	print_state,%rp
 | |
| 	nop
 | |
| 	b,n	recover
 | |
| 	nop
 | |
| 	.endm
 | |
| 
 | |
| #endif
 | |
| 
 | |
| PrintString	.macro	NString,Num
 | |
| 	bl,n	save_state,%r25
 | |
| 	nop
 | |
| 	bl	print_intr,%rp
 | |
| 	ldi	NString-Str01,%arg0
 | |
| #ifdef	FULL_REPORT
 | |
| 	bl	print_state,%rp
 | |
| #else
 | |
| 	nop
 | |
| #endif
 | |
| 	nop
 | |
| 	b	restore_to_STUB
 | |
|         ldi     Num,%r1
 | |
| 	.endm
 | |
| 
 | |
| 
 | |
| 	/* IVA register array offets */
 | |
| 
 | |
| #define	R_sr0		  0
 | |
| #define	R_sr1		  4
 | |
| #define	R_sr2		  8
 | |
| #define	R_sr3		 12
 | |
| #define	R_sr4		 16
 | |
| #define	R_sr5		 20
 | |
| #define	R_sr6		 24
 | |
| #define	R_sr7		 28
 | |
| 
 | |
| #define	R_gr0		 32
 | |
| #define	R_gr1		 36
 | |
| #define	R_gr2		 40
 | |
| #define	R_gr3		 44
 | |
| #define	R_gr4		 48
 | |
| #define	R_gr5		 52
 | |
| #define	R_gr6		 56
 | |
| #define	R_gr7		 60
 | |
| #define	R_gr8		 64
 | |
| #define	R_gr9		 68
 | |
| #define	R_gr10		 72
 | |
| #define	R_gr11		 76
 | |
| #define	R_gr12		 80
 | |
| #define	R_gr13		 84
 | |
| #define	R_gr14		 88
 | |
| #define	R_gr15		 92
 | |
| #define	R_gr16		 96
 | |
| #define	R_gr17		100
 | |
| #define	R_gr18		104
 | |
| #define	R_gr19		108
 | |
| #define	R_gr20		112
 | |
| #define	R_gr21		116
 | |
| #define	R_gr22		120
 | |
| #define	R_gr23		124
 | |
| #define	R_gr24		128
 | |
| #define	R_gr25		132
 | |
| #define	R_gr26		136
 | |
| #define	R_gr27		140
 | |
| #define	R_gr28		144
 | |
| #define	R_gr29		148
 | |
| #define	R_gr30		152
 | |
| #define	R_gr31		156
 | |
| 
 | |
| #define	R_rctr		160
 | |
| #define	R_cpu0		164
 | |
| #define	R_pidr1		168
 | |
| #define	R_pidr2		172
 | |
| #define	R_ccr		176
 | |
| #define	R_sar		180
 | |
| #define	R_pidr3		184
 | |
| #define	R_pidr4		188
 | |
| #define	R_iva		192
 | |
| #define	R_eiem		196
 | |
| 
 | |
| #define	R_itmr		200
 | |
| #define	R_pcsqH		204
 | |
| #define	R_pcoqH		208
 | |
| #define	R_iir		212
 | |
| #define	R_pcsqT		216
 | |
| #define	R_pcoqT		220
 | |
| #define	R_isr		224
 | |
| #define	R_ior		228
 | |
| #define	R_ipsw		232
 | |
| #define	R_eirr		236
 | |
| 
 | |
| #define	R_tr0		240
 | |
| #define	R_tr1		244
 | |
| #define	R_tr2		248
 | |
| #define	R_tr3		252
 | |
| #define	R_tr4		256
 | |
| #define	R_tr5		260
 | |
| #define	R_tr6		264
 | |
| #define	R_tr7		268
 | |
| 
 | |
| #define	R_SIZE		272
 |