; /* @(#)register.ah	1.1 96/05/23 08:56:57, TEI */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;		 naming of various registers    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  /* $Id$ */

;* File information and includes.

	.file	"register.ah"
	.ident	"@(#)register.ah	1.1 96/05/23 08:56:57, TEI\n"

;* Register Stack pointer and frame pointer registers.

	.extern	Rrsp, Rfp

	.reg	regsp, 		%%Rrsp
	.reg	fp, 		%%Rfp


	.extern RTrapReg
	.extern Rtrapreg

	.reg	TrapReg, 	%%RTrapReg
	.reg	trapreg, 	%%Rtrapreg


;* Operating system Interrupt handler registers (gr64-gr67)

	.extern	ROSint0, ROSint1, ROSint2, ROSint3

	.reg	OSint0, 	%%ROSint0
	.reg	OSint1, 	%%ROSint1
	.reg	OSint2, 	%%ROSint2
	.reg	OSint3, 	%%ROSint3

	.reg	it0, 		%%ROSint0
	.reg	it1, 		%%ROSint1
	.reg	it2, 		%%ROSint2
	.reg	it3, 		%%ROSint3



;* Operating system temporary (or scratch) registers (gr68-gr79)

	.extern	ROStmp0, ROStmp1, ROStmp2, ROStmp3
	.extern	ROStmp4, ROStmp5, ROStmp6, ROStmp7
	.extern	ROStmp8, ROStmp9, ROStmp10, ROStmp11

	.reg	OStmp0, 	%%ROStmp0
	.reg	OStmp1, 	%%ROStmp1
	.reg	OStmp2, 	%%ROStmp2
	.reg	OStmp3, 	%%ROStmp3

	.reg	OStmp4, 	%%ROStmp4
	.reg	OStmp5, 	%%ROStmp5
	.reg	OStmp6, 	%%ROStmp6
	.reg	OStmp7, 	%%ROStmp7

	.reg	OStmp8, 	%%ROStmp8
	.reg	OStmp9, 	%%ROStmp9
	.reg	OStmp10, 	%%ROStmp10
	.reg	OStmp11, 	%%ROStmp11


	.reg	kt0, 		%%ROStmp0
	.reg	kt1, 		%%ROStmp1
	.reg	kt2, 		%%ROStmp2
	.reg	kt3, 		%%ROStmp3

	.reg	kt4, 		%%ROStmp4
	.reg	kt5, 		%%ROStmp5
	.reg	kt6, 		%%ROStmp6
	.reg	kt7, 		%%ROStmp7

	.reg	kt8, 		%%ROStmp8
	.reg	kt9, 		%%ROStmp9
	.reg	kt10, 		%%ROStmp10
	.reg	kt11, 		%%ROStmp11


	.reg	TempReg0,	%%ROSint0
	.reg	TempReg1, 	%%ROSint1
	.reg	TempReg2, 	%%ROSint2
	.reg	TempReg3, 	%%ROSint3

	.reg	TempReg4, 	%%ROStmp0
	.reg	TempReg5, 	%%ROStmp1
	.reg	TempReg6, 	%%ROStmp2
	.reg	TempReg7, 	%%ROStmp3

	.reg	TempReg8, 	%%ROStmp4
	.reg	TempReg9, 	%%ROStmp5
	.reg	TempReg10, 	%%ROStmp6
	.reg	TempReg11, 	%%ROStmp7

	.reg	TempReg12, 	%%ROStmp8
	.reg	TempReg13, 	%%ROStmp9
	.reg	TempReg14, 	%%ROStmp10
	.reg	TempReg15, 	%%ROStmp11


