1 /* $OpenBSD: sysarch.h,v 1.12 2012/12/05 23:20:12 deraadt Exp $ */ 2 /* $NetBSD: sysarch.h,v 1.8 1996/01/08 13:51:44 mycroft Exp $ */ 3 4 #ifndef _MACHINE_SYSARCH_H_ 5 #define _MACHINE_SYSARCH_H_ 6 7 /* 8 * Architecture specific syscalls (i386) 9 */ 10 #define I386_GET_LDT 0 11 #define I386_SET_LDT 1 12 #define I386_IOPL 2 13 #define I386_GET_IOPERM 3 14 #define I386_SET_IOPERM 4 15 #define I386_VM86 5 16 #define I386_GET_FSBASE 6 17 #define I386_SET_FSBASE 7 18 #define I386_GET_GSBASE 8 19 #define I386_SET_GSBASE 9 20 21 struct i386_get_ldt_args { 22 int start; 23 union descriptor *desc; 24 int num; 25 }; 26 27 struct i386_set_ldt_args { 28 int start; 29 union descriptor *desc; 30 int num; 31 }; 32 33 struct i386_iopl_args { 34 int iopl; 35 }; 36 37 struct i386_get_ioperm_args { 38 u_long *iomap; 39 }; 40 41 struct i386_set_ioperm_args { 42 u_long *iomap; 43 }; 44 45 #ifdef _KERNEL 46 uint32_t i386_get_threadbase(struct proc *, int); 47 int i386_set_threadbase(struct proc *, uint32_t, int); 48 #else 49 50 #include <sys/cdefs.h> 51 52 __BEGIN_DECLS 53 int i386_get_ldt(int, union descriptor *, int); 54 int i386_set_ldt(int, union descriptor *, int); 55 int i386_iopl(int); 56 int i386_get_ioperm(u_long *); 57 int i386_set_ioperm(u_long *); 58 int i386_get_fsbase(void **); 59 int i386_set_fsbase(void *); 60 int i386_get_gsbase(void **); 61 int i386_set_gsbase(void *); 62 int sysarch(int, void *); 63 __END_DECLS 64 #endif 65 66 #endif /* !_MACHINE_SYSARCH_H_ */ 67