Revision cb33da57
b/Changelog | ||
---|---|---|
13 | 13 |
- Read-only support for Parallels disk images (Alex Beregszaszi) |
14 | 14 |
- SVM (x86 virtualization) support (Alexander Graf) |
15 | 15 |
- CRIS emulation (Edgar E. Iglesias) |
16 |
- SPARC32PLUS execution support (Blue Swirl) |
|
16 | 17 |
|
17 | 18 |
version 0.9.0: |
18 | 19 |
|
b/Makefile.target | ||
---|---|---|
254 | 254 |
ifdef TARGET_HAS_BFLT |
255 | 255 |
OBJS+= flatload.o |
256 | 256 |
endif |
257 |
ifdef TARGET_HAS_ELFLOAD32 |
|
258 |
OBJS+= elfload32.o |
|
259 |
elfload32.o: elfload.c |
|
260 |
endif |
|
257 | 261 |
|
258 | 262 |
ifeq ($(TARGET_ARCH), i386) |
259 | 263 |
OBJS+= vm86.o |
b/configure | ||
---|---|---|
999 | 999 |
echo "#include \"../config-host.h\"" >> $config_h |
1000 | 1000 |
|
1001 | 1001 |
bflt="no" |
1002 |
elfload32="no" |
|
1002 | 1003 |
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"` |
1003 | 1004 |
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h |
1004 | 1005 |
|
... | ... | |
1023 | 1024 |
echo "#define TARGET_ARCH \"sparc64\"" >> $config_h |
1024 | 1025 |
echo "#define TARGET_SPARC 1" >> $config_h |
1025 | 1026 |
echo "#define TARGET_SPARC64 1" >> $config_h |
1027 |
elfload32="yes" |
|
1026 | 1028 |
elif test "$target_cpu" = "ppc" ; then |
1027 | 1029 |
echo "TARGET_ARCH=ppc" >> $config_mak |
1028 | 1030 |
echo "#define TARGET_ARCH \"ppc\"" >> $config_h |
... | ... | |
1112 | 1114 |
echo "TARGET_HAS_BFLT=yes" >> $config_mak |
1113 | 1115 |
echo "#define TARGET_HAS_BFLT 1" >> $config_h |
1114 | 1116 |
fi |
1117 |
# 32 bit ELF loader in addition to native 64 bit loader? |
|
1118 |
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then |
|
1119 |
echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak |
|
1120 |
echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h |
|
1121 |
fi |
|
1115 | 1122 |
# sdl defines |
1116 | 1123 |
|
1117 | 1124 |
if test "$target_user_only" = "no"; then |
b/linux-user/elfload.c | ||
---|---|---|
12 | 12 |
#include "qemu.h" |
13 | 13 |
#include "disas.h" |
14 | 14 |
|
15 |
/* from personality.h */ |
|
16 |
|
|
17 |
/* |
|
18 |
* Flags for bug emulation. |
|
19 |
* |
|
20 |
* These occupy the top three bytes. |
|
21 |
*/ |
|
22 |
enum { |
|
23 |
ADDR_NO_RANDOMIZE = 0x0040000, /* disable randomization of VA space */ |
|
24 |
FDPIC_FUNCPTRS = 0x0080000, /* userspace function ptrs point to descriptors |
|
25 |
* (signal handling) |
|
26 |
*/ |
|
27 |
MMAP_PAGE_ZERO = 0x0100000, |
|
28 |
ADDR_COMPAT_LAYOUT = 0x0200000, |
|
29 |
READ_IMPLIES_EXEC = 0x0400000, |
|
30 |
ADDR_LIMIT_32BIT = 0x0800000, |
|
31 |
SHORT_INODE = 0x1000000, |
|
32 |
WHOLE_SECONDS = 0x2000000, |
|
33 |
STICKY_TIMEOUTS = 0x4000000, |
|
34 |
ADDR_LIMIT_3GB = 0x8000000, |
|
35 |
}; |
|
36 |
|
|
37 |
/* |
|
38 |
* Personality types. |
|
39 |
* |
|
40 |
* These go in the low byte. Avoid using the top bit, it will |
|
41 |
* conflict with error returns. |
|
42 |
*/ |
|
43 |
enum { |
|
44 |
PER_LINUX = 0x0000, |
|
45 |
PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, |
|
46 |
PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, |
|
47 |
PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, |
|
48 |
PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE, |
|
49 |
PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | |
|
50 |
WHOLE_SECONDS | SHORT_INODE, |
|
51 |
PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS, |
|
52 |
PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE, |
|
53 |
PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS, |
|
54 |
PER_BSD = 0x0006, |
|
55 |
PER_SUNOS = 0x0006 | STICKY_TIMEOUTS, |
|
56 |
PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE, |
|
57 |
PER_LINUX32 = 0x0008, |
|
58 |
PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, |
|
59 |
PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,/* IRIX5 32-bit */ |
|
60 |
PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,/* IRIX6 new 32-bit */ |
|
61 |
PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,/* IRIX6 64-bit */ |
|
62 |
PER_RISCOS = 0x000c, |
|
63 |
PER_SOLARIS = 0x000d | STICKY_TIMEOUTS, |
|
64 |
PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, |
|
65 |
PER_OSF4 = 0x000f, /* OSF/1 v4 */ |
|
66 |
PER_HPUX = 0x0010, |
|
67 |
PER_MASK = 0x00ff, |
|
68 |
}; |
|
69 |
|
|
70 |
/* |
|
71 |
* Return the base personality without flags. |
|
72 |
*/ |
|
73 |
#define personality(pers) (pers & PER_MASK) |
|
74 |
|
|
15 | 75 |
/* this flag is uneffective under linux too, should be deleted */ |
16 | 76 |
#ifndef MAP_DENYWRITE |
17 | 77 |
#define MAP_DENYWRITE 0 |
... | ... | |
154 | 214 |
|
155 | 215 |
#define ELF_START_MMAP 0x80000000 |
156 | 216 |
|
157 |
#define elf_check_arch(x) ( (x) == EM_SPARCV9 ) |
|
217 |
#define elf_check_arch(x) ( (x) == EM_SPARCV9 || (x) == EM_SPARC32PLUS )
|
|
158 | 218 |
|
159 | 219 |
#define ELF_CLASS ELFCLASS64 |
160 | 220 |
#define ELF_DATA ELFDATA2MSB |
... | ... | |
168 | 228 |
regs->pc = infop->entry; |
169 | 229 |
regs->npc = regs->pc + 4; |
170 | 230 |
regs->y = 0; |
171 |
regs->u_regs[14] = infop->start_stack - 16 * 8 - STACK_BIAS; |
|
231 |
if (personality(infop->personality) == PER_LINUX32) |
|
232 |
regs->u_regs[14] = infop->start_stack - 16 * 4; |
|
233 |
else |
|
234 |
regs->u_regs[14] = infop->start_stack - 16 * 8 - STACK_BIAS; |
|
172 | 235 |
} |
173 | 236 |
|
174 | 237 |
#else |
... | ... | |
412 | 475 |
#define ELF_HWCAP 0 |
413 | 476 |
#endif |
414 | 477 |
|
478 |
#ifdef OVERRIDE_ELF_CLASS |
|
479 |
#undef ELF_CLASS |
|
480 |
#define ELF_CLASS OVERRIDE_ELF_CLASS |
|
481 |
#undef bswaptls |
|
482 |
#define bswaptls(ptr) bswap32s(ptr) |
|
483 |
#endif |
|
484 |
|
|
415 | 485 |
#include "elf.h" |
416 | 486 |
|
417 | 487 |
struct exec |
... | ... | |
439 | 509 |
/* max code+data+bss+brk space allocated to ET_DYN executables */ |
440 | 510 |
#define ET_DYN_MAP_SIZE (128 * 1024 * 1024) |
441 | 511 |
|
442 |
/* from personality.h */ |
|
443 |
|
|
444 |
/* Flags for bug emulation. These occupy the top three bytes. */ |
|
445 |
#define STICKY_TIMEOUTS 0x4000000 |
|
446 |
#define WHOLE_SECONDS 0x2000000 |
|
447 |
|
|
448 |
/* Personality types. These go in the low byte. Avoid using the top bit, |
|
449 |
* it will conflict with error returns. |
|
450 |
*/ |
|
451 |
#define PER_MASK (0x00ff) |
|
452 |
#define PER_LINUX (0x0000) |
|
453 |
#define PER_SVR4 (0x0001 | STICKY_TIMEOUTS) |
|
454 |
#define PER_SVR3 (0x0002 | STICKY_TIMEOUTS) |
|
455 |
#define PER_SCOSVR3 (0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS) |
|
456 |
#define PER_WYSEV386 (0x0004 | STICKY_TIMEOUTS) |
|
457 |
#define PER_ISCR4 (0x0005 | STICKY_TIMEOUTS) |
|
458 |
#define PER_BSD (0x0006) |
|
459 |
#define PER_XENIX (0x0007 | STICKY_TIMEOUTS) |
|
460 |
|
|
461 | 512 |
/* Necessary parameters */ |
462 | 513 |
#define TARGET_ELF_EXEC_PAGESIZE TARGET_PAGE_SIZE |
463 | 514 |
#define TARGET_ELF_PAGESTART(_v) ((_v) & ~(unsigned long)(TARGET_ELF_EXEC_PAGESIZE-1)) |
... | ... | |
587 | 638 |
return p; |
588 | 639 |
} |
589 | 640 |
|
590 |
target_ulong setup_arg_pages(target_ulong p, struct linux_binprm * bprm,
|
|
591 |
struct image_info * info)
|
|
641 |
static target_ulong setup_arg_pages(target_ulong p, struct linux_binprm *bprm,
|
|
642 |
struct image_info *info)
|
|
592 | 643 |
{ |
593 | 644 |
target_ulong stack_base, size, error; |
594 | 645 |
int i; |
b/linux-user/elfload32.c | ||
---|---|---|
1 |
#define OVERRIDE_ELF_CLASS ELFCLASS32 |
|
2 |
#define load_elf_binary load_elf_binary32 |
|
3 |
#define do_init_thread do_init_thread32 |
|
4 |
|
|
5 |
#include "elfload.c" |
|
6 |
|
|
7 |
#undef load_elf_binary |
|
8 |
#undef do_init_thread |
|
9 |
|
|
10 |
int load_elf_binary(struct linux_binprm *bprm, struct target_pt_regs *regs, |
|
11 |
struct image_info *info); |
|
12 |
|
|
13 |
int load_elf_binary_multi(struct linux_binprm *bprm, |
|
14 |
struct target_pt_regs *regs, |
|
15 |
struct image_info *info) |
|
16 |
{ |
|
17 |
struct elfhdr *elf_ex; |
|
18 |
int retval; |
|
19 |
|
|
20 |
elf_ex = (struct elfhdr *) bprm->buf; /* exec-header */ |
|
21 |
if (elf_ex->e_ident[EI_CLASS] == ELFCLASS64) { |
|
22 |
retval = load_elf_binary(bprm, regs, info); |
|
23 |
} else { |
|
24 |
retval = load_elf_binary32(bprm, regs, info); |
|
25 |
if (personality(info->personality) == PER_LINUX) |
|
26 |
info->personality = PER_LINUX32; |
|
27 |
} |
|
28 |
|
|
29 |
return retval; |
|
30 |
} |
b/linux-user/linuxload.c | ||
---|---|---|
169 | 169 |
&& bprm.buf[1] == 'E' |
170 | 170 |
&& bprm.buf[2] == 'L' |
171 | 171 |
&& bprm.buf[3] == 'F') { |
172 |
#ifndef TARGET_HAS_ELFLOAD32 |
|
172 | 173 |
retval = load_elf_binary(&bprm,regs,infop); |
174 |
#else |
|
175 |
retval = load_elf_binary_multi(&bprm, regs, infop); |
|
176 |
#endif |
|
173 | 177 |
#if defined(TARGET_HAS_BFLT) |
174 | 178 |
} else if (bprm.buf[0] == 'b' |
175 | 179 |
&& bprm.buf[1] == 'F' |
b/linux-user/main.c | ||
---|---|---|
564 | 564 |
case 0x88: |
565 | 565 |
case 0x90: |
566 | 566 |
#else |
567 |
case 0x110: |
|
567 | 568 |
case 0x16d: |
568 | 569 |
#endif |
569 | 570 |
ret = do_syscall (env, env->gregs[1], |
b/linux-user/qemu.h | ||
---|---|---|
124 | 124 |
struct image_info * info); |
125 | 125 |
int load_flt_binary(struct linux_binprm * bprm, struct target_pt_regs * regs, |
126 | 126 |
struct image_info * info); |
127 |
#ifdef TARGET_HAS_ELFLOAD32 |
|
128 |
int load_elf_binary_multi(struct linux_binprm *bprm, |
|
129 |
struct target_pt_regs *regs, |
|
130 |
struct image_info *info); |
|
131 |
#endif |
|
127 | 132 |
|
128 | 133 |
void memcpy_to_target(target_ulong dest, const void *src, |
129 | 134 |
unsigned long len); |
b/linux-user/sparc64/syscall_nr.h | ||
---|---|---|
29 | 29 |
#define TARGET_NR_sigaltstack 28 /* Common */ |
30 | 30 |
#define TARGET_NR_pause 29 /* Is sigblock(0)->sigpause() in SunOS */ |
31 | 31 |
#define TARGET_NR_utime 30 /* Implemented via utimes() under SunOS */ |
32 |
/* #define TARGET_NR_lchown32 31 Linux sparc32 specific */
|
|
33 |
/* #define TARGET_NR_fchown32 32 Linux sparc32 specific */
|
|
32 |
#define TARGET_NR_lchown32 31 /* Linux sparc32 specific */
|
|
33 |
#define TARGET_NR_fchown32 32 /* Linux sparc32 specific */
|
|
34 | 34 |
#define TARGET_NR_access 33 /* Common */ |
35 | 35 |
#define TARGET_NR_nice 34 /* Implemented via get/setpriority() in SunOS */ |
36 |
/* #define TARGET_NR_chown32 35 Linux sparc32 specific */
|
|
36 |
#define TARGET_NR_chown32 35 /* Linux sparc32 specific */
|
|
37 | 37 |
#define TARGET_NR_sync 36 /* Common */ |
38 | 38 |
#define TARGET_NR_kill 37 /* Common */ |
39 | 39 |
#define TARGET_NR_stat 38 /* Common */ |
... | ... | |
42 | 42 |
#define TARGET_NR_dup 41 /* Common */ |
43 | 43 |
#define TARGET_NR_pipe 42 /* Common */ |
44 | 44 |
#define TARGET_NR_times 43 /* Implemented via getrusage() in SunOS */ |
45 |
/* #define TARGET_NR_getuid32 44 Linux sparc32 specific */
|
|
45 |
#define TARGET_NR_getuid32 44 /* Linux sparc32 specific */
|
|
46 | 46 |
#define TARGET_NR_umount2 45 /* Linux Specific */ |
47 | 47 |
#define TARGET_NR_setgid 46 /* Implemented via setregid() in SunOS */ |
48 | 48 |
#define TARGET_NR_getgid 47 /* Common */ |
... | ... | |
51 | 51 |
#define TARGET_NR_getegid 50 /* SunOS calls getgid() */ |
52 | 52 |
#define TARGET_NR_acct 51 /* Common */ |
53 | 53 |
#define TARGET_NR_memory_ordering 52 /* Linux Specific */ |
54 |
/* #define TARGET_NR_getgid32 53 Linux sparc32 specific */
|
|
54 |
#define TARGET_NR_getgid32 53 /* Linux sparc32 specific */
|
|
55 | 55 |
#define TARGET_NR_ioctl 54 /* Common */ |
56 | 56 |
#define TARGET_NR_reboot 55 /* Common */ |
57 |
/* #define TARGET_NR_mmap2 56 Linux sparc32 Specific */
|
|
57 |
#define TARGET_NR_mmap2 56 /* Linux sparc32 Specific */
|
|
58 | 58 |
#define TARGET_NR_symlink 57 /* Common */ |
59 | 59 |
#define TARGET_NR_readlink 58 /* Common */ |
60 | 60 |
#define TARGET_NR_execve 59 /* Common */ |
61 | 61 |
#define TARGET_NR_umask 60 /* Common */ |
62 | 62 |
#define TARGET_NR_chroot 61 /* Common */ |
63 | 63 |
#define TARGET_NR_fstat 62 /* Common */ |
64 |
/* #define TARGET_NR_fstat64 63 Linux sparc32 Specific */
|
|
64 |
#define TARGET_NR_fstat64 63 /* Linux sparc32 Specific */
|
|
65 | 65 |
#define TARGET_NR_getpagesize 64 /* Common */ |
66 | 66 |
#define TARGET_NR_msync 65 /* Common in newer 1.3.x revs... */ |
67 | 67 |
#define TARGET_NR_vfork 66 /* Common */ |
68 | 68 |
#define TARGET_NR_pread64 67 /* Linux Specific */ |
69 | 69 |
#define TARGET_NR_pwrite64 68 /* Linux Specific */ |
70 |
/* #define TARGET_NR_geteuid32 69 Linux sparc32, sbrk under SunOS */
|
|
71 |
/* #define TARGET_NR_getegid32 70 Linux sparc32, sstk under SunOS */
|
|
70 |
#define TARGET_NR_geteuid32 69 /* Linux sparc32, sbrk under SunOS */
|
|
71 |
#define TARGET_NR_getegid32 70 /* Linux sparc32, sstk under SunOS */
|
|
72 | 72 |
#define TARGET_NR_mmap 71 /* Common */ |
73 |
/* #define TARGET_NR_setreuid32 72 Linux sparc32, vadvise under SunOS */
|
|
73 |
#define TARGET_NR_setreuid32 72 /* Linux sparc32, vadvise under SunOS */
|
|
74 | 74 |
#define TARGET_NR_munmap 73 /* Common */ |
75 | 75 |
#define TARGET_NR_mprotect 74 /* Common */ |
76 | 76 |
#define TARGET_NR_madvise 75 /* Common */ |
77 | 77 |
#define TARGET_NR_vhangup 76 /* Common */ |
78 |
/* #define TARGET_NR_truncate64 77 Linux sparc32 Specific */
|
|
78 |
#define TARGET_NR_truncate64 77 /* Linux sparc32 Specific */
|
|
79 | 79 |
#define TARGET_NR_mincore 78 /* Common */ |
80 | 80 |
#define TARGET_NR_getgroups 79 /* Common */ |
81 | 81 |
#define TARGET_NR_setgroups 80 /* Common */ |
82 | 82 |
#define TARGET_NR_getpgrp 81 /* Common */ |
83 |
/* #define TARGET_NR_setgroups32 82 Linux sparc32, setpgrp under SunOS */
|
|
83 |
#define TARGET_NR_setgroups32 82 /* Linux sparc32, setpgrp under SunOS */
|
|
84 | 84 |
#define TARGET_NR_setitimer 83 /* Common */ |
85 |
/* #define TARGET_NR_ftruncate64 84 Linux sparc32 Specific */
|
|
85 |
#define TARGET_NR_ftruncate64 84 /* Linux sparc32 Specific */
|
|
86 | 86 |
#define TARGET_NR_swapon 85 /* Common */ |
87 | 87 |
#define TARGET_NR_getitimer 86 /* Common */ |
88 |
/* #define TARGET_NR_setuid32 87 Linux sparc32, gethostname under SunOS */
|
|
88 |
#define TARGET_NR_setuid32 87 /* Linux sparc32, gethostname under SunOS */
|
|
89 | 89 |
#define TARGET_NR_sethostname 88 /* Common */ |
90 |
/* #define TARGET_NR_setgid32 89 Linux sparc32, getdtablesize under SunOS */
|
|
90 |
#define TARGET_NR_setgid32 89 /* Linux sparc32, getdtablesize under SunOS */
|
|
91 | 91 |
#define TARGET_NR_dup2 90 /* Common */ |
92 |
/* #define TARGET_NR_setfsuid32 91 Linux sparc32, getdopt under SunOS */
|
|
92 |
#define TARGET_NR_setfsuid32 91 /* Linux sparc32, getdopt under SunOS */
|
|
93 | 93 |
#define TARGET_NR_fcntl 92 /* Common */ |
94 | 94 |
#define TARGET_NR_select 93 /* Common */ |
95 |
/* #define TARGET_NR_setfsgid32 94 Linux sparc32, setdopt under SunOS */
|
|
95 |
#define TARGET_NR_setfsgid32 94 /* Linux sparc32, setdopt under SunOS */
|
|
96 | 96 |
#define TARGET_NR_fsync 95 /* Common */ |
97 | 97 |
#define TARGET_NR_setpriority 96 /* Common */ |
98 | 98 |
#define TARGET_NR_socket 97 /* Common */ |
... | ... | |
110 | 110 |
#define TARGET_NR_getresuid 109 /* Linux Specific, sigblock under SunOS */ |
111 | 111 |
#define TARGET_NR_setresgid 110 /* Linux Specific, sigsetmask under SunOS */ |
112 | 112 |
#define TARGET_NR_getresgid 111 /* Linux Specific, sigpause under SunOS */ |
113 |
/* #define TARGET_NR_setregid32 75 Linux sparc32, sigstack under SunOS */
|
|
113 |
/* #define TARGET_NR_setregid32 75 Linux sparc32, sigstack under SunOS */
|
|
114 | 114 |
#define TARGET_NR_recvmsg 113 /* Common */ |
115 | 115 |
#define TARGET_NR_sendmsg 114 /* Common */ |
116 |
/* #define TARGET_NR_getgroups32 115 Linux sparc32, vtrace under SunOS */
|
|
116 |
#define TARGET_NR_getgroups32 115 /* Linux sparc32, vtrace under SunOS */
|
|
117 | 117 |
#define TARGET_NR_gettimeofday 116 /* Common */ |
118 | 118 |
#define TARGET_NR_getrusage 117 /* Common */ |
119 | 119 |
#define TARGET_NR_getsockopt 118 /* Common */ |
... | ... | |
130 | 130 |
#define TARGET_NR_truncate 129 /* Common */ |
131 | 131 |
#define TARGET_NR_ftruncate 130 /* Common */ |
132 | 132 |
#define TARGET_NR_flock 131 /* Common */ |
133 |
/* #define TARGET_NR_lstat64 132 Linux sparc32 Specific */
|
|
133 |
#define TARGET_NR_lstat64 132 /* Linux sparc32 Specific */
|
|
134 | 134 |
#define TARGET_NR_sendto 133 /* Common */ |
135 | 135 |
#define TARGET_NR_shutdown 134 /* Common */ |
136 | 136 |
#define TARGET_NR_socketpair 135 /* Common */ |
137 | 137 |
#define TARGET_NR_mkdir 136 /* Common */ |
138 | 138 |
#define TARGET_NR_rmdir 137 /* Common */ |
139 | 139 |
#define TARGET_NR_utimes 138 /* SunOS Specific */ |
140 |
/* #define TARGET_NR_stat64 139 Linux sparc32 Specific */
|
|
140 |
#define TARGET_NR_stat64 139 /* Linux sparc32 Specific */
|
|
141 | 141 |
#define TARGET_NR_sendfile64 140 /* adjtime under SunOS */ |
142 | 142 |
#define TARGET_NR_getpeername 141 /* Common */ |
143 | 143 |
#define TARGET_NR_futex 142 /* gethostid under SunOS */ |
... | ... | |
153 | 153 |
/* #define TARGET_NR_putmsg 152 SunOS Specific */ |
154 | 154 |
#define TARGET_NR_poll 153 /* Common */ |
155 | 155 |
#define TARGET_NR_getdents64 154 /* Linux specific */ |
156 |
/* #define TARGET_NR_fcntl64 155 Linux sparc32 Specific */
|
|
156 |
#define TARGET_NR_fcntl64 155 /* Linux sparc32 Specific */
|
|
157 | 157 |
/* #define TARGET_NR_getdirentries 156 SunOS Specific */ |
158 | 158 |
#define TARGET_NR_statfs 157 /* Common */ |
159 | 159 |
#define TARGET_NR_fstatfs 158 /* Common */ |
... | ... | |
229 | 229 |
#define TARGET_NR_setfsuid 228 /* Linux Specific */ |
230 | 230 |
#define TARGET_NR_setfsgid 229 /* Linux Specific */ |
231 | 231 |
#define TARGET_NR__newselect 230 /* Linux Specific */ |
232 |
#ifdef __KERNEL__ |
|
233 |
#define TARGET_NR_time 231 /* Linux sparc32 */ |
|
234 |
#endif |
|
232 |
#define TARGET_NR_time 231 /* Linux sparc32 */ |
|
235 | 233 |
/* #define TARGET_NR_oldstat 232 Linux Specific */ |
236 | 234 |
#define TARGET_NR_stime 233 /* Linux Specific */ |
237 | 235 |
#define TARGET_NR_statfs64 234 /* Linux Specific */ |
Also available in: Unified diff