1 /*	$NetBSD: pal.h,v 1.1 2006/04/07 14:21:18 cherry Exp $	*/
2 
3 /*-
4  * Copyright (c) 2000 Doug Rabson
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  *
28  *	$FreeBSD$
29  */
30 
31 #ifndef _MACHINE_PAL_H_
32 #define _MACHINE_PAL_H_
33 
34 /*
35  * Architected static calling convention procedures.
36  */
37 #define PAL_CACHE_FLUSH		1
38 #define PAL_CACHE_INFO		2
39 #define PAL_CACHE_INIT		3
40 #define PAL_CACHE_SUMMARY	4
41 #define PAL_MEM_ATTRIB		5
42 #define PAL_PTCE_INFO		6
43 #define PAL_VM_INFO		7
44 #define PAL_VM_SUMMARY		8
45 #define PAL_BUS_GET_FEATURES	9
46 #define PAL_BUS_SET_FEATURES	10
47 #define PAL_DEBUG_INFO		11
48 #define PAL_FIXED_ADDR		12
49 #define PAL_FREQ_BASE		13
50 #define PAL_FREQ_RATIOS		14
51 #define PAL_PERF_MON_INFO	15
52 #define PAL_PLATFORM_ADDR	16
53 #define PAL_PROC_GET_FEATURE	17
54 #define PAL_PROC_SET_FEATURE	18
55 #define PAL_RSE_INFO		19
56 #define PAL_VERSION		20
57 #define PAL_MC_CLEAR_LOG	21
58 #define PAL_MC_DRAIN		22
59 #define PAL_MC_DYNAMIC_STATE	24
60 #define PAL_MC_ERROR_INFO	25
61 #define PAL_MC_EXPECTED		23
62 #define PAL_MC_REGISTER_MEM	27
63 #define PAL_MC_RESUME		26
64 #define PAL_HALT		28
65 #define PAL_HALT_LIGHT		29
66 #define PAL_COPY_INFO		30
67 #define PAL_CACHE_LINE_INIT	31
68 #define PAL_PMI_ENTRYPOINT	32
69 #define PAL_ENTER_IA_32_ENV	33
70 #define PAL_VM_PAGE_SIZE	34
71 #define PAL_MEM_FOR_TEST	37
72 #define PAL_CACHE_PROT_INFO	38
73 #define PAL_REGISTER_INFO	39
74 #define PAL_SHUTDOWN		40
75 #define PAL_PREFETCH_VISIBILITY	41
76 
77 /*
78  * Architected stacked calling convention procedures.
79  */
80 #define PAL_COPY_PAL		256
81 #define PAL_HALT_INFO		257
82 #define PAL_TEST_PROC		258
83 #define PAL_CACHE_READ		259
84 #define PAL_CACHE_WRITE		260
85 #define PAL_VM_TR_READ		261
86 
87 /*
88  * Default physical address of the Processor Interrupt Block (PIB).
89  * See also: IA-64 SDM, rev 1.1, volume 2, page 5-31.
90  */
91 #define	PAL_PIB_DEFAULT_ADDR	0x00000000FEE00000L
92 
93 struct ia64_pal_result {
94 	int64_t		pal_status;
95 	u_int64_t	pal_result[3];
96 };
97 
98 extern struct ia64_pal_result
99 	ia64_call_pal_static(u_int64_t proc, u_int64_t arg1,
100 			     u_int64_t arg2, u_int64_t arg3);
101 extern struct ia64_pal_result
102 	ia64_call_pal_static_physical(u_int64_t proc, u_int64_t arg1,
103 				      u_int64_t arg2, u_int64_t arg3);
104 extern struct ia64_pal_result
105 	ia64_call_pal_stacked(u_int64_t proc, u_int64_t arg1,
106 			      u_int64_t arg2, u_int64_t arg3);
107 extern struct ia64_pal_result
108 	ia64_call_pal_stacked_physical(u_int64_t proc, u_int64_t arg1,
109 				       u_int64_t arg2, u_int64_t arg3);
110 
111 #endif /* _MACHINE_PAL_H_ */
112