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 (2581B)


      1#ifndef X86_64_TARGET_SYSCALL_H
      2#define X86_64_TARGET_SYSCALL_H
      3
      4#define __USER_CS	(0x33)
      5#define __USER_DS	(0x2B)
      6
      7struct target_pt_regs {
      8	abi_ulong r15;
      9	abi_ulong r14;
     10	abi_ulong r13;
     11	abi_ulong r12;
     12	abi_ulong rbp;
     13	abi_ulong rbx;
     14/* arguments: non interrupts/non tracing syscalls only save up to here */
     15	abi_ulong r11;
     16	abi_ulong r10;
     17	abi_ulong r9;
     18	abi_ulong r8;
     19	abi_ulong rax;
     20	abi_ulong rcx;
     21	abi_ulong rdx;
     22	abi_ulong rsi;
     23	abi_ulong rdi;
     24	abi_ulong orig_rax;
     25/* end of arguments */
     26/* cpu exception frame or undefined */
     27	abi_ulong rip;
     28	abi_ulong cs;
     29	abi_ulong eflags;
     30	abi_ulong rsp;
     31	abi_ulong ss;
     32/* top of stack page */
     33};
     34
     35/* Maximum number of LDT entries supported. */
     36#define TARGET_LDT_ENTRIES	8192
     37/* The size of each LDT entry. */
     38#define TARGET_LDT_ENTRY_SIZE	8
     39
     40#define TARGET_GDT_ENTRIES 16
     41#define TARGET_GDT_ENTRY_TLS_ENTRIES 3
     42#define TARGET_GDT_ENTRY_TLS_MIN 12
     43#define TARGET_GDT_ENTRY_TLS_MAX 14
     44
     45#if 0 // Redefine this
     46struct target_modify_ldt_ldt_s {
     47	unsigned int  entry_number;
     48        abi_ulong     base_addr;
     49	unsigned int  limit;
     50	unsigned int  seg_32bit:1;
     51	unsigned int  contents:2;
     52	unsigned int  read_exec_only:1;
     53	unsigned int  limit_in_pages:1;
     54	unsigned int  seg_not_present:1;
     55	unsigned int  useable:1;
     56	unsigned int  lm:1;
     57};
     58#else
     59struct target_modify_ldt_ldt_s {
     60	unsigned int  entry_number;
     61        abi_ulong     base_addr;
     62	unsigned int  limit;
     63        unsigned int flags;
     64};
     65#endif
     66
     67struct target_ipc64_perm
     68{
     69	int		key;
     70	uint32_t	uid;
     71	uint32_t	gid;
     72	uint32_t	cuid;
     73	uint32_t	cgid;
     74	unsigned short		mode;
     75	unsigned short		__pad1;
     76	unsigned short		seq;
     77	unsigned short		__pad2;
     78	abi_ulong		__unused1;
     79	abi_ulong		__unused2;
     80};
     81
     82struct target_msqid64_ds {
     83	struct target_ipc64_perm msg_perm;
     84	unsigned int msg_stime;	/* last msgsnd time */
     85	unsigned int msg_rtime;	/* last msgrcv time */
     86	unsigned int msg_ctime;	/* last change time */
     87	abi_ulong  msg_cbytes;	/* current number of bytes on queue */
     88	abi_ulong  msg_qnum;	/* number of messages in queue */
     89	abi_ulong  msg_qbytes;	/* max number of bytes on queue */
     90	unsigned int msg_lspid;	/* pid of last msgsnd */
     91	unsigned int msg_lrpid;	/* last receive pid */
     92	abi_ulong  __unused4;
     93	abi_ulong  __unused5;
     94};
     95
     96#define UNAME_MACHINE "x86_64"
     97#define UNAME_MINIMUM_RELEASE "2.6.32"
     98
     99#define TARGET_ARCH_SET_GS 0x1001
    100#define TARGET_ARCH_SET_FS 0x1002
    101#define TARGET_ARCH_GET_FS 0x1003
    102#define TARGET_ARCH_GET_GS 0x1004
    103#define TARGET_MINSIGSTKSZ 2048
    104#define TARGET_MCL_CURRENT 1
    105#define TARGET_MCL_FUTURE  2
    106#define TARGET_MCL_ONFAULT 4
    107
    108#endif /* X86_64_TARGET_SYSCALL_H */