xref: /netbsd-src/sys/arch/amd64/include/sysarch.h (revision d710132b4b8ce7f7cccaaf660cb16aa16b4077a0)
1 /*	$NetBSD: sysarch.h,v 1.1 2003/04/26 18:39:48 fvdl Exp $	*/
2 
3 #ifndef _AMD64_SYSARCH_H_
4 #define _AMD64_SYSARCH_H_
5 
6 /*
7  * Architecture specific syscalls (amd64)
8  */
9 #define X86_64_GET_LDT	0
10 #define X86_64_SET_LDT	1
11 #define	X86_64_IOPL	2
12 #define	X86_64_GET_IOPERM	3
13 #define	X86_64_SET_IOPERM	4
14 #define	X86_64_VM86	5
15 #define	X86_64_PMC_INFO	8
16 #define	X86_64_PMC_STARTSTOP 9
17 #define	X86_64_PMC_READ	10
18 #define X86_64_GET_MTRR   11
19 #define X86_64_SET_MTRR   12
20 
21 /*
22  * XXXfvdl todo.
23  */
24 
25 #if 0
26 
27 struct x86_64_get_ldt_args {
28 	int start;
29 	union descriptor *desc;
30 	int num;
31 };
32 
33 struct x86_64_set_ldt_args {
34 	int start;
35 	union descriptor *desc;
36 	int num;
37 };
38 
39 #endif
40 
41 struct x86_64_iopl_args {
42 	int iopl;
43 };
44 
45 #if 0
46 
47 struct x86_64_get_ioperm_args {
48 	u_long *iomap;
49 };
50 
51 struct x86_64_set_ioperm_args {
52 	u_long *iomap;
53 };
54 
55 struct x86_64_pmc_info_args {
56 	int	type;
57 	int	flags;
58 };
59 
60 #define	PMC_TYPE_NONE		0
61 #define	PMC_TYPE_I586		1
62 #define	PMC_TYPE_I686		2
63 
64 #define	PMC_INFO_HASTSC		0x01
65 
66 #define	PMC_NCOUNTERS		2
67 
68 struct x86_64_pmc_startstop_args {
69 	int counter;
70 	u_int64_t val;
71 	u_int8_t event;
72 	u_int8_t unit;
73 	u_int8_t compare;
74 	u_int8_t flags;
75 };
76 
77 #define	PMC_SETUP_KERNEL	0x01
78 #define	PMC_SETUP_USER		0x02
79 #define	PMC_SETUP_EDGE		0x04
80 #define	PMC_SETUP_INV		0x08
81 
82 struct x86_64_pmc_read_args {
83 	int counter;
84 	u_int64_t val;
85 	u_int64_t time;
86 };
87 
88 #endif /* todo */
89 
90 struct x86_64_get_mtrr_args {
91 	struct mtrr *mtrrp;
92 	int *n;
93 };
94 
95 struct x86_64_set_mtrr_args {
96 	struct mtrr *mtrrp;
97 	int *n;
98 };
99 
100 
101 #ifdef _KERNEL
102 int x86_64_iopl __P((struct lwp *, void *, register_t *));
103 int x86_64_get_mtrr __P((struct lwp *, void *, register_t *));
104 int x86_64_set_mtrr __P((struct lwp *, void *, register_t *));
105 #else
106 int x86_64_get_ldt __P((int, union descriptor *, int));
107 int x86_64_set_ldt __P((int, union descriptor *, int));
108 int x86_64_iopl __P((int));
109 int x86_64_get_ioperm __P((u_long *));
110 int x86_64_set_ioperm __P((u_long *));
111 int x86_64_pmc_info __P((struct x86_64_pmc_info_args *));
112 int x86_64_pmc_startstop __P((struct x86_64_pmc_startstop_args *));
113 int x86_64_pmc_read __P((struct x86_64_pmc_read_args *));
114 int x86_64_set_mtrr __P((struct mtrr *, int *));
115 int x86_64_get_mtrr __P((struct mtrr *, int *));
116 int sysarch __P((int, void *));
117 #endif
118 
119 #endif /* !_AMD64_SYSARCH_H_ */
120