;* Assigned static registers

	.extern	RSpillAddrReg, RFillAddrReg, RSignalAddrReg
	.extern	Rpcb, Retc
	.extern	RTimerExt, RTimerUtil, RLEDReg, RERRReg
	.extern	Ret0, Ret1, Ret2, Ret3, Ret4, Ret5, Ret6, Ret7, Reta, Retb
	.extern	Retx, Rety, Retz


	.reg	SpillAddrReg, 	%%RSpillAddrReg
	.reg	FillAddrReg, 	%%RFillAddrReg
	.reg	SignalAddrReg, 	%%RSignalAddrReg
	.reg	pcb,		%%Rpcb

	.reg	etx,		%%Retx
	.reg	ety,		%%Rety
	.reg	etz,		%%Retz
	.reg	eta,		%%Reta

	.reg	etb,		%%Retb
	.reg	etc,		%%Retc
	.reg	TimerExt, 	%%RTimerExt
	.reg	TimerUtil, 	%%RTimerUtil

	.reg	LEDReg, 	%%RLEDReg
	.reg	ERRReg, 	%%RERRReg


	.reg	et0,		%%Ret0
	.reg	et1,		%%Ret1
	.reg	et2,		%%Ret2
	.reg	et3,		%%Ret3

	.reg	et4,		%%Ret4
	.reg	et5,		%%Ret5
	.reg	et6,		%%Ret6
	.reg	et7,		%%Ret7

;
	.equ	SCB1REG_NUM,	88	
	.reg	SCB1REG_PTR,	%%Ret0

; The floating point trap handlers need a few static registers

        .extern RFPStat0, RFPStat1, RFPStat2, RFPStat3
        .extern Rheapptr, RHeapPtr, RArgvPtr

        .reg    FPStat0, 	%%RFPStat0
        .reg    FPStat1, 	%%RFPStat1
        .reg    FPStat2, 	%%RFPStat2
        .reg    FPStat3, 	%%RFPStat3

        .reg    heapptr, 	%%Rheapptr
        .reg    HeapPtr, 	%%RHeapPtr
        .reg    ArgvPtr, 	%%RArgvPtr

        .extern RXLINXReg, RVMBCReg, RUARTReg, RETHERReg

        .reg    XLINXReg,	%%RXLINXReg
        .reg    VMBCReg,	%%RVMBCReg
        .reg    UARTReg,	%%RUARTReg
        .reg    ETHERReg,	%%RXLINXReg

;* Compiler and programmer registers. (gr96-gr127)

	.extern Rv0, Rv1, Rv2, Rv3, Rv4, Rv5, Rv6, Rv7, Rv8, Rv9
	.extern Rv10, Rv11, Rv12, Rv13, Rv14, Rv15

	.reg	v0, 		%%Rv0
	.reg	v1, 		%%Rv1
	.reg	v2, 		%%Rv2
	.reg	v3, 		%%Rv3

	.reg	v4, 		%%Rv4
	.reg	v5, 		%%Rv5
	.reg	v6, 		%%Rv6
	.reg	v7, 		%%Rv7

	.reg	v8, 		%%Rv8
	.reg	v9, 		%%Rv9
	.reg	v10, 		%%Rv10
	.reg	v11, 		%%Rv11

	.reg	v12, 		%%Rv12
	.reg	v13, 		%%Rv13
	.reg	v14, 		%%Rv14
	.reg	v15, 		%%Rv15

	.extern Rtv0, Rtv1, Rtv2, Rtv3, Rtv4

	.reg	tv0, 		%%Rtv0
	.reg	tv1, 		%%Rtv1
	.reg	tv2, 		%%Rtv2
	.reg	tv3, 		%%Rtv3
	.reg	tv4, 		%%Rtv4

; ****************************************************************************
;	For uatrap
; register definitions -- since this trap handler must allow for
; nested traps and interrupts such as TLB miss, protection violation,
; or Data Access Exception, and these trap handlers use the shared
; Temp registers, we must maintain our own that are safe over user-
; mode loads and stores.  The following must be assigned global
; registers which are not used in INTR[0-3], TRAP[0-1], TLB miss,
; TLB protection violation, or data exception trap handlers.

;	.reg	cha_cpy, 	OStmp4		; copy of CHA
;	.reg	chd_cpy, 	OStmp5		; copy of CHD
;	.reg	chc_cpy, 	OStmp6		; copy of CHC
;	.reg	LTemp0, 	OStmp7		; local temp 0
;	.reg	LTemp1, 	OStmp8		; local temp 1

; ****************************************************************************
