72805df917
Map kernel stacks only at unique addresses. Use one TSS per process. Add sysarch calls for modifying IOPL and the I/O permission bitmap. Add a compacting GDT entry allocator, for TSS and LDT selectors. Enable modifying %fs and %gs with PT_SETREGS. Sanitize various bits of code.
49 lines
874 B
C
49 lines
874 B
C
/* $NetBSD: sysarch.h,v 1.7 1995/10/11 04:20:26 mycroft Exp $ */
|
|
|
|
#ifndef _I386_SYSARCH_H_
|
|
#define _I386_SYSARCH_H_
|
|
|
|
/*
|
|
* Architecture specific syscalls (i386)
|
|
*/
|
|
#define I386_GET_LDT 0
|
|
#define I386_SET_LDT 1
|
|
#define I386_IOPL 2
|
|
#define I386_GET_IOPERM 3
|
|
#define I386_SET_IOPERM 4
|
|
|
|
struct i386_get_ldt_args {
|
|
int start;
|
|
union descriptor *desc;
|
|
int num;
|
|
};
|
|
|
|
struct i386_set_ldt_args {
|
|
int start;
|
|
union descriptor *desc;
|
|
int num;
|
|
};
|
|
|
|
struct i386_iopl_args {
|
|
int iopl;
|
|
};
|
|
|
|
struct i386_get_ioperm_args {
|
|
u_long *iomap;
|
|
};
|
|
|
|
struct i386_set_ioperm_args {
|
|
u_long *iomap;
|
|
};
|
|
|
|
#ifndef _KERNEL
|
|
int i386_get_ldt __P((int, union descriptor *, int));
|
|
int i386_set_ldt __P((int, union descriptor *, int));
|
|
int i386_iopl __P((int));
|
|
int i386_get_ioperm __P((u_long *));
|
|
int i386_set_ioperm __P((u_long *));
|
|
int sysarch __P((int, char *));
|
|
#endif
|
|
|
|
#endif /* !_I386_SYSARCH_H_ */
|