Deleted Added
full compact
sysarch.h (230426) sysarch.h (233209)
1/*-
2 * Copyright (c) 1993 The Regents of the University of California.
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

--- 12 unchanged lines hidden (view full) ---

21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
1/*-
2 * Copyright (c) 1993 The Regents of the University of California.
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

--- 12 unchanged lines hidden (view full) ---

21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * $FreeBSD: head/sys/amd64/include/sysarch.h 230426 2012-01-21 17:45:27Z kib $
29 * $FreeBSD: head/sys/x86/include/sysarch.h 233209 2012-03-19 21:57:31Z tijl $
30 */
31
32/*
30 */
31
32/*
33 * Architecture specific syscalls (AMD64)
33 * Architecture specific syscalls (X86)
34 */
35#ifndef _MACHINE_SYSARCH_H_
36#define _MACHINE_SYSARCH_H_
37
38#include <sys/cdefs.h>
39
40#define I386_GET_LDT 0
41#define I386_SET_LDT 1
42#define LDT_AUTO_ALLOC 0xffffffff
43 /* I386_IOPL */
44#define I386_GET_IOPERM 3
45#define I386_SET_IOPERM 4
34 */
35#ifndef _MACHINE_SYSARCH_H_
36#define _MACHINE_SYSARCH_H_
37
38#include <sys/cdefs.h>
39
40#define I386_GET_LDT 0
41#define I386_SET_LDT 1
42#define LDT_AUTO_ALLOC 0xffffffff
43 /* I386_IOPL */
44#define I386_GET_IOPERM 3
45#define I386_SET_IOPERM 4
46
47/* XXX Not implementable #define I386_VM86 6 */
48
46 /* xxxxx */
47#define I386_VM86 6 /* XXX Not implementable on amd64 */
49#define I386_GET_FSBASE 7
50#define I386_SET_FSBASE 8
51#define I386_GET_GSBASE 9
52#define I386_SET_GSBASE 10
53#define I386_GET_XFPUSTATE 11
54
55/* Leave space for 0-127 for to avoid translating syscalls */
56#define AMD64_GET_FSBASE 128
57#define AMD64_SET_FSBASE 129
58#define AMD64_GET_GSBASE 130
59#define AMD64_SET_GSBASE 131
60#define AMD64_GET_XFPUSTATE 132
61
48#define I386_GET_FSBASE 7
49#define I386_SET_FSBASE 8
50#define I386_GET_GSBASE 9
51#define I386_SET_GSBASE 10
52#define I386_GET_XFPUSTATE 11
53
54/* Leave space for 0-127 for to avoid translating syscalls */
55#define AMD64_GET_FSBASE 128
56#define AMD64_SET_FSBASE 129
57#define AMD64_GET_GSBASE 130
58#define AMD64_SET_GSBASE 131
59#define AMD64_GET_XFPUSTATE 132
60
61struct i386_ioperm_args {
62 unsigned int start;
63 unsigned int length;
64 int enable;
65};
66
67#ifdef __i386__
62struct i386_ldt_args {
63 unsigned int start;
68struct i386_ldt_args {
69 unsigned int start;
64 struct user_segment_descriptor *descs __packed;
70 union descriptor *descs;
65 unsigned int num;
66};
67
71 unsigned int num;
72};
73
68struct i386_ioperm_args {
74struct i386_vm86_args {
75 int sub_op; /* sub-operation to perform */
76 char *sub_args; /* args */
77};
78
79struct i386_get_xfpustate {
80 void *addr;
81 int len;
82};
83#else
84struct i386_ldt_args {
69 unsigned int start;
85 unsigned int start;
70 unsigned int length;
71 int enable;
86 struct user_segment_descriptor *descs __packed;
87 unsigned int num;
72};
73
74struct i386_get_xfpustate {
75 unsigned int addr;
76 int len;
77};
78
79struct amd64_get_xfpustate {
80 void *addr;
81 int len;
82};
88};
89
90struct i386_get_xfpustate {
91 unsigned int addr;
92 int len;
93};
94
95struct amd64_get_xfpustate {
96 void *addr;
97 int len;
98};
99#endif
83
84#ifndef _KERNEL
100
101#ifndef _KERNEL
102union descriptor;
103struct dbreg;
104
85__BEGIN_DECLS
105__BEGIN_DECLS
106int i386_get_ldt(int, union descriptor *, int);
107int i386_set_ldt(int, union descriptor *, int);
108int i386_get_ioperm(unsigned int, unsigned int *, int *);
109int i386_set_ioperm(unsigned int, unsigned int, int);
110int i386_vm86(int, void *);
111int i386_get_fsbase(void **);
112int i386_get_gsbase(void **);
113int i386_set_fsbase(void *);
114int i386_set_gsbase(void *);
115int i386_set_watch(int, unsigned int, int, int, struct dbreg *);
116int i386_clr_watch(int, struct dbreg *);
86int amd64_get_fsbase(void **);
87int amd64_get_gsbase(void **);
88int amd64_set_fsbase(void *);
89int amd64_set_gsbase(void *);
90int sysarch(int, void *);
91__END_DECLS
92#else
93struct thread;
94union descriptor;
95
117int amd64_get_fsbase(void **);
118int amd64_get_gsbase(void **);
119int amd64_set_fsbase(void *);
120int amd64_set_gsbase(void *);
121int sysarch(int, void *);
122__END_DECLS
123#else
124struct thread;
125union descriptor;
126
127int i386_get_ldt(struct thread *, struct i386_ldt_args *);
128int i386_set_ldt(struct thread *, struct i386_ldt_args *, union descriptor *);
129int i386_get_ioperm(struct thread *, struct i386_ioperm_args *);
130int i386_set_ioperm(struct thread *, struct i386_ioperm_args *);
96int amd64_get_ldt(struct thread *, struct i386_ldt_args *);
97int amd64_set_ldt(struct thread *, struct i386_ldt_args *,
98 struct user_segment_descriptor *);
99int amd64_get_ioperm(struct thread *, struct i386_ioperm_args *);
100int amd64_set_ioperm(struct thread *, struct i386_ioperm_args *);
101#endif
102
103#endif /* !_MACHINE_SYSARCH_H_ */
131int amd64_get_ldt(struct thread *, struct i386_ldt_args *);
132int amd64_set_ldt(struct thread *, struct i386_ldt_args *,
133 struct user_segment_descriptor *);
134int amd64_get_ioperm(struct thread *, struct i386_ioperm_args *);
135int amd64_set_ioperm(struct thread *, struct i386_ioperm_args *);
136#endif
137
138#endif /* !_MACHINE_SYSARCH_H_ */