Mercurial > ecos-v3_0-branch
annotate packages/hal/i386/linux/current/src/syscall-i386-linux-1.0.S @ 42:94fd8fbfe8fe ecos-sw-1999-10-05
Merge from eCos master repository on 1999-10-05-12:38:44-BST
| author | jlarmour |
|---|---|
| date | Tue, 05 Oct 1999 12:09:26 +0000 |
| parents | 443894e2e912 |
| children | 7a6ac9edc838 |
| rev | line source |
|---|---|
| 2 | 1 //============================================================================= |
| 2 // | |
| 3 // syscall-i386-linux-1.0.S | |
| 4 // | |
| 5 // Linux system call interface functions for i386. | |
| 6 // | |
| 7 //============================================================================= | |
| 8 //####COPYRIGHTBEGIN#### | |
| 9 // | |
| 10 // ------------------------------------------- | |
| 11 // The contents of this file are subject to the Cygnus eCos Public License | |
| 12 // Version 1.0 (the "License"); you may not use this file except in | |
| 13 // compliance with the License. You may obtain a copy of the License at | |
| 14 // http://sourceware.cygnus.com/ecos | |
| 15 // | |
| 16 // Software distributed under the License is distributed on an "AS IS" | |
| 17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the | |
| 18 // License for the specific language governing rights and limitations under | |
| 19 // the License. | |
| 20 // | |
| 21 // The Original Code is eCos - Embedded Cygnus Operating System, released | |
| 22 // October 31, 1998. | |
| 23 // | |
| 24 // The Initial Developer of the Original Code is Cygnus. Portions created | |
| 25 // by Cygnus are Copyright (C) 1998, 1999 Cygnus Solutions. | |
| 26 // All Rights Reserved. | |
| 27 // ------------------------------------------- | |
| 28 // | |
| 29 //####COPYRIGHTEND#### | |
| 30 //============================================================================= | |
| 31 //#####DESCRIPTIONBEGIN#### | |
| 32 // | |
| 33 // Author(s): proven | |
| 34 // Contributors:proven | |
| 35 // Date: 1998-10-06 | |
| 36 // Description: Machine dependent syscalls for i386/i486/i586 | |
| 37 // | |
| 38 //####DESCRIPTIONEND#### | |
| 39 // | |
| 40 //============================================================================= | |
| 41 | |
| 42 // Force __ELF__ for eCos/Linux. | |
| 43 #ifndef __ELF__ | |
| 44 #define __ELF__ | |
| 45 #endif | |
| 46 | |
| 47 #ifndef _SYS_SYSCALL_H | |
| 48 #define _SYS_SYSCALL_H | |
| 49 | |
| 50 #define SYS_setup 0 // Used only by init, to get system going. | |
| 51 #define SYS_exit 1 | |
| 52 #define SYS_fork 2 | |
| 53 #define SYS_read 3 | |
| 54 #define SYS_write 4 | |
| 55 #define SYS_open 5 | |
| 56 #define SYS_close 6 | |
| 57 #define SYS_waitpid 7 | |
| 58 #define SYS_creat 8 | |
| 59 #define SYS_link 9 | |
| 60 #define SYS_unlink 10 | |
| 61 #define SYS_execve 11 | |
| 62 #define SYS_chdir 12 | |
| 63 #define SYS_time 13 | |
| 64 #define SYS_prev_mknod 14 | |
| 65 #define SYS_chmod 15 | |
| 66 #define SYS_chown 16 | |
| 67 #define SYS_break 17 | |
| 68 #define SYS_oldstat 18 | |
| 69 #define SYS_lseek 19 | |
| 70 #define SYS_getpid 20 | |
| 71 #define SYS_mount 21 | |
| 72 #define SYS_umount 22 | |
| 73 #define SYS_setuid 23 | |
| 74 #define SYS_getuid 24 | |
| 75 #define SYS_stime 25 | |
| 76 #define SYS_ptrace 26 | |
| 77 #define SYS_alarm 27 | |
| 78 #define SYS_oldfstat 28 | |
| 79 #define SYS_pause 29 | |
| 80 #define SYS_utime 30 | |
| 81 #define SYS_stty 31 | |
| 82 #define SYS_gtty 32 | |
| 83 #define SYS_access 33 | |
| 84 #define SYS_nice 34 | |
| 85 #define SYS_ftime 35 | |
| 86 #define SYS_sync 36 | |
| 87 #define SYS_kill 37 | |
| 88 #define SYS_rename 38 | |
| 89 #define SYS_mkdir 39 | |
| 90 #define SYS_rmdir 40 | |
| 91 #define SYS_dup 41 | |
| 92 #define SYS_pipe 42 | |
| 93 #define SYS_times 43 | |
| 94 #define SYS_prof 44 | |
| 95 #define SYS_brk 45 | |
| 96 #define SYS_setgid 46 | |
| 97 #define SYS_getgid 47 | |
| 98 #define SYS_signal 48 | |
| 99 #define SYS_geteuid 49 | |
| 100 #define SYS_getegid 50 | |
| 101 #define SYS_acct 51 | |
| 102 #define SYS_phys 52 | |
| 103 #define SYS_lock 53 | |
| 104 #define SYS_ioctl 54 | |
| 105 #define SYS_fcntl 55 | |
| 106 #define SYS_mpx 56 | |
| 107 #define SYS_setpgid 57 | |
| 108 #define SYS_ulimit 58 | |
| 109 #define SYS_oldolduname 59 | |
| 110 #define SYS_umask 60 | |
| 111 #define SYS_chroot 61 | |
| 112 #define SYS_prev_ustat 62 | |
| 113 #define SYS_dup2 63 | |
| 114 #define SYS_getppid 64 | |
| 115 #define SYS_getpgrp 65 | |
| 116 #define SYS_setsid 66 | |
| 117 #define SYS_sigaction 67 | |
| 118 #define SYS_siggetmask 68 | |
| 119 #define SYS_sigsetmask 69 | |
| 120 #define SYS_setreuid 70 | |
| 121 #define SYS_setregid 71 | |
| 122 #define SYS_sigsuspend 72 | |
| 123 #define SYS_sigpending 73 | |
| 124 #define SYS_sethostname 74 | |
| 125 #define SYS_setrlimit 75 | |
| 126 #define SYS_getrlimit 76 | |
| 127 #define SYS_getrusage 77 | |
| 128 #define SYS_gettimeofday 78 | |
| 129 #define SYS_settimeofday 79 | |
| 130 #define SYS_getgroups 80 | |
| 131 #define SYS_setgroups 81 | |
| 132 #define SYS_select 82 | |
| 133 #define SYS_symlink 83 | |
| 134 #define SYS_oldlstat 84 | |
| 135 #define SYS_readlink 85 | |
| 136 #define SYS_uselib 86 | |
| 137 #define SYS_swapon 87 | |
| 138 #define SYS_reboot 88 | |
| 139 #define SYS_readdir 89 | |
| 140 #define SYS_mmap 90 | |
| 141 #define SYS_munmap 91 | |
| 142 #define SYS_truncate 92 | |
| 143 #define SYS_ftruncate 93 | |
| 144 #define SYS_fchmod 94 | |
| 145 #define SYS_fchown 95 | |
| 146 #define SYS_getpriority 96 | |
| 147 #define SYS_setpriority 97 | |
| 148 #define SYS_profil 98 | |
| 149 #define SYS_statfs 99 | |
| 150 #define SYS_fstatfs 100 | |
| 151 #define SYS_ioperm 101 | |
| 152 #define SYS_socketcall 102 | |
| 153 #define SYS_klog 103 | |
| 154 #define SYS_setitimer 104 | |
| 155 #define SYS_getitimer 105 | |
| 156 #define SYS_prev_stat 106 | |
| 157 #define SYS_prev_lstat 107 | |
| 158 #define SYS_prev_fstat 108 | |
| 159 #define SYS_olduname 109 | |
| 160 #define SYS_iopl 110 | |
| 161 #define SYS_vhangup 111 | |
| 162 #define SYS_idle 112 | |
| 163 #define SYS_vm86 113 | |
| 164 #define SYS_wait4 114 | |
| 165 #define SYS_swapoff 115 | |
| 166 #define SYS_sysinfo 116 | |
| 167 #define SYS_ipc 117 | |
| 168 #define SYS_fsync 118 | |
| 169 #define SYS_sigreturn 119 | |
| 170 #define SYS_clone 120 | |
| 171 #define SYS_setdomainname 121 | |
| 172 #define SYS_uname 122 | |
| 173 #define SYS_modify_ldt 123 | |
| 174 #define SYS_adjtimex 124 | |
| 175 #define SYS_mprotect 125 | |
| 176 #define SYS_sigprocmask 126 | |
| 177 #define SYS_create_module 127 | |
| 178 #define SYS_init_module 128 | |
| 179 #define SYS_delete_module 129 | |
| 180 #define SYS_get_kernel_syms 130 | |
| 181 #define SYS_quotactl 131 | |
| 182 #define SYS_getpgid 132 | |
| 183 #define SYS_fchdir 133 | |
| 184 #define SYS_bdflush 134 | |
| 185 #define SYS_sysfs 135 | |
| 186 #define SYS_personality 136 | |
| 187 #define SYS_afs_syscall 137 // Syscall for Andrew File System | |
| 188 #define SYS_setfsuid 138 | |
| 189 #define SYS_setfsgid 139 | |
| 190 #define SYS__llseek 140 | |
| 191 #define SYS_getdents 141 | |
| 192 #define SYS__newselect 142 | |
| 193 #define SYS_flock 143 | |
| 194 #define SYS_syscall_flock 143 | |
| 195 #define SYS_msync 144 | |
| 196 #define SYS_readv 145 | |
| 197 #define SYS_syscall_readv 145 | |
| 198 #define SYS_writev 146 | |
| 199 #define SYS_syscall_writev 146 | |
| 200 #define SYS_getsid 147 | |
| 201 #define SYS_fdatasync 148 | |
| 202 #define SYS__sysctl 149 | |
| 203 #define SYS_mlock 150 | |
| 204 #define SYS_munlock 151 | |
| 205 #define SYS_mlockall 152 | |
| 206 #define SYS_munlockall 153 | |
| 207 #define SYS_sched_setparam 154 | |
| 208 #define SYS_sched_getparam 155 | |
| 209 #define SYS_sched_setscheduler 156 | |
| 210 #define SYS_sched_getscheduler 157 | |
| 211 #define SYS_sched_yield 158 | |
| 212 #define SYS_sched_get_priority_max 159 | |
| 213 #define SYS_sched_get_priority_min 160 | |
| 214 #define SYS_sched_rr_get_interval 161 | |
| 215 #define SYS_nanosleep 162 | |
| 216 #define SYS_mremap 163 | |
| 217 | |
| 218 #endif // <sys/syscall.h> | |
| 219 | |
| 220 | |
| 221 #ifdef __ELF__ | |
| 222 | |
| 223 #define NAME(X) cyg_hal_sys_##X | |
| 224 #define END(X) 1: ; .type NAME(X),@function ; .size NAME(X),1b - NAME(X) | |
| 225 | |
| 226 #else | |
| 227 | |
| 228 #define NAME(X) _cyg_hal_sys_##X | |
| 229 #define END(X) | |
| 230 | |
| 231 #endif | |
| 232 | |
| 233 #define SYSCALL0(x) \ | |
| 234 .globl NAME(x) ; \ | |
| 235 \ | |
| 236 NAME(x): \ | |
| 237 \ | |
| 238 push %ebx; \ | |
| 239 lea SYS_##x, %eax; \ | |
| 240 int $0x80; \ | |
| 241 pop %ebx; \ | |
| 242 ret; \ | |
| 243 \ | |
| 244 END(x) | |
| 245 | |
| 246 #define SYSCALL1(x) \ | |
| 247 .globl NAME(x) ; \ | |
| 248 \ | |
| 249 NAME(x): \ | |
| 250 \ | |
| 251 push %ebx; \ | |
| 252 mov 8(%esp), %ebx; \ | |
| 253 lea SYS_##x, %eax; \ | |
| 254 int $0x80; \ | |
| 255 pop %ebx; \ | |
| 256 ret; \ | |
| 257 \ | |
| 258 END(x) | |
| 259 | |
| 260 #define SYSCALL2(x) \ | |
| 261 .globl NAME(x) ; \ | |
| 262 \ | |
| 263 NAME(x): \ | |
| 264 \ | |
| 265 push %ebx; \ | |
| 266 mov 8(%esp), %ebx; \ | |
| 267 mov 12(%esp), %ecx; \ | |
| 268 lea SYS_##x, %eax; \ | |
| 269 int $0x80; \ | |
| 270 pop %ebx; \ | |
| 271 ret; \ | |
| 272 \ | |
| 273 END(x) | |
| 274 | |
| 275 #define STATCALL2(x) \ | |
| 276 .globl NAME(x) ; \ | |
| 277 \ | |
| 278 NAME(x): \ | |
| 279 \ | |
| 280 push %ebx; \ | |
| 281 mov 8(%esp), %ebx; \ | |
| 282 mov 12(%esp), %ecx; \ | |
| 283 lea SYS_prev_##x, %eax; \ | |
| 284 int $0x80; \ | |
| 285 pop %ebx; \ | |
| 286 ret; \ | |
| 287 END(x) | |
| 288 | |
| 289 #define SYSCALL3(x) \ | |
| 290 .globl NAME(x) ; \ | |
| 291 \ | |
| 292 NAME(x): \ | |
| 293 \ | |
| 294 push %ebx; \ | |
| 295 mov 8(%esp), %ebx; \ | |
| 296 mov 12(%esp), %ecx; \ | |
| 297 mov 16(%esp), %edx; \ | |
| 298 lea SYS_##x, %eax; \ | |
| 299 int $0x80; \ | |
| 300 pop %ebx; \ | |
| 301 ret; \ | |
| 302 END(x) | |
| 303 | |
| 304 | |
| 305 #define SYSCALL4(x) \ | |
| 306 .globl NAME(x) ; \ | |
| 307 \ | |
| 308 NAME(x): \ | |
| 309 \ | |
| 310 push %ebx; \ | |
| 311 push %esi; \ | |
| 312 mov 12(%esp), %ebx; \ | |
| 313 mov 16(%esp), %ecx; \ | |
| 314 mov 20(%esp), %edx; \ | |
| 315 mov 24(%esp), %esi; \ | |
| 316 lea SYS_##x, %eax; \ | |
| 317 int $0x80; \ | |
| 318 pop %esi; \ | |
| 319 pop %ebx; \ | |
| 320 ret; \ | |
| 321 END(x) | |
| 322 | |
| 323 #define SYSCALL5(x) \ | |
| 324 .globl NAME(x) ; \ | |
| 325 \ | |
| 326 NAME(x): \ | |
| 327 \ | |
| 328 push %ebx; \ | |
| 329 push %esi; \ | |
| 330 push %edi; \ | |
| 331 mov 16(%esp), %ebx; \ | |
| 332 mov 20(%esp), %ecx; \ | |
| 333 mov 24(%esp), %edx; \ | |
| 334 mov 28(%esp), %esi; \ | |
| 335 mov 32(%esp), %edi; \ | |
| 336 lea SYS_##x, %eax; \ | |
| 337 int $0x80; \ | |
| 338 pop %edi; \ | |
| 339 pop %esi; \ | |
| 340 pop %ebx; \ | |
| 341 ret; \ | |
| 342 END(x) | |
| 343 | |
| 344 //========================================================================= | |
| 345 // exit 1 select 82 | |
| 346 // fork 2 socketcall 102 | |
|
42
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
347 // read 3 newselect 142 |
|
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
348 // write 4 readv 145 |
|
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
349 // open 5 writev 146 |
| 2 | 350 // creat 8 |
| 351 // link 9 | |
| 352 // unlink 10 | |
| 353 // execve 11 | |
| 354 // chdir 12 | |
| 355 // chmod 15 | |
| 356 // chown 16 | |
| 357 // lseek 19 | |
| 358 // rename 38 | |
|
42
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
359 // dup 41 |
| 2 | 360 // pipe 42 |
| 361 // ioctl 54 | |
| 362 // fcntl 55 | |
| 363 // dup2 63 | |
| 364 // readdir 89 | |
| 365 // ftruncate 93 | |
| 366 // fchmod 94 | |
| 367 // fchown 95 | |
| 368 // | |
| 369 | |
| 370 // Initial asm stuff for all functions. | |
| 371 .text | |
| 372 .align 2 | |
| 373 | |
| 374 | |
| 375 //========================================================================== | |
| 376 // machdep_sys_gettimeofday() | |
| 377 SYSCALL3(gettimeofday) | |
| 378 | |
| 379 //========================================================================== | |
| 380 // machdep_sys_setitimer() | |
| 381 SYSCALL3(sigaction) | |
| 382 | |
| 383 //========================================================================== | |
| 384 // machdep_sys_setitimer() | |
| 385 SYSCALL3(setitimer) | |
| 386 | |
| 387 //========================================================================== | |
| 388 // machdep_sys_getitimer() | |
| 389 SYSCALL2(getitimer) | |
| 390 | |
| 391 | |
| 392 | |
| 393 | |
| 394 | |
| 395 | |
| 396 //========================================================================== | |
| 397 // machdep_sys_read() | |
| 398 SYSCALL3(read) | |
| 399 | |
| 400 //========================================================================== | |
| 401 // machdep_sys_write() | |
| 402 SYSCALL3(write) | |
| 403 | |
| 404 //========================================================================== | |
| 405 // machdep_sys_open() | |
| 406 SYSCALL3(open) | |
| 407 | |
| 408 //========================================================================== | |
| 409 // machdep_sys_close() | |
| 410 SYSCALL1(close) | |
| 411 | |
| 412 //========================================================================== | |
| 413 // machdep_sys_creat() | |
| 414 SYSCALL2(creat) | |
| 415 | |
| 416 //========================================================================== | |
| 417 // machdep_sys_dup2() | |
| 418 SYSCALL2(dup2) | |
| 419 | |
| 420 //========================================================================== | |
| 421 // machdep_sys_fcntl() | |
| 422 SYSCALL3(fcntl) | |
| 423 | |
| 424 //========================================================================== | |
| 425 // machdep_sys_fchown() | |
| 426 SYSCALL3(fchown) | |
| 427 | |
| 428 //========================================================================== | |
| 429 // machdep_sys_fchmod() | |
| 430 SYSCALL2(fchmod) | |
| 431 | |
| 432 //========================================================================== | |
| 433 // machdep_sys_ioctl() | |
| 434 SYSCALL3(ioctl) | |
| 435 | |
| 436 //========================================================================== | |
| 437 // machdep_sys_chown() | |
| 438 SYSCALL3(chown) | |
| 439 | |
| 440 //========================================================================== | |
| 441 // machdep_sys_chmod() | |
| 442 SYSCALL2(chmod) | |
| 443 | |
| 444 //========================================================================== | |
| 445 // machdep_sys_chdir() | |
| 446 SYSCALL1(chdir) | |
| 447 | |
| 448 //========================================================================== | |
| 449 // machdep_sys_unlink() | |
| 450 SYSCALL1(unlink) | |
| 451 | |
| 452 //========================================================================== | |
| 453 // machdep_sys_link() | |
| 454 SYSCALL2(link) | |
| 455 | |
| 456 //========================================================================== | |
| 457 // machdep_sys_rename() | |
| 458 SYSCALL2(rename) | |
| 459 | |
| 460 //========================================================================== | |
| 461 // machdep_sys_lseek() | |
| 462 SYSCALL3(lseek) | |
| 463 | |
| 464 //========================================================================== | |
| 465 // machdep_sys_pipe() | |
| 466 SYSCALL1(pipe) | |
| 467 | |
| 468 //========================================================================== | |
| 469 // machdep_sys_dup() | |
| 470 SYSCALL1(dup) | |
| 471 | |
| 472 //========================================================================== | |
| 473 // machdep_sys_fork() | |
| 474 SYSCALL0(fork) | |
| 475 | |
| 476 //========================================================================== | |
| 477 // machdep_sys_execve() | |
| 478 SYSCALL3(execve) | |
| 479 | |
| 480 //========================================================================== | |
| 481 // machdep_sys_stat() | |
| 482 #ifdef __ELF__ | |
| 483 STATCALL2(stat) | |
| 484 #else | |
| 485 SYSCALL2(stat) | |
| 486 #endif | |
| 487 | |
| 488 //========================================================================== | |
| 489 // machdep_sys_fstat() | |
| 490 #ifdef __ELF__ | |
| 491 STATCALL2(fstat) | |
| 492 #else | |
| 493 SYSCALL2(fstat) | |
| 494 #endif | |
| 495 | |
| 496 //========================================================================== | |
| 497 // machdep_sys_fstat() | |
| 498 #ifdef __ELF__ | |
| 499 STATCALL2(lstat) | |
| 500 #else | |
| 501 SYSCALL2(lstat) | |
| 502 #endif | |
| 503 | |
| 504 //========================================================================== | |
| 505 // machdep_sys_ftruncate() | |
| 506 SYSCALL2(ftruncate) | |
| 507 | |
| 508 //========================================================================== | |
| 509 // Nonstandard calls used to make the system work | |
| 510 // | |
| 511 // ========================================================================== | |
| 512 // machdep_sys_select() | |
| 513 | |
| 514 .globl NAME(select) | |
| 515 | |
| 516 NAME(select): | |
| 517 | |
| 518 push %ebx | |
| 519 lea 8(%esp), %ebx | |
| 520 lea SYS_select, %eax | |
| 521 int $0x80 | |
| 522 pop %ebx | |
| 523 ret | |
| 524 END(select) | |
| 525 | |
| 526 //========================================================================== | |
| 527 // machdep_sys_wait4() | |
| 528 SYSCALL4(wait4) | |
| 529 | |
| 530 //========================================================================== | |
| 531 // machdep_sys_readdir() | |
| 532 SYSCALL3(readdir) | |
| 533 | |
| 534 //========================================================================== | |
| 535 // machdep_sys_socketcall() | |
| 536 SYSCALL2(socketcall) | |
| 537 | |
| 538 | |
| 539 SYSCALL1(exit) | |
| 540 SYSCALL3(sigprocmask) | |
| 541 | |
| 542 //========================================================================== | |
| 543 // machdep_sys_sigsuspend() | |
| 544 | |
| 545 .globl NAME(sigsuspend) | |
| 546 | |
| 547 NAME(sigsuspend): | |
| 548 | |
| 549 push %ebp | |
| 550 mov %esp,%ebp | |
| 551 push %edi | |
| 552 push %esi | |
| 553 push %ebx | |
| 554 mov 8(%ebp), %edx | |
| 555 mov (%edx), %edx | |
| 556 lea SYS_sigsuspend, %eax | |
| 557 int $0x80 | |
| 558 pop %ebx | |
| 559 pop %esi | |
| 560 pop %edi | |
| 561 mov %ebp,%esp | |
| 562 pop %ebp | |
| 563 ret | |
| 564 END(sigsuspend) | |
| 565 | |
| 566 //========================================================================== | |
| 567 // machdep_sys_readv() | |
| 568 #ifdef HAVE_SYSCALL_READV | |
| 569 SYSCALL3(readv) | |
| 570 #endif | |
| 571 | |
| 572 //========================================================================== | |
| 573 // machdep_sys_writev() | |
| 574 #ifdef HAVE_SYSCALL_WRITEV | |
| 575 SYSCALL3(writev) | |
| 576 #endif | |
| 577 | |
|
42
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
578 //========================================================================== |
|
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
579 // machdep_sys_newselect() |
|
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
2
diff
changeset
|
580 SYSCALL5(_newselect) |
