2 * PPC emulation for qemu: syscall definitions.
4 * Copyright (c) 2003 Jocelyn Mayer
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 /* XXX: ABSOLUTELY BUGGY:
22 * for now, this is quite just a cut-and-paste from i386 target...
25 /* default linux values for the selectors */
28 struct target_pt_regs {
29 unsigned long gpr[32];
32 unsigned long orig_gpr3; /* Used for restarting system calls */
37 unsigned long mq; /* 601 only (not used at present) */
38 /* Used on APUS to hold IPL value. */
39 unsigned long trap; /* Reason for being here */
40 unsigned long dar; /* Fault registers */
42 unsigned long result; /* Result of a system call */
46 struct target_revectored_struct {
47 target_ulong __map[8]; /* 256 bits */
56 #define TARGET_SEMOP 1
57 #define TARGET_SEMGET 2
58 #define TARGET_SEMCTL 3
59 #define TARGET_MSGSND 11
60 #define TARGET_MSGRCV 12
61 #define TARGET_MSGGET 13
62 #define TARGET_MSGCTL 14
63 #define TARGET_SHMAT 21
64 #define TARGET_SHMDT 22
65 #define TARGET_SHMGET 23
66 #define TARGET_SHMCTL 24
68 struct target_msgbuf {
73 struct target_ipc_kludge {
74 unsigned int msgp; /* Really (struct msgbuf *) */
78 struct target_ipc_perm {
88 struct target_msqid_ds {
89 struct target_ipc_perm msg_perm;
90 unsigned int msg_first; /* really struct target_msg* */
91 unsigned int msg_last; /* really struct target_msg* */
92 unsigned int msg_stime; /* really target_time_t */
93 unsigned int msg_rtime; /* really target_time_t */
94 unsigned int msg_ctime; /* really target_time_t */
95 unsigned int wwait; /* really struct wait_queue* */
96 unsigned int rwait; /* really struct wait_queue* */
97 unsigned short msg_cbytes;
98 unsigned short msg_qnum;
99 unsigned short msg_qbytes;
100 unsigned short msg_lspid;
101 unsigned short msg_lrpid;
104 struct target_shmid_ds {
105 struct target_ipc_perm shm_perm;
107 unsigned int shm_atime; /* really target_time_t */
108 unsigned int shm_dtime; /* really target_time_t */
109 unsigned int shm_ctime; /* really target_time_t */
110 unsigned short shm_cpid;
111 unsigned short shm_lpid;
113 unsigned short shm_npages;
114 unsigned long *shm_pages;
115 void *attaches; /* really struct shm_desc * */
118 #define TARGET_IPC_RMID 0
119 #define TARGET_IPC_SET 1
120 #define TARGET_IPC_STAT 2
124 unsigned int buf; /* really struct semid_ds * */
125 unsigned int array; /* really unsigned short * */
126 unsigned int __buf; /* really struct seminfo * */
127 unsigned int __pad; /* really void* */
130 #define UNAME_MACHINE "ppc"