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