Annotation of sys/arch/amd64/include/sysarch.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: sysarch.h,v 1.3 2004/02/27 23:45:55 deraadt Exp $ */
! 2: /* $NetBSD: sysarch.h,v 1.1 2003/04/26 18:39:48 fvdl Exp $ */
! 3:
! 4: #ifndef _AMD64_SYSARCH_H_
! 5: #define _AMD64_SYSARCH_H_
! 6:
! 7: /*
! 8: * Architecture specific syscalls (amd64)
! 9: */
! 10: #define AMD64_GET_LDT 0
! 11: #define AMD64_SET_LDT 1
! 12: #define AMD64_IOPL 2
! 13: #define AMD64_GET_IOPERM 3
! 14: #define AMD64_SET_IOPERM 4
! 15: #define AMD64_VM86 5
! 16: #define AMD64_PMC_INFO 8
! 17: #define AMD64_PMC_STARTSTOP 9
! 18: #define AMD64_PMC_READ 10
! 19: #define AMD64_GET_MTRR 11
! 20: #define AMD64_SET_MTRR 12
! 21:
! 22: /*
! 23: * XXX todo.
! 24: */
! 25: struct amd64_get_ldt_args {
! 26: int start;
! 27: union descriptor *desc;
! 28: int num;
! 29: };
! 30:
! 31: struct amd64_set_ldt_args {
! 32: int start;
! 33: union descriptor *desc;
! 34: int num;
! 35: };
! 36:
! 37: struct amd64_iopl_args {
! 38: int iopl;
! 39: };
! 40:
! 41: struct amd64_get_ioperm_args {
! 42: u_long *iomap;
! 43: };
! 44:
! 45: struct amd64_set_ioperm_args {
! 46: u_long *iomap;
! 47: };
! 48:
! 49: struct amd64_pmc_info_args {
! 50: int type;
! 51: int flags;
! 52: };
! 53:
! 54: #define PMC_TYPE_NONE 0
! 55: #define PMC_TYPE_I586 1
! 56: #define PMC_TYPE_I686 2
! 57:
! 58: #define PMC_INFO_HASTSC 0x01
! 59:
! 60: #define PMC_NCOUNTERS 2
! 61:
! 62: struct amd64_pmc_startstop_args {
! 63: int counter;
! 64: u_int64_t val;
! 65: u_int8_t event;
! 66: u_int8_t unit;
! 67: u_int8_t compare;
! 68: u_int8_t flags;
! 69: };
! 70:
! 71: #define PMC_SETUP_KERNEL 0x01
! 72: #define PMC_SETUP_USER 0x02
! 73: #define PMC_SETUP_EDGE 0x04
! 74: #define PMC_SETUP_INV 0x08
! 75:
! 76: struct amd64_pmc_read_args {
! 77: int counter;
! 78: u_int64_t val;
! 79: u_int64_t time;
! 80: };
! 81:
! 82: struct amd64_get_mtrr_args {
! 83: struct mtrr *mtrrp;
! 84: int *n;
! 85: };
! 86:
! 87: struct amd64_set_mtrr_args {
! 88: struct mtrr *mtrrp;
! 89: int *n;
! 90: };
! 91:
! 92:
! 93: #ifdef _KERNEL
! 94: int amd64_iopl(struct proc *, void *, register_t *);
! 95: int amd64_get_mtrr(struct proc *, void *, register_t *);
! 96: int amd64_set_mtrr(struct proc *, void *, register_t *);
! 97: #else
! 98: int amd64_get_ldt(int, union descriptor *, int);
! 99: int amd64_set_ldt(int, union descriptor *, int);
! 100: int amd64_iopl(int);
! 101: int amd64_get_ioperm(u_long *);
! 102: int amd64_set_ioperm(u_long *);
! 103: int amd64_pmc_info(struct amd64_pmc_info_args *);
! 104: int amd64_pmc_startstop(struct amd64_pmc_startstop_args *);
! 105: int amd64_pmc_read(struct amd64_pmc_read_args *);
! 106: int amd64_set_mtrr(struct mtrr *, int *);
! 107: int amd64_get_mtrr(struct mtrr *, int *);
! 108: int sysarch(int, void *);
! 109: #endif
! 110:
! 111: #endif /* !_AMD64_SYSARCH_H_ */
CVSweb