cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

target_syscall.h (3758B)


      1/*
      2 *  x86_64 system call definitions
      3 *
      4 *
      5 *  This program is free software; you can redistribute it and/or modify
      6 *  it under the terms of the GNU General Public License as published by
      7 *  the Free Software Foundation; either version 2 of the License, or
      8 *  (at your option) any later version.
      9 *
     10 *  This program is distributed in the hope that it will be useful,
     11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 *  GNU General Public License for more details.
     14 *
     15 *  You should have received a copy of the GNU General Public License
     16 *  along with this program; if not, see <http://www.gnu.org/licenses/>.
     17 */
     18#ifndef TARGET_SYSCALL_H
     19#define TARGET_SYSCALL_H
     20
     21#define __USER_CS	(0x33)
     22#define __USER_DS	(0x2B)
     23
     24struct target_pt_regs {
     25	abi_ulong r15;
     26	abi_ulong r14;
     27	abi_ulong r13;
     28	abi_ulong r12;
     29	abi_ulong rbp;
     30	abi_ulong rbx;
     31/* arguments: non interrupts/non tracing syscalls only save up to here */
     32	abi_ulong r11;
     33	abi_ulong r10;
     34	abi_ulong r9;
     35	abi_ulong r8;
     36	abi_ulong rax;
     37	abi_ulong rcx;
     38	abi_ulong rdx;
     39	abi_ulong rsi;
     40	abi_ulong rdi;
     41	abi_ulong orig_rax;
     42/* end of arguments */
     43/* cpu exception frame or undefined */
     44	abi_ulong rip;
     45	abi_ulong cs;
     46	abi_ulong eflags;
     47	abi_ulong rsp;
     48	abi_ulong ss;
     49/* top of stack page */
     50};
     51
     52/* Maximum number of LDT entries supported. */
     53#define TARGET_LDT_ENTRIES	8192
     54/* The size of each LDT entry. */
     55#define TARGET_LDT_ENTRY_SIZE	8
     56
     57#define TARGET_GDT_ENTRIES 16
     58#define TARGET_GDT_ENTRY_TLS_ENTRIES 3
     59#define TARGET_GDT_ENTRY_TLS_MIN 12
     60#define TARGET_GDT_ENTRY_TLS_MAX 14
     61
     62#if 0 // Redefine this
     63struct target_modify_ldt_ldt_s {
     64	unsigned int  entry_number;
     65        abi_ulong     base_addr;
     66	unsigned int  limit;
     67	unsigned int  seg_32bit:1;
     68	unsigned int  contents:2;
     69	unsigned int  read_exec_only:1;
     70	unsigned int  limit_in_pages:1;
     71	unsigned int  seg_not_present:1;
     72	unsigned int  useable:1;
     73	unsigned int  lm:1;
     74};
     75#else
     76struct target_modify_ldt_ldt_s {
     77	unsigned int  entry_number;
     78        abi_ulong     base_addr;
     79	unsigned int  limit;
     80        unsigned int flags;
     81};
     82#endif
     83
     84struct target_ipc64_perm
     85{
     86	int		key;
     87	uint32_t	uid;
     88	uint32_t	gid;
     89	uint32_t	cuid;
     90	uint32_t	cgid;
     91	unsigned short		mode;
     92	unsigned short		__pad1;
     93	unsigned short		seq;
     94	unsigned short		__pad2;
     95	abi_ulong		__unused1;
     96	abi_ulong		__unused2;
     97};
     98
     99struct target_msqid64_ds {
    100	struct target_ipc64_perm msg_perm;
    101	unsigned int msg_stime;	/* last msgsnd time */
    102	unsigned int msg_rtime;	/* last msgrcv time */
    103	unsigned int msg_ctime;	/* last change time */
    104	abi_ulong  msg_cbytes;	/* current number of bytes on queue */
    105	abi_ulong  msg_qnum;	/* number of messages in queue */
    106	abi_ulong  msg_qbytes;	/* max number of bytes on queue */
    107	unsigned int msg_lspid;	/* pid of last msgsnd */
    108	unsigned int msg_lrpid;	/* last receive pid */
    109	abi_ulong  __unused4;
    110	abi_ulong  __unused5;
    111};
    112
    113/* FreeBSD sysarch(2) */
    114#define TARGET_FREEBSD_I386_GET_LDT	0
    115#define TARGET_FREEBSD_I386_SET_LDT	1
    116				/* I386_IOPL */
    117#define TARGET_FREEBSD_I386_GET_IOPERM	3
    118#define TARGET_FREEBSD_I386_SET_IOPERM	4
    119				/* xxxxx */
    120#define TARGET_FREEBSD_I386_GET_FSBASE	7
    121#define TARGET_FREEBSD_I386_SET_FSBASE	8
    122#define TARGET_FREEBSD_I386_GET_GSBASE	9
    123#define TARGET_FREEBSD_I386_SET_GSBASE	10
    124
    125#define TARGET_FREEBSD_AMD64_GET_FSBASE	128
    126#define TARGET_FREEBSD_AMD64_SET_FSBASE	129
    127#define TARGET_FREEBSD_AMD64_GET_GSBASE	130
    128#define TARGET_FREEBSD_AMD64_SET_GSBASE	131
    129
    130
    131#define UNAME_MACHINE           "x86_64"
    132#define TARGET_HW_MACHINE       "amd64"
    133#define TARGET_HW_MACHINE_ARCH  "amd64"
    134
    135#define TARGET_ARCH_SET_GS 0x1001
    136#define TARGET_ARCH_SET_FS 0x1002
    137#define TARGET_ARCH_GET_FS 0x1003
    138#define TARGET_ARCH_GET_GS 0x1004
    139
    140#endif /* TARGET_SYSCALL_H */