Commit 7ed601b782cbcaf0cddff6c5725712e47972f26d
1 parent
d1f2367b
more syscalls
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@59 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
210 additions
and
0 deletions
syscall-i386.h
| ... | ... | @@ -237,6 +237,36 @@ |
| 237 | 237 | #define TARGET_NR_removexattr 235 |
| 238 | 238 | #define TARGET_NR_lremovexattr 236 |
| 239 | 239 | #define TARGET_NR_fremovexattr 237 |
| 240 | +#define TARGET_NR_tkill 238 | |
| 241 | +#define TARGET_NR_sendfile64 239 | |
| 242 | +#define TARGET_NR_futex 240 | |
| 243 | +#define TARGET_NR_sched_setaffinity 241 | |
| 244 | +#define TARGET_NR_sched_getaffinity 242 | |
| 245 | +#define TARGET_NR_set_thread_area 243 | |
| 246 | +#define TARGET_NR_get_thread_area 244 | |
| 247 | +#define TARGET_NR_io_setup 245 | |
| 248 | +#define TARGET_NR_io_destroy 246 | |
| 249 | +#define TARGET_NR_io_getevents 247 | |
| 250 | +#define TARGET_NR_io_submit 248 | |
| 251 | +#define TARGET_NR_io_cancel 249 | |
| 252 | +#define TARGET_NR_fadvise64 250 | |
| 253 | + | |
| 254 | +#define TARGET_NR_exit_group 252 | |
| 255 | +#define TARGET_NR_lookup_dcookie 253 | |
| 256 | +#define TARGET_NR_epoll_create 254 | |
| 257 | +#define TARGET_NR_epoll_ctl 255 | |
| 258 | +#define TARGET_NR_epoll_wait 256 | |
| 259 | +#define TARGET_NR_remap_file_pages 257 | |
| 260 | +#define TARGET_NR_set_tid_address 258 | |
| 261 | +#define TARGET_NR_timer_create 259 | |
| 262 | +#define TARGET_NR_timer_settime (TARGET_NR_timer_create+1) | |
| 263 | +#define TARGET_NR_timer_gettime (TARGET_NR_timer_create+2) | |
| 264 | +#define TARGET_NR_timer_getoverrun (TARGET_NR_timer_create+3) | |
| 265 | +#define TARGET_NR_timer_delete (TARGET_NR_timer_create+4) | |
| 266 | +#define TARGET_NR_clock_settime (TARGET_NR_timer_create+5) | |
| 267 | +#define TARGET_NR_clock_gettime (TARGET_NR_timer_create+6) | |
| 268 | +#define TARGET_NR_clock_getres (TARGET_NR_timer_create+7) | |
| 269 | +#define TARGET_NR_clock_nanosleep (TARGET_NR_timer_create+8) | |
| 240 | 270 | |
| 241 | 271 | #define TARGET_SIG_BLOCK 0 /* for blocking signals */ |
| 242 | 272 | #define TARGET_SIG_UNBLOCK 1 /* for unblocking signals */ |
| ... | ... | @@ -714,6 +744,10 @@ struct target_termios { |
| 714 | 744 | #define TARGET_LDT_ENTRIES 8192 |
| 715 | 745 | #define TARGET_LDT_ENTRY_SIZE 8 |
| 716 | 746 | |
| 747 | +#define TARGET_GDT_ENTRY_TLS_ENTRIES 3 | |
| 748 | +#define TARGET_GDT_ENTRY_TLS_MIN 6 | |
| 749 | +#define TARGET_GDT_ENTRY_TLS_MAX (TARGET_GDT_ENTRY_TLS_MIN + TARGET_GDT_ENTRY_TLS_ENTRIES - 1) | |
| 750 | + | |
| 717 | 751 | struct target_modify_ldt_ldt_s { |
| 718 | 752 | unsigned int entry_number; |
| 719 | 753 | target_ulong base_addr; |
| ... | ... | @@ -721,6 +755,182 @@ struct target_modify_ldt_ldt_s { |
| 721 | 755 | unsigned int flags; |
| 722 | 756 | }; |
| 723 | 757 | |
| 758 | +#define TARGET_VM86_SIGNAL 0 /* return due to signal */ | |
| 759 | +#define TARGET_VM86_UNKNOWN 1 /* unhandled GP fault - IO-instruction or similar */ | |
| 760 | +#define TARGET_VM86_INTx 2 /* int3/int x instruction (ARG = x) */ | |
| 761 | +#define TARGET_VM86_STI 3 /* sti/popf/iret instruction enabled virtual interrupts */ | |
| 762 | + | |
| 763 | +/* | |
| 764 | + * Additional return values when invoking new vm86() | |
| 765 | + */ | |
| 766 | +#define TARGET_VM86_PICRETURN 4 /* return due to pending PIC request */ | |
| 767 | +#define TARGET_VM86_TRAP 6 /* return due to DOS-debugger request */ | |
| 768 | + | |
| 769 | +/* | |
| 770 | + * function codes when invoking new vm86() | |
| 771 | + */ | |
| 772 | +#define TARGET_VM86_PLUS_INSTALL_CHECK 0 | |
| 773 | +#define TARGET_VM86_ENTER 1 | |
| 774 | +#define TARGET_VM86_ENTER_NO_BYPASS 2 | |
| 775 | +#define TARGET_VM86_REQUEST_IRQ 3 | |
| 776 | +#define TARGET_VM86_FREE_IRQ 4 | |
| 777 | +#define TARGET_VM86_GET_IRQ_BITS 5 | |
| 778 | +#define TARGET_VM86_GET_AND_RESET_IRQ 6 | |
| 779 | + | |
| 780 | +/* | |
| 781 | + * This is the stack-layout seen by the user space program when we have | |
| 782 | + * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout | |
| 783 | + * is 'kernel_vm86_regs' (see below). | |
| 784 | + */ | |
| 785 | + | |
| 786 | +struct target_vm86_regs { | |
| 787 | +/* | |
| 788 | + * normal regs, with special meaning for the segment descriptors.. | |
| 789 | + */ | |
| 790 | + target_long ebx; | |
| 791 | + target_long ecx; | |
| 792 | + target_long edx; | |
| 793 | + target_long esi; | |
| 794 | + target_long edi; | |
| 795 | + target_long ebp; | |
| 796 | + target_long eax; | |
| 797 | + target_long __null_ds; | |
| 798 | + target_long __null_es; | |
| 799 | + target_long __null_fs; | |
| 800 | + target_long __null_gs; | |
| 801 | + target_long orig_eax; | |
| 802 | + target_long eip; | |
| 803 | + unsigned short cs, __csh; | |
| 804 | + target_long eflags; | |
| 805 | + target_long esp; | |
| 806 | + unsigned short ss, __ssh; | |
| 807 | +/* | |
| 808 | + * these are specific to v86 mode: | |
| 809 | + */ | |
| 810 | + unsigned short es, __esh; | |
| 811 | + unsigned short ds, __dsh; | |
| 812 | + unsigned short fs, __fsh; | |
| 813 | + unsigned short gs, __gsh; | |
| 814 | +}; | |
| 815 | + | |
| 816 | +struct target_revectored_struct { | |
| 817 | + target_ulong __map[8]; /* 256 bits */ | |
| 818 | +}; | |
| 819 | + | |
| 820 | +struct target_vm86_struct { | |
| 821 | + struct target_vm86_regs regs; | |
| 822 | + target_ulong flags; | |
| 823 | + target_ulong screen_bitmap; | |
| 824 | + target_ulong cpu_type; | |
| 825 | + struct target_revectored_struct int_revectored; | |
| 826 | + struct target_revectored_struct int21_revectored; | |
| 827 | +}; | |
| 828 | + | |
| 829 | +/* | |
| 830 | + * flags masks | |
| 831 | + */ | |
| 832 | +#define TARGET_VM86_SCREEN_BITMAP 0x0001 | |
| 833 | + | |
| 834 | +struct target_vm86plus_info_struct { | |
| 835 | + target_ulong flags; | |
| 836 | +#define TARGET_force_return_for_pic (1 << 0) | |
| 837 | +#define TARGET_vm86dbg_active (1 << 1) /* for debugger */ | |
| 838 | +#define TARGET_vm86dbg_TFpendig (1 << 2) /* for debugger */ | |
| 839 | +#define TARGET_is_vm86pus (1 << 31) /* for vm86 internal use */ | |
| 840 | + unsigned char vm86dbg_intxxtab[32]; /* for debugger */ | |
| 841 | +}; | |
| 842 | + | |
| 843 | +struct target_vm86plus_struct { | |
| 844 | + struct target_vm86_regs regs; | |
| 845 | + target_ulong flags; | |
| 846 | + target_ulong screen_bitmap; | |
| 847 | + target_ulong cpu_type; | |
| 848 | + struct target_revectored_struct int_revectored; | |
| 849 | + struct target_revectored_struct int21_revectored; | |
| 850 | + struct target_vm86plus_info_struct vm86plus; | |
| 851 | +}; | |
| 852 | + | |
| 853 | +/* ipcs */ | |
| 854 | + | |
| 855 | +#define TARGET_SEMOP 1 | |
| 856 | +#define TARGET_SEMGET 2 | |
| 857 | +#define TARGET_SEMCTL 3 | |
| 858 | +#define TARGET_MSGSND 11 | |
| 859 | +#define TARGET_MSGRCV 12 | |
| 860 | +#define TARGET_MSGGET 13 | |
| 861 | +#define TARGET_MSGCTL 14 | |
| 862 | +#define TARGET_SHMAT 21 | |
| 863 | +#define TARGET_SHMDT 22 | |
| 864 | +#define TARGET_SHMGET 23 | |
| 865 | +#define TARGET_SHMCTL 24 | |
| 866 | + | |
| 867 | +struct target_msgbuf { | |
| 868 | + int mtype; | |
| 869 | + char mtext[1]; | |
| 870 | +}; | |
| 871 | + | |
| 872 | +struct target_ipc_kludge { | |
| 873 | + unsigned int msgp; /* Really (struct msgbuf *) */ | |
| 874 | + int msgtyp; | |
| 875 | +}; | |
| 876 | + | |
| 877 | +struct alpha_msgbuf { | |
| 878 | + long mtype; | |
| 879 | + char mtext[4096]; | |
| 880 | +}; | |
| 881 | + | |
| 882 | +struct target_ipc_perm { | |
| 883 | + int key; | |
| 884 | + unsigned short uid; | |
| 885 | + unsigned short gid; | |
| 886 | + unsigned short cuid; | |
| 887 | + unsigned short cgid; | |
| 888 | + unsigned short mode; | |
| 889 | + unsigned short seq; | |
| 890 | +}; | |
| 891 | + | |
| 892 | +struct target_msqid_ds { | |
| 893 | + struct target_ipc_perm msg_perm; | |
| 894 | + unsigned int msg_first; /* really struct target_msg* */ | |
| 895 | + unsigned int msg_last; /* really struct target_msg* */ | |
| 896 | + unsigned int msg_stime; /* really target_time_t */ | |
| 897 | + unsigned int msg_rtime; /* really target_time_t */ | |
| 898 | + unsigned int msg_ctime; /* really target_time_t */ | |
| 899 | + unsigned int wwait; /* really struct wait_queue* */ | |
| 900 | + unsigned int rwait; /* really struct wait_queue* */ | |
| 901 | + unsigned short msg_cbytes; | |
| 902 | + unsigned short msg_qnum; | |
| 903 | + unsigned short msg_qbytes; | |
| 904 | + unsigned short msg_lspid; | |
| 905 | + unsigned short msg_lrpid; | |
| 906 | +}; | |
| 907 | + | |
| 908 | +struct target_shmid_ds { | |
| 909 | + struct target_ipc_perm shm_perm; | |
| 910 | + int shm_segsz; | |
| 911 | + unsigned int shm_atime; /* really target_time_t */ | |
| 912 | + unsigned int shm_dtime; /* really target_time_t */ | |
| 913 | + unsigned int shm_ctime; /* really target_time_t */ | |
| 914 | + unsigned short shm_cpid; | |
| 915 | + unsigned short shm_lpid; | |
| 916 | + short shm_nattch; | |
| 917 | + unsigned short shm_npages; | |
| 918 | + unsigned long *shm_pages; | |
| 919 | + void *attaches; /* really struct shm_desc * */ | |
| 920 | +}; | |
| 921 | + | |
| 922 | +#define TARGET_IPC_RMID 0 | |
| 923 | +#define TARGET_IPC_SET 1 | |
| 924 | +#define TARGET_IPC_STAT 2 | |
| 925 | + | |
| 926 | +union target_semun { | |
| 927 | + int val; | |
| 928 | + unsigned int buf; /* really struct semid_ds * */ | |
| 929 | + unsigned int array; /* really unsigned short * */ | |
| 930 | + unsigned int __buf; /* really struct seminfo * */ | |
| 931 | + unsigned int __pad; /* really void* */ | |
| 932 | +}; | |
| 933 | + | |
| 724 | 934 | /* soundcard defines (XXX: move them to generic file syscall_defs.h) */ |
| 725 | 935 | |
| 726 | 936 | #define TARGET_SNDCTL_COPR_HALT 0xc0144307 | ... | ... |