linux-armeabi support

This commit is contained in:
Pierre Carru 2015-01-20 16:52:28 +01:00
parent 140da6c9ac
commit aff44004a5
4 changed files with 471 additions and 0 deletions

View file

@ -37,3 +37,7 @@ pub mod platform;
#[cfg(all(target_os="freebsd", target_arch="x86_64"))]
#[path="platform/freebsd-x86_64/mod.rs"]
pub mod platform;
#[cfg(all(target_os="linux", target_arch="arm"))]
#[path="platform/linux-armeabi/mod.rs"]
pub mod platform;

View file

@ -46,4 +46,11 @@ macro_rules! syscall {
::syscall::nr::$nr,
$a1 as usize, $a2 as usize, $a3 as usize,
$a4 as usize, $a5 as usize, $a6 as usize) );
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr, $a7:expr)
=> ( ::syscall::syscall7(
::syscall::nr::$nr,
$a1 as usize, $a2 as usize, $a3 as usize,
$a4 as usize, $a5 as usize, $a6 as usize,
$a7 as usize) );
}

View file

@ -0,0 +1,101 @@
// Copyright 2014 The syscall.rs Project Developers. See the
// COPYRIGHT file at the top-level directory of this distribution.
//
// Licensed under the Apache License, Veecxon 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except accoebxng to those terms.
//! This library was built for arm Linux.
pub mod nr;
#[inline(always)]
pub unsafe fn syscall0(n: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall1(n: usize, a1: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall2(n: usize, a1: usize, a2: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1), "{r1}"(a2)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall3(n: usize, a1: usize, a2: usize, a3: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1), "{r1}"(a2), "{r2}"(a3)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall4(n: usize, a1: usize, a2: usize, a3: usize,
a4: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1), "{r1}"(a2), "{r2}"(a3),
"{r3}"(a4)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall5(n: usize, a1: usize, a2: usize, a3: usize,
a4: usize, a5: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1), "{r1}"(a2), "{r2}"(a3),
"{r3}"(a4), "{r4}"(a5)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize,
a4: usize, a5: usize, a6: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1), "{r1}"(a2), "{r2}"(a3),
"{r3}"(a4), "{r4}"(a5), "{r5}"(a6)
: "memory" "cc"
: "volatile");
ret
}
#[inline(always)]
pub unsafe fn syscall7(n: usize, a1: usize, a2: usize, a3: usize,
a4: usize, a5: usize, a6: usize,
a7: usize) -> usize {
let mut ret : usize;
asm!("swi $$0" : "={r0}"(ret)
: "{r7}"(n), "{r0}"(a1), "{r1}"(a2), "{r2}"(a3),
"{r3}"(a4), "{r4}"(a5), "{r5}"(a6), "{r6}"(a7)
: "memory" "cc"
: "volatile");
ret
}

View file

