fromHudsonOsf.h revision 8013
18012Ssaidi@eecs.umich.edu/*
28013Sbinkertn@umich.edu * Copyright 1993, 1994 Hewlett-Packard Development Company, L.P.
38013Sbinkertn@umich.edu *
48013Sbinkertn@umich.edu * Permission is hereby granted, free of charge, to any person
58013Sbinkertn@umich.edu * obtaining a copy of this software and associated documentation
68013Sbinkertn@umich.edu * files (the "Software"), to deal in the Software without
78013Sbinkertn@umich.edu * restriction, including without limitation the rights to use, copy,
88013Sbinkertn@umich.edu * modify, merge, publish, distribute, sublicense, and/or sell copies
98013Sbinkertn@umich.edu * of the Software, and to permit persons to whom the Software is
108013Sbinkertn@umich.edu * furnished to do so, subject to the following conditions:
118013Sbinkertn@umich.edu *
128013Sbinkertn@umich.edu * The above copyright notice and this permission notice shall be
138013Sbinkertn@umich.edu * included in all copies or substantial portions of the Software.
148013Sbinkertn@umich.edu *
158013Sbinkertn@umich.edu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
168013Sbinkertn@umich.edu * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
178013Sbinkertn@umich.edu * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
188013Sbinkertn@umich.edu * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
198013Sbinkertn@umich.edu * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
208013Sbinkertn@umich.edu * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
218013Sbinkertn@umich.edu * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
228013Sbinkertn@umich.edu * SOFTWARE.
238013Sbinkertn@umich.edu */
248012Ssaidi@eecs.umich.edu
257997Ssaidi@eecs.umich.edu#ifndef FROMHUDSONOSF_INCLUDED
267997Ssaidi@eecs.umich.edu#define FROMHUDSONOSF_INCLUDED 1
278013Sbinkertn@umich.edu
287997Ssaidi@eecs.umich.edu#define	__OSF_LOADED	1
297997Ssaidi@eecs.umich.edu/*
307997Ssaidi@eecs.umich.edu**  Seg0 and Seg1 Virtual Address (VA) Format
317997Ssaidi@eecs.umich.edu**
327997Ssaidi@eecs.umich.edu**	  Loc	Size	Name	Function
337997Ssaidi@eecs.umich.edu**	 -----	----	----	---------------------------------
347997Ssaidi@eecs.umich.edu**	<42:33>  10	SEG1	First level page table offset
357997Ssaidi@eecs.umich.edu**	<32:23>  10	SEG2	Second level page table offset
367997Ssaidi@eecs.umich.edu**	<22:13>  10	SEG3	Third level page table offset
377997Ssaidi@eecs.umich.edu**	<12:00>  13	OFFSET	Byte within page offset
387997Ssaidi@eecs.umich.edu*/
397997Ssaidi@eecs.umich.edu
407997Ssaidi@eecs.umich.edu#define VA_V_SEG1	33
417997Ssaidi@eecs.umich.edu#define	VA_M_SEG1	(0x3FF<<VA_V_SEG1)
427997Ssaidi@eecs.umich.edu#define VA_V_SEG2	23
437997Ssaidi@eecs.umich.edu#define VA_M_SEG2	(0x3FF<<VA_V_SEG2)
447997Ssaidi@eecs.umich.edu#define VA_V_SEG3	13
457997Ssaidi@eecs.umich.edu#define VA_M_SEG3	(0x3FF<<VA_V_SEG3)
467997Ssaidi@eecs.umich.edu#define VA_V_OFFSET	0
477997Ssaidi@eecs.umich.edu#define VA_M_OFFSET	0x1FFF
487997Ssaidi@eecs.umich.edu
497997Ssaidi@eecs.umich.edu/*
507997Ssaidi@eecs.umich.edu**  Virtual Address Options: 8K byte page size
517997Ssaidi@eecs.umich.edu*/
527997Ssaidi@eecs.umich.edu
537997Ssaidi@eecs.umich.edu#define	VA_S_SIZE	43
547997Ssaidi@eecs.umich.edu#define	VA_S_OFF	13
557997Ssaidi@eecs.umich.edu#define	va_s_off	13
567997Ssaidi@eecs.umich.edu#define VA_S_SEG	10
577997Ssaidi@eecs.umich.edu#define VA_S_PAGE_SIZE	8192
587997Ssaidi@eecs.umich.edu
597997Ssaidi@eecs.umich.edu/*
607997Ssaidi@eecs.umich.edu**  Page Table Entry (PTE) Format
617997Ssaidi@eecs.umich.edu**
627997Ssaidi@eecs.umich.edu**	 Extent	Size	Name	Function
637997Ssaidi@eecs.umich.edu**	 ------	----	----	---------------------------------
647997Ssaidi@eecs.umich.edu**	<63:32>	  32	PFN	Page Frame Number
657997Ssaidi@eecs.umich.edu**	<31:16>	  16	SW	Reserved for software
667997Ssaidi@eecs.umich.edu**	<15:14>	   2	RSV0	Reserved for hardware SBZ
677997Ssaidi@eecs.umich.edu**	   <13>	   1	UWE	User Write Enable
687997Ssaidi@eecs.umich.edu**	   <12>	   1	KWE	Kernel Write Enable
697997Ssaidi@eecs.umich.edu**	<11:10>	   2	RSV1	Reserved for hardware SBZ
707997Ssaidi@eecs.umich.edu**	    <9>	   1	URE	User Read Enable
717997Ssaidi@eecs.umich.edu**	    <8>	   1	KRE	Kernel Read Enable
727997Ssaidi@eecs.umich.edu**	    <7>	   1	RSV2	Reserved for hardware SBZ
737997Ssaidi@eecs.umich.edu**	  <6:5>	   2	GH	Granularity Hint
747997Ssaidi@eecs.umich.edu**	    <4>	   1	ASM	Address Space Match
757997Ssaidi@eecs.umich.edu**	    <3>	   1	FOE	Fault On Execute
767997Ssaidi@eecs.umich.edu**	    <2>	   1	FOW	Fault On Write
777997Ssaidi@eecs.umich.edu**	    <1>	   1	FOR	Fault On Read
787997Ssaidi@eecs.umich.edu**	    <0>	   1	V	Valid
797997Ssaidi@eecs.umich.edu*/
807997Ssaidi@eecs.umich.edu
817997Ssaidi@eecs.umich.edu#define	PTE_V_PFN	32
827997Ssaidi@eecs.umich.edu#define PTE_M_PFN	0xFFFFFFFF00000000
837997Ssaidi@eecs.umich.edu#define PTE_V_SW	16
847997Ssaidi@eecs.umich.edu#define PTE_M_SW	0x00000000FFFF0000
857997Ssaidi@eecs.umich.edu#define PTE_V_UWE	13
867997Ssaidi@eecs.umich.edu#define PTE_M_UWE	(1<<PTE_V_UWE)
877997Ssaidi@eecs.umich.edu#define PTE_V_KWE	12
887997Ssaidi@eecs.umich.edu#define PTE_M_KWE	(1<<PTE_V_KWE)
897997Ssaidi@eecs.umich.edu#define PTE_V_URE	9
907997Ssaidi@eecs.umich.edu#define PTE_M_URE	(1<<PTE_V_URE)
917997Ssaidi@eecs.umich.edu#define PTE_V_KRE	8
927997Ssaidi@eecs.umich.edu#define PTE_M_KRE	(1<<PTE_V_KRE)
937997Ssaidi@eecs.umich.edu#define PTE_V_GH	5
947997Ssaidi@eecs.umich.edu#define PTE_M_GH	(3<<PTE_V_GH)
957997Ssaidi@eecs.umich.edu#define PTE_V_ASM	4
967997Ssaidi@eecs.umich.edu#define PTE_M_ASM	(1<<PTE_V_ASM)
977997Ssaidi@eecs.umich.edu#define PTE_V_FOE	3
987997Ssaidi@eecs.umich.edu#define PTE_M_FOE	(1<<PTE_V_FOE)
997997Ssaidi@eecs.umich.edu#define PTE_V_FOW	2
1007997Ssaidi@eecs.umich.edu#define PTE_M_FOW	(1<<PTE_V_FOW)
1017997Ssaidi@eecs.umich.edu#define PTE_V_FOR	1
1027997Ssaidi@eecs.umich.edu#define PTE_M_FOR	(1<<PTE_V_FOR)
1037997Ssaidi@eecs.umich.edu#define PTE_V_VALID	0
1047997Ssaidi@eecs.umich.edu#define PTE_M_VALID	(1<<PTE_V_VALID)
1057997Ssaidi@eecs.umich.edu
1067997Ssaidi@eecs.umich.edu#define PTE_M_KSEG	0x1111
1077997Ssaidi@eecs.umich.edu#define PTE_M_PROT	0x3300
1087997Ssaidi@eecs.umich.edu#define pte_m_prot	0x3300
1097997Ssaidi@eecs.umich.edu
1107997Ssaidi@eecs.umich.edu/*
1117997Ssaidi@eecs.umich.edu**  System Entry Instruction Fault (entIF) Constants:
1127997Ssaidi@eecs.umich.edu*/
1137997Ssaidi@eecs.umich.edu
1147997Ssaidi@eecs.umich.edu#define IF_K_BPT        0x0
1157997Ssaidi@eecs.umich.edu#define IF_K_BUGCHK     0x1
1167997Ssaidi@eecs.umich.edu#define IF_K_GENTRAP    0x2
1177997Ssaidi@eecs.umich.edu#define IF_K_FEN        0x3
1187997Ssaidi@eecs.umich.edu#define IF_K_OPCDEC     0x4
1197997Ssaidi@eecs.umich.edu
1207997Ssaidi@eecs.umich.edu/*
1217997Ssaidi@eecs.umich.edu**  System Entry Hardware Interrupt (entInt) Constants:
1227997Ssaidi@eecs.umich.edu*/
1237997Ssaidi@eecs.umich.edu
1247997Ssaidi@eecs.umich.edu#define INT_K_IP	0x0
1257997Ssaidi@eecs.umich.edu#define INT_K_CLK	0x1
1267997Ssaidi@eecs.umich.edu#define INT_K_MCHK	0x2
1277997Ssaidi@eecs.umich.edu#define INT_K_DEV	0x3
1287997Ssaidi@eecs.umich.edu#define INT_K_PERF	0x4
1297997Ssaidi@eecs.umich.edu
1307997Ssaidi@eecs.umich.edu/*
1317997Ssaidi@eecs.umich.edu**  System Entry MM Fault (entMM) Constants:
1327997Ssaidi@eecs.umich.edu*/
1337997Ssaidi@eecs.umich.edu
1347997Ssaidi@eecs.umich.edu#define	MM_K_TNV	0x0
1357997Ssaidi@eecs.umich.edu#define MM_K_ACV	0x1
1367997Ssaidi@eecs.umich.edu#define MM_K_FOR	0x2
1377997Ssaidi@eecs.umich.edu#define MM_K_FOE	0x3
1387997Ssaidi@eecs.umich.edu#define MM_K_FOW	0x4
1397997Ssaidi@eecs.umich.edu
1407997Ssaidi@eecs.umich.edu/*
1417997Ssaidi@eecs.umich.edu**  Process Control Block (PCB) Offsets:
1427997Ssaidi@eecs.umich.edu*/
1437997Ssaidi@eecs.umich.edu
1447997Ssaidi@eecs.umich.edu#define PCB_Q_KSP	0x0000
1457997Ssaidi@eecs.umich.edu#define PCB_Q_USP	0x0008
1467997Ssaidi@eecs.umich.edu#define PCB_Q_PTBR	0x0010
1477997Ssaidi@eecs.umich.edu#define PCB_L_PCC	0x0018
1487997Ssaidi@eecs.umich.edu#define PCB_L_ASN	0x001C
1497997Ssaidi@eecs.umich.edu#define PCB_Q_UNIQUE	0x0020
1507997Ssaidi@eecs.umich.edu#define PCB_Q_FEN	0x0028
1517997Ssaidi@eecs.umich.edu#define PCB_Q_RSV0	0x0030
1527997Ssaidi@eecs.umich.edu#define PCB_Q_RSV1	0x0038
1537997Ssaidi@eecs.umich.edu
1547997Ssaidi@eecs.umich.edu/*
1557997Ssaidi@eecs.umich.edu**  Processor Status Register (PS) Bit Summary
1567997Ssaidi@eecs.umich.edu**
1577997Ssaidi@eecs.umich.edu**	Extent	Size	Name	Function
1587997Ssaidi@eecs.umich.edu**	------	----	----	---------------------------------
1597997Ssaidi@eecs.umich.edu**	  <3>	 1	CM	Current Mode
1607997Ssaidi@eecs.umich.edu**	<2:0>	 3	IPL	Interrupt Priority Level
1617997Ssaidi@eecs.umich.edu**/
1627997Ssaidi@eecs.umich.edu
1637997Ssaidi@eecs.umich.edu#define	PS_V_CM		3
1647997Ssaidi@eecs.umich.edu#define PS_M_CM		(1<<PS_V_CM)
1657997Ssaidi@eecs.umich.edu#define	PS_V_IPL	0
1667997Ssaidi@eecs.umich.edu#define	PS_M_IPL	(7<<PS_V_IPL)
1677997Ssaidi@eecs.umich.edu
1687997Ssaidi@eecs.umich.edu#define	PS_K_KERN	(0<<PS_V_CM)
1697997Ssaidi@eecs.umich.edu#define PS_K_USER	(1<<PS_V_CM)
1707997Ssaidi@eecs.umich.edu
1717997Ssaidi@eecs.umich.edu#define	IPL_K_ZERO	0x0
1727997Ssaidi@eecs.umich.edu#define IPL_K_SW0	0x1
1737997Ssaidi@eecs.umich.edu#define IPL_K_SW1	0x2
1747997Ssaidi@eecs.umich.edu#define IPL_K_DEV0	0x3
1757997Ssaidi@eecs.umich.edu#define IPL_K_DEV1	0x4
1767997Ssaidi@eecs.umich.edu#define IPL_K_CLK	0x5
1777997Ssaidi@eecs.umich.edu#define IPL_K_RT	0x6
1787997Ssaidi@eecs.umich.edu#define IPL_K_PERF      0x6
1797997Ssaidi@eecs.umich.edu#define IPL_K_PFAIL     0x6
1807997Ssaidi@eecs.umich.edu#define IPL_K_MCHK	0x7
1817997Ssaidi@eecs.umich.edu
1827997Ssaidi@eecs.umich.edu#define IPL_K_LOW	0x0
1837997Ssaidi@eecs.umich.edu#define IPL_K_HIGH	0x7
1847997Ssaidi@eecs.umich.edu
1857997Ssaidi@eecs.umich.edu/*
1867997Ssaidi@eecs.umich.edu**  SCB Offset Definitions:
1877997Ssaidi@eecs.umich.edu*/
1887997Ssaidi@eecs.umich.edu
1897997Ssaidi@eecs.umich.edu#define SCB_Q_FEN	    	0x0010
1907997Ssaidi@eecs.umich.edu#define SCB_Q_ACV		0x0080
1917997Ssaidi@eecs.umich.edu#define SCB_Q_TNV		0x0090
1927997Ssaidi@eecs.umich.edu#define SCB_Q_FOR		0x00A0
1937997Ssaidi@eecs.umich.edu#define SCB_Q_FOW		0x00B0
1947997Ssaidi@eecs.umich.edu#define SCB_Q_FOE		0x00C0
1957997Ssaidi@eecs.umich.edu#define SCB_Q_ARITH		0x0200
1967997Ssaidi@eecs.umich.edu#define SCB_Q_KAST		0x0240
1977997Ssaidi@eecs.umich.edu#define SCB_Q_EAST		0x0250
1987997Ssaidi@eecs.umich.edu#define SCB_Q_SAST		0x0260
1997997Ssaidi@eecs.umich.edu#define SCB_Q_UAST		0x0270
2007997Ssaidi@eecs.umich.edu#define SCB_Q_UNALIGN		0x0280
2017997Ssaidi@eecs.umich.edu#define SCB_Q_BPT		0x0400
2027997Ssaidi@eecs.umich.edu#define SCB_Q_BUGCHK		0x0410
2037997Ssaidi@eecs.umich.edu#define SCB_Q_OPCDEC		0x0420
2047997Ssaidi@eecs.umich.edu#define SCB_Q_ILLPAL		0x0430
2057997Ssaidi@eecs.umich.edu#define SCB_Q_TRAP		0x0440
2067997Ssaidi@eecs.umich.edu#define SCB_Q_CHMK		0x0480
2077997Ssaidi@eecs.umich.edu#define SCB_Q_CHME		0x0490
2087997Ssaidi@eecs.umich.edu#define SCB_Q_CHMS		0x04A0
2097997Ssaidi@eecs.umich.edu#define SCB_Q_CHMU		0x04B0
2107997Ssaidi@eecs.umich.edu#define SCB_Q_SW0		0x0500
2117997Ssaidi@eecs.umich.edu#define SCB_Q_SW1		0x0510
2127997Ssaidi@eecs.umich.edu#define SCB_Q_SW2		0x0520
2137997Ssaidi@eecs.umich.edu#define SCB_Q_SW3		0x0530
2147997Ssaidi@eecs.umich.edu#define	SCB_Q_SW4		0x0540
2157997Ssaidi@eecs.umich.edu#define SCB_Q_SW5		0x0550
2167997Ssaidi@eecs.umich.edu#define SCB_Q_SW6		0x0560
2177997Ssaidi@eecs.umich.edu#define SCB_Q_SW7		0x0570
2187997Ssaidi@eecs.umich.edu#define SCB_Q_SW8		0x0580
2197997Ssaidi@eecs.umich.edu#define SCB_Q_SW9		0x0590
2207997Ssaidi@eecs.umich.edu#define SCB_Q_SW10		0x05A0
2217997Ssaidi@eecs.umich.edu#define SCB_Q_SW11		0x05B0
2227997Ssaidi@eecs.umich.edu#define SCB_Q_SW12		0x05C0
2237997Ssaidi@eecs.umich.edu#define SCB_Q_SW13		0x05D0
2247997Ssaidi@eecs.umich.edu#define SCB_Q_SW14		0x05E0
2257997Ssaidi@eecs.umich.edu#define SCB_Q_SW15		0x05F0
2267997Ssaidi@eecs.umich.edu#define SCB_Q_CLOCK		0x0600
2277997Ssaidi@eecs.umich.edu#define SCB_Q_INTER		0x0610
2287997Ssaidi@eecs.umich.edu#define SCB_Q_SYSERR        	0x0620
2297997Ssaidi@eecs.umich.edu#define SCB_Q_PROCERR		0x0630
2307997Ssaidi@eecs.umich.edu#define SCB_Q_PWRFAIL		0x0640
2317997Ssaidi@eecs.umich.edu#define SCB_Q_PERFMON		0x0650
2327997Ssaidi@eecs.umich.edu#define SCB_Q_SYSMCHK		0x0660
2337997Ssaidi@eecs.umich.edu#define SCB_Q_PROCMCHK      	0x0670
2347997Ssaidi@eecs.umich.edu#define SCB_Q_PASSREL		0x0680
2357997Ssaidi@eecs.umich.edu
2367997Ssaidi@eecs.umich.edu/*
2377997Ssaidi@eecs.umich.edu**  Stack Frame (FRM) Offsets:
2387997Ssaidi@eecs.umich.edu**
2397997Ssaidi@eecs.umich.edu**  There are two types of system entries for OSF/1 - those for the
2407997Ssaidi@eecs.umich.edu**  callsys CALL_PAL function and those for exceptions and interrupts.
2417997Ssaidi@eecs.umich.edu**  Both entry types use the same stack frame layout.  The stack frame
2427997Ssaidi@eecs.umich.edu**  contains space for the PC, the PS, the saved GP, and the saved
2437997Ssaidi@eecs.umich.edu**  argument registers a0, a1, and a2.  On entry, SP points to the
2447997Ssaidi@eecs.umich.edu**  saved PS.
2457997Ssaidi@eecs.umich.edu*/
2467997Ssaidi@eecs.umich.edu
2477997Ssaidi@eecs.umich.edu#define	FRM_Q_PS	0x0000
2487997Ssaidi@eecs.umich.edu#define FRM_Q_PC	0x0008
2497997Ssaidi@eecs.umich.edu#define FRM_Q_GP	0x0010
2507997Ssaidi@eecs.umich.edu#define FRM_Q_A0	0x0018
2517997Ssaidi@eecs.umich.edu#define FRM_Q_A1	0x0020
2527997Ssaidi@eecs.umich.edu#define FRM_Q_A2	0x0028
2537997Ssaidi@eecs.umich.edu
2547997Ssaidi@eecs.umich.edu#define FRM_K_SIZE	48
2557997Ssaidi@eecs.umich.edu
2567997Ssaidi@eecs.umich.edu#define STACK_FRAME(tmp1,tmp2)	\
2577997Ssaidi@eecs.umich.edu        sll	ps, 63-PS_V_CM, p7;	\
2587997Ssaidi@eecs.umich.edu        bge	p7, 0f;			\
2597997Ssaidi@eecs.umich.edu        bis	zero, zero, ps;		\
2607997Ssaidi@eecs.umich.edu        mtpr	sp, ptUsp;		\
2617997Ssaidi@eecs.umich.edu        mfpr	sp, ptKsp;		\
2627997Ssaidi@eecs.umich.edu0:	lda	sp, 0-FRM_K_SIZE(sp);	\
2637997Ssaidi@eecs.umich.edu        stq	tmp1, FRM_Q_PS(sp);	\
2647997Ssaidi@eecs.umich.edu        stq	tmp2, FRM_Q_PC(sp);	\
2657997Ssaidi@eecs.umich.edu        stq	gp, FRM_Q_GP(sp);	\
2667997Ssaidi@eecs.umich.edu        stq	a0, FRM_Q_A0(sp);	\
2677997Ssaidi@eecs.umich.edu        stq	a1, FRM_Q_A1(sp);	\
2687997Ssaidi@eecs.umich.edu        stq	a2, FRM_Q_A2(sp)
2697997Ssaidi@eecs.umich.edu
2707997Ssaidi@eecs.umich.edu/*
2717997Ssaidi@eecs.umich.edu**  Halt Codes:
2727997Ssaidi@eecs.umich.edu*/
2737997Ssaidi@eecs.umich.edu
2747997Ssaidi@eecs.umich.edu#define HLT_K_RESET	    0x0000
2757997Ssaidi@eecs.umich.edu#define HLT_K_HW_HALT	    0x0001
2767997Ssaidi@eecs.umich.edu#define HLT_K_KSP_INVAL	    0x0002
2777997Ssaidi@eecs.umich.edu#define HLT_K_SCBB_INVAL    0x0003
2787997Ssaidi@eecs.umich.edu#define HLT_K_PTBR_INVAL    0x0004
2797997Ssaidi@eecs.umich.edu#define HLT_K_SW_HALT	    0x0005
2807997Ssaidi@eecs.umich.edu#define HLT_K_DBL_MCHK	    0x0006
2817997Ssaidi@eecs.umich.edu#define HLT_K_MCHK_FROM_PAL 0x0007
2827997Ssaidi@eecs.umich.edu
2837997Ssaidi@eecs.umich.edu/*
2847997Ssaidi@eecs.umich.edu**  Machine Check Codes:
2857997Ssaidi@eecs.umich.edu*/
2867997Ssaidi@eecs.umich.edu
2877997Ssaidi@eecs.umich.edu#define MCHK_K_TPERR	    0x0080
2887997Ssaidi@eecs.umich.edu#define MCHK_K_TCPERR	    0x0082
2897997Ssaidi@eecs.umich.edu#define MCHK_K_HERR	    0x0084
2907997Ssaidi@eecs.umich.edu#define MCHK_K_ECC_C	    0x0086
2917997Ssaidi@eecs.umich.edu#define MCHK_K_ECC_NC	    0x0088
2927997Ssaidi@eecs.umich.edu#define MCHK_K_UNKNOWN	    0x008A
2937997Ssaidi@eecs.umich.edu#define MCHK_K_CACKSOFT	    0x008C
2947997Ssaidi@eecs.umich.edu#define MCHK_K_BUGCHECK	    0x008E
2957997Ssaidi@eecs.umich.edu#define MCHK_K_OS_BUGCHECK  0x0090
2967997Ssaidi@eecs.umich.edu#define MCHK_K_DCPERR	    0x0092
2977997Ssaidi@eecs.umich.edu#define MCHK_K_ICPERR	    0x0094
2987997Ssaidi@eecs.umich.edu#define MCHK_K_RETRY_IRD    0x0096
2997997Ssaidi@eecs.umich.edu#define MCHK_K_PROC_HERR    0x0098
3007997Ssaidi@eecs.umich.edu
3017997Ssaidi@eecs.umich.edu/*
3027997Ssaidi@eecs.umich.edu** System Machine Check Codes:
3037997Ssaidi@eecs.umich.edu*/
3047997Ssaidi@eecs.umich.edu
3057997Ssaidi@eecs.umich.edu#define MCHK_K_READ_NXM     0x0200
3067997Ssaidi@eecs.umich.edu#define MCHK_K_SYS_HERR     0x0202
3077997Ssaidi@eecs.umich.edu
3087997Ssaidi@eecs.umich.edu/*
3097997Ssaidi@eecs.umich.edu**  Machine Check Error Status Summary (MCES) Register Format
3107997Ssaidi@eecs.umich.edu**
3117997Ssaidi@eecs.umich.edu**	 Extent	Size	Name	Function
3127997Ssaidi@eecs.umich.edu**	 ------	----	----	---------------------------------
3137997Ssaidi@eecs.umich.edu**	  <0>	  1	MIP	Machine check in progress
3147997Ssaidi@eecs.umich.edu**	  <1>	  1	SCE	System correctable error in progress
3157997Ssaidi@eecs.umich.edu**	  <2>	  1	PCE	Processor correctable error in progress
3167997Ssaidi@eecs.umich.edu**	  <3>	  1	DPC	Disable PCE error reporting
3177997Ssaidi@eecs.umich.edu**	  <4>	  1	DSC	Disable SCE error reporting
3187997Ssaidi@eecs.umich.edu*/
3197997Ssaidi@eecs.umich.edu
3207997Ssaidi@eecs.umich.edu#define MCES_V_MIP	0
3217997Ssaidi@eecs.umich.edu#define MCES_M_MIP	(1<<MCES_V_MIP)
3227997Ssaidi@eecs.umich.edu#define MCES_V_SCE	1
3237997Ssaidi@eecs.umich.edu#define MCES_M_SCE	(1<<MCES_V_SCE)
3247997Ssaidi@eecs.umich.edu#define MCES_V_PCE	2
3257997Ssaidi@eecs.umich.edu#define MCES_M_PCE	(1<<MCES_V_PCE)
3267997Ssaidi@eecs.umich.edu#define MCES_V_DPC	3
3277997Ssaidi@eecs.umich.edu#define MCES_M_DPC	(1<<MCES_V_DPC)
3287997Ssaidi@eecs.umich.edu#define MCES_V_DSC	4
3297997Ssaidi@eecs.umich.edu#define MCES_M_DSC	(1<<MCES_V_DSC)
3307997Ssaidi@eecs.umich.edu
3317997Ssaidi@eecs.umich.edu#define MCES_M_ALL      (MCES_M_MIP | MCES_M_SCE | MCES_M_PCE | MCES_M_DPC \
3327997Ssaidi@eecs.umich.edu                         | MCES_M_DSC)
3337997Ssaidi@eecs.umich.edu
3347997Ssaidi@eecs.umich.edu/*
3357997Ssaidi@eecs.umich.edu**  Who-Am-I (WHAMI) Register Format
3367997Ssaidi@eecs.umich.edu**
3377997Ssaidi@eecs.umich.edu**	 Extent	Size	Name	Function
3387997Ssaidi@eecs.umich.edu**	 ------	----	----	---------------------------------
3397997Ssaidi@eecs.umich.edu**	  <7:0>	  8	ID	Who-Am-I identifier
3407997Ssaidi@eecs.umich.edu**	  <15:8>   1	SWAP	Swap PALcode flag - character 'S'
3417997Ssaidi@eecs.umich.edu*/
3427997Ssaidi@eecs.umich.edu
3437997Ssaidi@eecs.umich.edu#define WHAMI_V_SWAP	8
3447997Ssaidi@eecs.umich.edu#define WHAMI_M_SWAP	(1<<WHAMI_V_SWAP)
3457997Ssaidi@eecs.umich.edu#define WHAMI_V_ID	0
3467997Ssaidi@eecs.umich.edu#define WHAMI_M_ID	0xFF
3477997Ssaidi@eecs.umich.edu
3487997Ssaidi@eecs.umich.edu#define WHAMI_K_SWAP    0x53    /* Character 'S' */
3497997Ssaidi@eecs.umich.edu
3507997Ssaidi@eecs.umich.edu/*
3517997Ssaidi@eecs.umich.edu**  Conventional Register Usage Definitions
3527997Ssaidi@eecs.umich.edu**
3537997Ssaidi@eecs.umich.edu**  Assembler temporary `at' is `AT' so it doesn't conflict with the
3547997Ssaidi@eecs.umich.edu**  `.set at' assembler directive.
3557997Ssaidi@eecs.umich.edu*/
3567997Ssaidi@eecs.umich.edu
3577997Ssaidi@eecs.umich.edu#define v0		$0	/* Function Return Value Register */
3587997Ssaidi@eecs.umich.edu#define t0		$1	/* Scratch (Temporary) Registers ... */
3597997Ssaidi@eecs.umich.edu#define t1		$2
3607997Ssaidi@eecs.umich.edu#define t2		$3
3617997Ssaidi@eecs.umich.edu#define t3		$4
3627997Ssaidi@eecs.umich.edu#define t4		$5
3637997Ssaidi@eecs.umich.edu#define t5		$6
3647997Ssaidi@eecs.umich.edu#define t6		$7
3657997Ssaidi@eecs.umich.edu#define t7		$8
3667997Ssaidi@eecs.umich.edu#define s0		$9	/* Saved (Non-Volatile) Registers ... */
3677997Ssaidi@eecs.umich.edu#define s1		$10
3687997Ssaidi@eecs.umich.edu#define s2		$11
3697997Ssaidi@eecs.umich.edu#define s3		$12
3707997Ssaidi@eecs.umich.edu#define s4		$13
3717997Ssaidi@eecs.umich.edu#define s5		$14
3727997Ssaidi@eecs.umich.edu#define fp		$15	/* Frame Pointer Register, Or S6 */
3737997Ssaidi@eecs.umich.edu#define s6		$15
3747997Ssaidi@eecs.umich.edu#define a0		$16	/* Argument Registers ... */
3757997Ssaidi@eecs.umich.edu#define a1		$17
3767997Ssaidi@eecs.umich.edu#define a2		$18
3777997Ssaidi@eecs.umich.edu#define a3		$19
3787997Ssaidi@eecs.umich.edu#define a4		$20
3797997Ssaidi@eecs.umich.edu#define a5		$21
3807997Ssaidi@eecs.umich.edu#define t8		$22	/* Scratch (Temporary) Registers ... */
3817997Ssaidi@eecs.umich.edu#define t9		$23
3827997Ssaidi@eecs.umich.edu#define t10		$24
3837997Ssaidi@eecs.umich.edu#define t11		$25
3847997Ssaidi@eecs.umich.edu#define ra		$26	/* Return Address Register */
3857997Ssaidi@eecs.umich.edu#define pv		$27	/* Procedure Value Register, Or T12 */
3867997Ssaidi@eecs.umich.edu#define t12		$27
3877997Ssaidi@eecs.umich.edu#define AT		$28	/* Assembler Temporary (Volatile) Register */
3887997Ssaidi@eecs.umich.edu#define gp		$29	/* Global Pointer Register */
3897997Ssaidi@eecs.umich.edu#define sp		$30	/* Stack Pointer Register */
3907997Ssaidi@eecs.umich.edu#define zero		$31	/* Zero Register */
3917997Ssaidi@eecs.umich.edu
3927997Ssaidi@eecs.umich.edu/*
3937997Ssaidi@eecs.umich.edu**  OSF/1 Unprivileged CALL_PAL Entry Offsets:
3947997Ssaidi@eecs.umich.edu**
3957997Ssaidi@eecs.umich.edu**	Entry Name	    Offset (Hex)
3967997Ssaidi@eecs.umich.edu**
3977997Ssaidi@eecs.umich.edu**	bpt		     0080
3987997Ssaidi@eecs.umich.edu**	bugchk		     0081
3997997Ssaidi@eecs.umich.edu**	callsys		     0083
4007997Ssaidi@eecs.umich.edu**	imb		     0086
4017997Ssaidi@eecs.umich.edu**	rdunique	     009E
4027997Ssaidi@eecs.umich.edu**	wrunique	     009F
4037997Ssaidi@eecs.umich.edu**	gentrap		     00AA
4047997Ssaidi@eecs.umich.edu**	dbgstop		     00AD
4057997Ssaidi@eecs.umich.edu*/
4067997Ssaidi@eecs.umich.edu
4077997Ssaidi@eecs.umich.edu#define UNPRIV			    0x80
4087997Ssaidi@eecs.umich.edu#define	PAL_BPT_ENTRY		    0x80
4097997Ssaidi@eecs.umich.edu#define PAL_BUGCHK_ENTRY	    0x81
4107997Ssaidi@eecs.umich.edu#define PAL_CALLSYS_ENTRY	    0x83
4117997Ssaidi@eecs.umich.edu#define PAL_IMB_ENTRY		    0x86
4127997Ssaidi@eecs.umich.edu#define PAL_RDUNIQUE_ENTRY	    0x9E
4137997Ssaidi@eecs.umich.edu#define PAL_WRUNIQUE_ENTRY	    0x9F
4147997Ssaidi@eecs.umich.edu#define PAL_GENTRAP_ENTRY	    0xAA
4157997Ssaidi@eecs.umich.edu
4167997Ssaidi@eecs.umich.edu#if defined(KDEBUG)
4177997Ssaidi@eecs.umich.edu#define	PAL_DBGSTOP_ENTRY	    0xAD
4187997Ssaidi@eecs.umich.edu/* #define NUM_UNPRIV_CALL_PALS	    10 */
4197997Ssaidi@eecs.umich.edu#else
4207997Ssaidi@eecs.umich.edu/* #define NUM_UNPRIV_CALL_PALS	    9  */
4217997Ssaidi@eecs.umich.edu#endif /* KDEBUG */
4227997Ssaidi@eecs.umich.edu
4237997Ssaidi@eecs.umich.edu/*
4247997Ssaidi@eecs.umich.edu**  OSF/1 Privileged CALL_PAL Entry Offsets:
4257997Ssaidi@eecs.umich.edu**
4267997Ssaidi@eecs.umich.edu**	Entry Name	    Offset (Hex)
4277997Ssaidi@eecs.umich.edu**
4287997Ssaidi@eecs.umich.edu**	halt		     0000
4297997Ssaidi@eecs.umich.edu**	cflush		     0001
4307997Ssaidi@eecs.umich.edu**	draina		     0002
4317997Ssaidi@eecs.umich.edu**	cserve		     0009
4327997Ssaidi@eecs.umich.edu**	swppal		     000A
4337997Ssaidi@eecs.umich.edu**	rdmces		     0010
4347997Ssaidi@eecs.umich.edu**	wrmces		     0011
4357997Ssaidi@eecs.umich.edu**	wrfen		     002B
4367997Ssaidi@eecs.umich.edu**	wrvptptr	     002D
4377997Ssaidi@eecs.umich.edu**	swpctx		     0030
4387997Ssaidi@eecs.umich.edu**	wrval		     0031
4397997Ssaidi@eecs.umich.edu**	rdval		     0032
4407997Ssaidi@eecs.umich.edu**	tbi		     0033
4417997Ssaidi@eecs.umich.edu**	wrent		     0034
4427997Ssaidi@eecs.umich.edu**	swpipl		     0035
4437997Ssaidi@eecs.umich.edu**	rdps		     0036
4447997Ssaidi@eecs.umich.edu**	wrkgp		     0037
4457997Ssaidi@eecs.umich.edu**	wrusp		     0038
4467997Ssaidi@eecs.umich.edu**	rdusp		     003A
4477997Ssaidi@eecs.umich.edu**	whami		     003C
4487997Ssaidi@eecs.umich.edu**	retsys		     003D
4497997Ssaidi@eecs.umich.edu**	rti		     003F
4507997Ssaidi@eecs.umich.edu*/
4517997Ssaidi@eecs.umich.edu
4527997Ssaidi@eecs.umich.edu#define PAL_HALT_ENTRY	    0x0000
4537997Ssaidi@eecs.umich.edu#define PAL_CFLUSH_ENTRY    0x0001
4547997Ssaidi@eecs.umich.edu#define PAL_DRAINA_ENTRY    0x0002
4557997Ssaidi@eecs.umich.edu#define PAL_CSERVE_ENTRY    0x0009
4567997Ssaidi@eecs.umich.edu#define PAL_SWPPAL_ENTRY    0x000A
4577997Ssaidi@eecs.umich.edu#define PAL_WRIPIR_ENTRY    0x000D
4587997Ssaidi@eecs.umich.edu#define PAL_RDMCES_ENTRY    0x0010
4597997Ssaidi@eecs.umich.edu#define PAL_WRMCES_ENTRY    0x0011
4607997Ssaidi@eecs.umich.edu#define PAL_WRFEN_ENTRY	    0x002B
4617997Ssaidi@eecs.umich.edu#define PAL_WRVPTPTR_ENTRY  0x002D
4627997Ssaidi@eecs.umich.edu#define PAL_SWPCTX_ENTRY    0x0030
4637997Ssaidi@eecs.umich.edu#define PAL_WRVAL_ENTRY	    0x0031
4647997Ssaidi@eecs.umich.edu#define PAL_RDVAL_ENTRY	    0x0032
4657997Ssaidi@eecs.umich.edu#define PAL_TBI_ENTRY	    0x0033
4667997Ssaidi@eecs.umich.edu#define PAL_WRENT_ENTRY	    0x0034
4677997Ssaidi@eecs.umich.edu#define PAL_SWPIPL_ENTRY    0x0035
4687997Ssaidi@eecs.umich.edu#define PAL_RDPS_ENTRY	    0x0036
4697997Ssaidi@eecs.umich.edu#define PAL_WRKGP_ENTRY	    0x0037
4707997Ssaidi@eecs.umich.edu#define PAL_WRUSP_ENTRY	    0x0038
4717997Ssaidi@eecs.umich.edu#define PAL_RDUSP_ENTRY	    0x003A
4727997Ssaidi@eecs.umich.edu#define PAL_WHAMI_ENTRY	    0x003C
4737997Ssaidi@eecs.umich.edu#define PAL_RETSYS_ENTRY    0x003D
4747997Ssaidi@eecs.umich.edu#define PAL_RTI_ENTRY	    0x003F
4757997Ssaidi@eecs.umich.edu
4767997Ssaidi@eecs.umich.edu#define NUM_PRIV_CALL_PALS  23
4777997Ssaidi@eecs.umich.edu
4787997Ssaidi@eecs.umich.edu#endif
4797997Ssaidi@eecs.umich.edu
480