@ -0,0 +1,359 @@
pub const RESTART_SYSCALL : usize = 0;
pub const EXIT : usize = 1;
pub const FORK : usize = 2;
pub const READ : usize = 3;
pub const WRITE : usize = 4;
pub const OPEN : usize = 5;
pub const CLOSE : usize = 6;
pub const CREAT : usize = 8;
pub const LINK : usize = 9;
pub const UNLINK : usize = 10;
pub const EXECVE : usize = 11;
pub const CHDIR : usize = 12;
pub const MKNOD : usize = 14;
pub const CHMOD : usize = 15;
pub const LCHOWN : usize = 16;
pub const LSEEK : usize = 19;
pub const GETPID : usize = 20;
pub const MOUNT : usize = 21;
pub const SETUID : usize = 23;
pub const GETUID : usize = 24;
pub const PTRACE : usize = 26;
pub const PAUSE : usize = 29;
pub const ACCESS : usize = 33;
pub const NICE : usize = 34;
pub const SYNC : usize = 36;
pub const KILL : usize = 37;
pub const RENAME : usize = 38;
pub const MKDIR : usize = 39;
pub const RMDIR : usize = 40;
pub const DUP : usize = 41;
pub const PIPE : usize = 42;
pub const TIMES : usize = 43;
pub const BRK : usize = 45;
pub const SETGID : usize = 46;
pub const GETGID : usize = 47;
pub const GETEUID : usize = 49;
pub const GETEGID : usize = 50;
pub const ACCT : usize = 51;
pub const UMOUNT2 : usize = 52;
pub const IOCTL : usize = 54;
pub const FCNTL : usize = 55;
pub const SETPGID : usize = 57;
pub const UMASK : usize = 60;
pub const CHROOT : usize = 61;
pub const USTAT : usize = 62;
pub const DUP2 : usize = 63;
pub const GETPPID : usize = 64;
pub const GETPGRP : usize = 65;
pub const SETSID : usize = 66;
pub const SIGACTION : usize = 67;
pub const SETREUID : usize = 70;
pub const SETREGID : usize = 71;
pub const SIGSUSPEND : usize = 72;
pub const SIGPENDING : usize = 73;
pub const SETHOSTNAME : usize = 74;
pub const SETRLIMIT : usize = 75;
pub const GETRUSAGE : usize = 77;
pub const GETTIMEOFDAY : usize = 78;
pub const SETTIMEOFDAY : usize = 79;
pub const GETGROUPS : usize = 80;
pub const SETGROUPS : usize = 81;
pub const SYMLINK : usize = 83;
pub const READLINK : usize = 85;
pub const USELIB : usize = 86;
pub const SWAPON : usize = 87;
pub const REBOOT : usize = 88;
pub const MUNMAP : usize = 91;
pub const TRUNCATE : usize = 92;
pub const FTRUNCATE : usize = 93;
pub const FCHMOD : usize = 94;
pub const FCHOWN : usize = 95;
pub const GETPRIORITY : usize = 96;
pub const SETPRIORITY : usize = 97;
pub const STATFS : usize = 99;
pub const FSTATFS : usize = 100;
pub const SYSLOG : usize = 103;
pub const SETITIMER : usize = 104;
pub const GETITIMER : usize = 105;
pub const STAT : usize = 106;
pub const LSTAT : usize = 107;
pub const FSTAT : usize = 108;
pub const VHANGUP : usize = 111;
pub const WAIT4 : usize = 114;
pub const SWAPOFF : usize = 115;
pub const SYSINFO : usize = 116;
pub const FSYNC : usize = 118;
pub const SIGRETURN : usize = 119;
pub const CLONE : usize = 120;
pub const SETDOMAINNAME : usize = 121;
pub const UNAME : usize = 122;
pub const ADJTIMEX : usize = 124;
pub const MPROTECT : usize = 125;
pub const SIGPROCMASK : usize = 126;
pub const INIT_MODULE : usize = 128;
pub const DELETE_MODULE : usize = 129;
pub const QUOTACTL : usize = 131;
pub const GETPGID : usize = 132;
pub const FCHDIR : usize = 133;
pub const BDFLUSH : usize = 134;
pub const SYSFS : usize = 135;
pub const PERSONALITY : usize = 136;
pub const SETFSUID : usize = 138;
pub const SETFSGID : usize = 139;
pub const _LLSEEK : usize = 140;
pub const GETDENTS : usize = 141;
pub const _NEWSELECT : usize = 142;
pub const FLOCK : usize = 143;
pub const MSYNC : usize = 144;
pub const READV : usize = 145;
pub const WRITEV : usize = 146;
pub const GETSID : usize = 147;
pub const FDATASYNC : usize = 148;
pub const _SYSCTL : usize = 149;
pub const MLOCK : usize = 150;
pub const MUNLOCK : usize = 151;
pub const MLOCKALL : usize = 152;
pub const MUNLOCKALL : usize = 153;
pub const SCHED_SETPARAM : usize = 154;
pub const SCHED_GETPARAM : usize = 155;
pub const SCHED_SETSCHEDULER : usize = 156;
pub const SCHED_GETSCHEDULER : usize = 157;
pub const SCHED_YIELD : usize = 158;
pub const SCHED_GET_PRIORITY_MAX : usize = 159;
pub const SCHED_GET_PRIORITY_MIN : usize = 160;
pub const SCHED_RR_GET_INTERVAL : usize = 161;
pub const NANOSLEEP : usize = 162;
pub const MREMAP : usize = 163;
pub const SETRESUID : usize = 164;
pub const GETRESUID : usize = 165;
pub const POLL : usize = 168;
pub const NFSSERVCTL : usize = 169;
pub const SETRESGID : usize = 170;
pub const GETRESGID : usize = 171;
pub const PRCTL : usize = 172;
pub const RT_SIGRETURN : usize = 173;
pub const RT_SIGACTION : usize = 174;
pub const RT_SIGPROCMASK : usize = 175;
pub const RT_SIGPENDING : usize = 176;
pub const RT_SIGTIMEDWAIT : usize = 177;
pub const RT_SIGQUEUEINFO : usize = 178;
pub const RT_SIGSUSPEND : usize = 179;
pub const PREAD64 : usize = 180;
pub const PWRITE64 : usize = 181;
pub const CHOWN : usize = 182;
pub const GETCWD : usize = 183;
pub const CAPGET : usize = 184;
pub const CAPSET : usize = 185;
pub const SIGALTSTACK : usize = 186;
pub const SENDFILE : usize = 187;
pub const VFORK : usize = 190;
pub const UGETRLIMIT : usize = 191;
pub const MMAP2 : usize = 192;
pub const TRUNCATE64 : usize = 193;
pub const FTRUNCATE64 : usize = 194;
pub const STAT64 : usize = 195;
pub const LSTAT64 : usize = 196;
pub const FSTAT64 : usize = 197;
pub const LCHOWN32 : usize = 198;
pub const GETUID32 : usize = 199;
pub const GETGID32 : usize = 200;
pub const GETEUID32 : usize = 201;
pub const GETEGID32 : usize = 202;
pub const SETREUID32 : usize = 203;
pub const SETREGID32 : usize = 204;
pub const GETGROUPS32 : usize = 205;
pub const SETGROUPS32 : usize = 206;
pub const FCHOWN32 : usize = 207;
pub const SETRESUID32 : usize = 208;
pub const GETRESUID32 : usize = 209;
pub const SETRESGID32 : usize = 210;
pub const GETRESGID32 : usize = 211;
pub const CHOWN32 : usize = 212;
pub const SETUID32 : usize = 213;
pub const SETGID32 : usize = 214;
pub const SETFSUID32 : usize = 215;
pub const SETFSGID32 : usize = 216;
pub const GETDENTS64 : usize = 217;
pub const PIVOT_ROOT : usize = 218;
pub const MINCORE : usize = 219;
pub const MADVISE : usize = 220;
pub const FCNTL64 : usize = 221;
pub const GETTID : usize = 224;
pub const READAHEAD : usize = 225;
pub const SETXATTR : usize = 226;
pub const LSETXATTR : usize = 227;
pub const FSETXATTR : usize = 228;
pub const GETXATTR : usize = 229;
pub const LGETXATTR : usize = 230;
pub const FGETXATTR : usize = 231;
pub const LISTXATTR : usize = 232;
pub const LLISTXATTR : usize = 233;
pub const FLISTXATTR : usize = 234;
pub const REMOVEXATTR : usize = 235;
pub const LREMOVEXATTR : usize = 236;
pub const FREMOVEXATTR : usize = 237;
pub const TKILL : usize = 238;
pub const SENDFILE64 : usize = 239;
pub const FUTEX : usize = 240;
pub const SCHED_SETAFFINITY : usize = 241;
pub const SCHED_GETAFFINITY : usize = 242;
pub const IO_SETUP : usize = 243;
pub const IO_DESTROY : usize = 244;
pub const IO_GETEVENTS : usize = 245;
pub const IO_SUBMIT : usize = 246;
pub const IO_CANCEL : usize = 247;
pub const EXIT_GROUP : usize = 248;
pub const LOOKUP_DCOOKIE : usize = 249;
pub const EPOLL_CREATE : usize = 250;
pub const EPOLL_CTL : usize = 251;
pub const EPOLL_WAIT : usize = 252;
pub const REMAP_FILE_PAGES : usize = 253;
pub const SET_TID_ADDRESS : usize = 256;
pub const TIMER_CREATE : usize = 257;
pub const TIMER_SETTIME : usize = 258;
pub const TIMER_GETTIME : usize = 259;
pub const TIMER_GETOVERRUN : usize = 260;
pub const TIMER_DELETE : usize = 261;
pub const CLOCK_SETTIME : usize = 262;
pub const CLOCK_GETTIME : usize = 263;
pub const CLOCK_GETRES : usize = 264;
pub const CLOCK_NANOSLEEP : usize = 265;
pub const STATFS64 : usize = 266;
pub const FSTATFS64 : usize = 267;
pub const TGKILL : usize = 268;
pub const UTIMES : usize = 269;
pub const ARM_FADVISE64_64 : usize = 270;
pub const PCICONFIG_IOBASE : usize = 271;
pub const PCICONFIG_READ : usize = 272;
pub const PCICONFIG_WRITE : usize = 273;
pub const MQ_OPEN : usize = 274;
pub const MQ_UNLINK : usize = 275;
pub const MQ_TIMEDSEND : usize = 276;
pub const MQ_TIMEDRECEIVE : usize = 277;
pub const MQ_NOTIFY : usize = 278;
pub const MQ_GETSETATTR : usize = 279;
pub const WAITID : usize = 280;
pub const SOCKET : usize = 281;
pub const BIND : usize = 282;
pub const CONNECT : usize = 283;
pub const LISTEN : usize = 284;
pub const ACCEPT : usize = 285;
pub const GETSOCKNAME : usize = 286;
pub const GETPEERNAME : usize = 287;
pub const SOCKETPAIR : usize = 288;
pub const SEND : usize = 289;
pub const SENDTO : usize = 290;
pub const RECV : usize = 291;
pub const RECVFROM : usize = 292;
pub const SHUTDOWN : usize = 293;
pub const SETSOCKOPT : usize = 294;
pub const GETSOCKOPT : usize = 295;
pub const SENDMSG : usize = 296;
pub const RECVMSG : usize = 297;
pub const SEMOP : usize = 298;
pub const SEMGET : usize = 299;
pub const SEMCTL : usize = 300;
pub const MSGSND : usize = 301;
pub const MSGRCV : usize = 302;
pub const MSGGET : usize = 303;
pub const MSGCTL : usize = 304;
pub const SHMAT : usize = 305;
pub const SHMDT : usize = 306;
pub const SHMGET : usize = 307;
pub const SHMCTL : usize = 308;
pub const ADD_KEY : usize = 309;
pub const REQUEST_KEY : usize = 310;
pub const KEYCTL : usize = 311;
pub const SEMTIMEDOP : usize = 312;
pub const VSERVER : usize = 313;
pub const IOPRIO_SET : usize = 314;
pub const IOPRIO_GET : usize = 315;
pub const INOTIFY_INIT : usize = 316;
pub const INOTIFY_ADD_WATCH : usize = 317;
pub const INOTIFY_RM_WATCH : usize = 318;
pub const MBIND : usize = 319;
pub const GET_MEMPOLICY : usize = 320;
pub const SET_MEMPOLICY : usize = 321;
pub const OPENAT : usize = 322;
pub const MKDIRAT : usize = 323;
pub const MKNODAT : usize = 324;
pub const FCHOWNAT : usize = 325;
pub const FUTIMESAT : usize = 326;
pub const FSTATAT64 : usize = 327;
pub const UNLINKAT : usize = 328;
pub const RENAMEAT : usize = 329;
pub const LINKAT : usize = 330;
pub const SYMLINKAT : usize = 331;
pub const READLINKAT : usize = 332;
pub const FCHMODAT : usize = 333;
pub const FACCESSAT : usize = 334;
pub const PSELECT6 : usize = 335;
pub const PPOLL : usize = 336;
pub const UNSHARE : usize = 337;
pub const SET_ROBUST_LIST : usize = 338;
pub const GET_ROBUST_LIST : usize = 339;
pub const SPLICE : usize = 340;
pub const ARM_SYNC_FILE_RANGE : usize = 341;
pub const SYNC_FILE_RANGE2 : usize = 341;
pub const TEE : usize = 342;
pub const VMSPLICE : usize = 343;
pub const MOVE_PAGES : usize = 344;
pub const GETCPU : usize = 345;
pub const EPOLL_PWAIT : usize = 346;
pub const KEXEC_LOAD : usize = 347;
pub const UTIMENSAT : usize = 348;
pub const SIGNALFD : usize = 349;
pub const TIMERFD_CREATE : usize = 350;
pub const EVENTFD : usize = 351;
pub const FALLOCATE : usize = 352;
pub const TIMERFD_SETTIME : usize = 353;
pub const TIMERFD_GETTIME : usize = 354;
pub const SIGNALFD4 : usize = 355;
pub const EVENTFD2 : usize = 356;
pub const EPOLL_CREATE1 : usize = 357;
pub const DUP3 : usize = 358;
pub const PIPE2 : usize = 359;
pub const INOTIFY_INIT1 : usize = 360;
pub const PREADV : usize = 361;
pub const PWRITEV : usize = 362;
pub const RT_TGSIGQUEUEINFO : usize = 363;
pub const PERF_EVENT_OPEN : usize = 364;
pub const RECVMMSG : usize = 365;
pub const ACCEPT4 : usize = 366;
pub const FANOTIFY_INIT : usize = 367;
pub const FANOTIFY_MARK : usize = 368;
pub const PRLIMIT64 : usize = 369;
pub const NAME_TO_HANDLE_AT : usize = 370;
pub const OPEN_BY_HANDLE_AT : usize = 371;
pub const CLOCK_ADJTIME : usize = 372;
pub const SYNCFS : usize = 373;
pub const SENDMMSG : usize = 374;
pub const SETNS : usize = 375;
pub const PROCESS_VM_READV : usize = 376;
pub const PROCESS_VM_WRITEV : usize = 377;
pub const KCMP : usize = 378;
pub const FINIT_MODULE : usize = 379;