/*
 * Copyright (c) 2005 The Regents of The University of Michigan
 * Copyright (c) 2007 MIPS Technologies, Inc.
 * Copyright (c) 2016 The University of Virginia
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution;
 * neither the name of the copyright holders nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Authors: Gabe Black
 *          Korey Sewell
 *          Alec Roelke
 */

#include "arch/riscv/linux/process.hh"

#include <map>

#include "arch/riscv/isa_traits.hh"
#include "arch/riscv/linux/linux.hh"
#include "base/loader/object_file.hh"
#include "base/trace.hh"
#include "cpu/thread_context.hh"
#include "debug/SyscallVerbose.hh"
#include "kern/linux/linux.hh"
#include "sim/eventq.hh"
#include "sim/process.hh"
#include "sim/syscall_desc.hh"
#include "sim/syscall_emul.hh"
#include "sim/system.hh"

using namespace std;
using namespace RiscvISA;

namespace
{

class RiscvLinuxObjectFileLoader : public Process::Loader
{
  public:
    Process *
    load(ProcessParams *params, ObjectFile *obj_file) override
    {
        auto arch = obj_file->getArch();
        auto opsys = obj_file->getOpSys();

        if (arch != ObjectFile::Riscv64 && arch != ObjectFile::Riscv32)
            return nullptr;

        if (opsys == ObjectFile::UnknownOpSys) {
            warn("Unknown operating system; assuming Linux.");
            opsys = ObjectFile::Linux;
        }

        if (opsys != ObjectFile::Linux)
            return nullptr;

        if (arch == ObjectFile::Riscv64)
            return new RiscvLinuxProcess64(params, obj_file);
        else
            return new RiscvLinuxProcess32(params, obj_file);
    }
};

RiscvLinuxObjectFileLoader loader;

} // anonymous namespace

/// Target uname() handler.
static SyscallReturn
unameFunc64(SyscallDesc *desc, int callnum, ThreadContext *tc)
{
    int index = 0;
    auto process = tc->getProcessPtr();
    TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index));

    strcpy(name->sysname, "Linux");
    strcpy(name->nodename,"sim.gem5.org");
    strcpy(name->release, process->release.c_str());
    strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
    strcpy(name->machine, "riscv64");

    name.copyOut(tc->getVirtProxy());
    return 0;
}

/// Target uname() handler.
static SyscallReturn
unameFunc32(SyscallDesc *desc, int callnum, ThreadContext *tc)
{
    int index = 0;
    auto process = tc->getProcessPtr();
    TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index));

    strcpy(name->sysname, "Linux");
    strcpy(name->nodename,"sim.gem5.org");
    strcpy(name->release, process->release.c_str());
    strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
    strcpy(name->machine, "riscv32");

    name.copyOut(tc->getVirtProxy());
    return 0;
}

std::map<int, SyscallDescABI<DefaultSyscallABI>>
        RiscvLinuxProcess64::syscallDescs = {
    {0,    { "io_setup" }},
    {1,    { "io_destroy" }},
    {2,    { "io_submit" }},
    {3,    { "io_cancel" }},
    {4,    { "io_getevents" }},
    {5,    { "setxattr" }},
    {6,    { "lsetxattr" }},
    {7,    { "fsetxattr" }},
    {8,    { "getxattr" }},
    {9,    { "lgetxattr" }},
    {10,   { "fgetxattr" }},
    {11,   { "listxattr" }},
    {12,   { "llistxattr" }},
    {13,   { "flistxattr" }},
    {14,   { "removexattr" }},
    {15,   { "lremovexattr" }},
    {16,   { "fremovexattr" }},
    {17,   { "getcwd", getcwdFunc }},
    {18,   { "lookup_dcookie" }},
    {19,   { "eventfd2" }},
    {20,   { "epoll_create1" }},
    {21,   { "epoll_ctl" }},
    {22,   { "epoll_pwait" }},
    {23,   { "dup", dupFunc }},
    {24,   { "dup3" }},
    {25,   { "fcntl", fcntl64Func }},
    {26,   { "inotify_init1" }},
    {27,   { "inotify_add_watch" }},
    {28,   { "inotify_rm_watch" }},
    {29,   { "ioctl", ioctlFunc<RiscvLinux64> }},
    {30,   { "ioprio_get" }},
    {31,   { "ioprio_set" }},
    {32,   { "flock" }},
    {33,   { "mknodat" }},
    {34,   { "mkdirat" }},
    {35,   { "unlinkat", unlinkatFunc<RiscvLinux64> }},
    {36,   { "symlinkat" }},
    {37,   { "linkat" }},
    {38,   { "renameat", renameatFunc<RiscvLinux64> }},
    {39,   { "umount2" }},
    {40,   { "mount" }},
    {41,   { "pivot_root" }},
    {42,   { "nfsservctl" }},
    {43,   { "statfs", statfsFunc<RiscvLinux64> }},
    {44,   { "fstatfs", fstatfsFunc<RiscvLinux64> }},
    {45,   { "truncate", truncateFunc }},
    {46,   { "ftruncate", ftruncate64Func }},
    {47,   { "fallocate", fallocateFunc }},
    {48,   { "faccessat", faccessatFunc<RiscvLinux64> }},
    {49,   { "chdir" }},
    {50,   { "fchdir" }},
    {51,   { "chroot" }},
    {52,   { "fchmod", fchmodFunc<RiscvLinux64> }},
    {53,   { "fchmodat" }},
    {54,   { "fchownat" }},
    {55,   { "fchown", fchownFunc }},
    {56,   { "openat", openatFunc<RiscvLinux64> }},
    {57,   { "close", closeFunc }},
    {58,   { "vhangup" }},
    {59,   { "pipe2" }},
    {60,   { "quotactl" }},
    {61,   { "getdents64" }},
    {62,   { "lseek", lseekFunc }},
    {63,   { "read", readFunc<RiscvLinux64> }},
    {64,   { "write", writeFunc<RiscvLinux64> }},
    {66,   { "writev", writevFunc<RiscvLinux64> }},
    {67,   { "pread64" }},
    {68,   { "pwrite64", pwrite64Func<RiscvLinux64> }},
    {69,   { "preadv" }},
    {70,   { "pwritev" }},
    {71,   { "sendfile" }},
    {72,   { "pselect6" }},
    {73,   { "ppoll" }},
    {74,   { "signalfd64" }},
    {75,   { "vmsplice" }},
    {76,   { "splice" }},
    {77,   { "tee" }},
    {78,   { "readlinkat", readlinkatFunc<RiscvLinux64> }},
    {79,   { "fstatat", fstatat64Func<RiscvLinux64> }},
    {80,   { "fstat", fstat64Func<RiscvLinux64> }},
    {81,   { "sync" }},
    {82,   { "fsync" }},
    {83,   { "fdatasync" }},
    {84,   { "sync_file_range2" }},
    {85,   { "timerfd_create" }},
    {86,   { "timerfd_settime" }},
    {87,   { "timerfd_gettime" }},
    {88,   { "utimensat" }},
    {89,   { "acct" }},
    {90,   { "capget" }},
    {91,   { "capset" }},
    {92,   { "personality" }},
    {93,   { "exit", exitFunc }},
    {94,   { "exit_group", exitGroupFunc }},
    {95,   { "waitid" }},
    {96,   { "set_tid_address", setTidAddressFunc }},
    {97,   { "unshare" }},
    {98,   { "futex", futexFunc<RiscvLinux64> }},
    {99,   { "set_robust_list", ignoreWarnOnceFunc }},
    {100,  { "get_robust_list", ignoreWarnOnceFunc }},
    {101,  { "nanosleep", ignoreWarnOnceFunc }},
    {102,  { "getitimer" }},
    {103,  { "setitimer" }},
    {104,  { "kexec_load" }},
    {105,  { "init_module" }},
    {106,  { "delete_module" }},
    {107,  { "timer_create" }},
    {108,  { "timer_gettime" }},
    {109,  { "timer_getoverrun" }},
    {110,  { "timer_settime" }},
    {111,  { "timer_delete" }},
    {112,  { "clock_settime" }},
    {113,  { "clock_gettime", clock_gettimeFunc<RiscvLinux64> }},
    {114,  { "clock_getres", clock_getresFunc<RiscvLinux64> }},
    {115,  { "clock_nanosleep" }},
    {116,  { "syslog" }},
    {117,  { "ptrace" }},
    {118,  { "sched_setparam" }},
    {119,  { "sched_setscheduler" }},
    {120,  { "sched_getscheduler" }},
    {121,  { "sched_getparam" }},
    {122,  { "sched_setaffinity" }},
    {123,  { "sched_getaffinity" }},
    {124,  { "sched_yield", ignoreWarnOnceFunc }},
    {125,  { "sched_get_priority_max" }},
    {126,  { "sched_get_priority_min" }},
    {127,  { "scheD_rr_get_interval" }},
    {128,  { "restart_syscall" }},
    {129,  { "kill" }},
    {130,  { "tkill" }},
    {131,  { "tgkill", tgkillFunc<RiscvLinux64> }},
    {132,  { "sigaltstack" }},
    {133,  { "rt_sigsuspend", ignoreWarnOnceFunc }},
    {134,  { "rt_sigaction", ignoreWarnOnceFunc }},
    {135,  { "rt_sigprocmask", ignoreWarnOnceFunc }},
    {136,  { "rt_sigpending", ignoreWarnOnceFunc }},
    {137,  { "rt_sigtimedwait", ignoreWarnOnceFunc }},
    {138,  { "rt_sigqueueinfo", ignoreWarnOnceFunc }},
    {139,  { "rt_sigreturn", ignoreWarnOnceFunc }},
    {140,  { "setpriority" }},
    {141,  { "getpriority" }},
    {142,  { "reboot" }},
    {143,  { "setregid" }},
    {144,  { "setgid" }},
    {145,  { "setreuid" }},
    {146,  { "setuid", ignoreFunc }},
    {147,  { "setresuid" }},
    {148,  { "getresuid" }},
    {149,  { "getresgid" }},
    {150,  { "getresgid" }},
    {151,  { "setfsuid" }},
    {152,  { "setfsgid" }},
    {153,  { "times", timesFunc<RiscvLinux64> }},
    {154,  { "setpgid", setpgidFunc }},
    {155,  { "getpgid" }},
    {156,  { "getsid" }},
    {157,  { "setsid" }},
    {158,  { "getgroups" }},
    {159,  { "setgroups" }},
    {160,  { "uname", unameFunc64 }},
    {161,  { "sethostname" }},
    {162,  { "setdomainname" }},
    {163,  { "getrlimit", getrlimitFunc<RiscvLinux64> }},
    {164,  { "setrlimit", ignoreFunc }},
    {165,  { "getrusage", getrusageFunc<RiscvLinux64> }},
    {166,  { "umask", umaskFunc }},
    {167,  { "prctl" }},
    {168,  { "getcpu" }},
    {169,  { "gettimeofday", gettimeofdayFunc<RiscvLinux64> }},
    {170,  { "settimeofday" }},
    {171,  { "adjtimex" }},
    {172,  { "getpid", getpidFunc }},
    {173,  { "getppid", getppidFunc }},
    {174,  { "getuid", getuidFunc }},
    {175,  { "geteuid", geteuidFunc }},
    {176,  { "getgid", getgidFunc }},
    {177,  { "getegid", getegidFunc }},
    {178,  { "gettid", gettidFunc }},
    {179,  { "sysinfo", sysinfoFunc<RiscvLinux64> }},
    {180,  { "mq_open" }},
    {181,  { "mq_unlink" }},
    {182,  { "mq_timedsend" }},
    {183,  { "mq_timedrecieve" }},
    {184,  { "mq_notify" }},
    {185,  { "mq_getsetattr" }},
    {186,  { "msgget" }},
    {187,  { "msgctl" }},
    {188,  { "msgrcv" }},
    {189,  { "msgsnd" }},
    {190,  { "semget" }},
    {191,  { "semctl" }},
    {192,  { "semtimedop" }},
    {193,  { "semop" }},
    {194,  { "shmget" }},
    {195,  { "shmctl" }},
    {196,  { "shmat" }},
    {197,  { "shmdt" }},
    {198,  { "socket" }},
    {199,  { "socketpair" }},
    {200,  { "bind" }},
    {201,  { "listen" }},
    {202,  { "accept" }},
    {203,  { "connect" }},
    {204,  { "getsockname" }},
    {205,  { "getpeername" }},
    {206,  { "sendo" }},
    {207,  { "recvfrom" }},
    {208,  { "setsockopt" }},
    {209,  { "getsockopt" }},
    {210,  { "shutdown" }},
    {211,  { "sendmsg" }},
    {212,  { "recvmsg" }},
    {213,  { "readahead" }},
    {214,  { "brk", brkFunc }},
    {215,  { "munmap", munmapFunc }},
    {216,  { "mremap", mremapFunc<RiscvLinux64> }},
    {217,  { "add_key" }},
    {218,  { "request_key" }},
    {219,  { "keyctl" }},
    {220,  { "clone", cloneFunc<RiscvLinux64> }},
    {221,  { "execve", execveFunc<RiscvLinux64> }},
    {222,  { "mmap", mmapFunc<RiscvLinux64> }},
    {223,  { "fadvise64" }},
    {224,  { "swapon" }},
    {225,  { "swapoff" }},
    {226,  { "mprotect", ignoreFunc }},
    {227,  { "msync", ignoreFunc }},
    {228,  { "mlock", ignoreFunc }},
    {229,  { "munlock", ignoreFunc }},
    {230,  { "mlockall", ignoreFunc }},
    {231,  { "munlockall", ignoreFunc }},
    {232,  { "mincore", ignoreFunc }},
    {233,  { "madvise", ignoreFunc }},
    {234,  { "remap_file_pages" }},
    {235,  { "mbind", ignoreFunc }},
    {236,  { "get_mempolicy" }},
    {237,  { "set_mempolicy" }},
    {238,  { "migrate_pages" }},
    {239,  { "move_pages" }},
    {240,  { "tgsigqueueinfo" }},
    {241,  { "perf_event_open" }},
    {242,  { "accept4" }},
    {243,  { "recvmmsg" }},
    {260,  { "wait4" }},
    {261,  { "prlimit64", prlimitFunc<RiscvLinux64> }},
    {262,  { "fanotify_init" }},
    {263,  { "fanotify_mark" }},
    {264,  { "name_to_handle_at" }},
    {265,  { "open_by_handle_at" }},
    {266,  { "clock_adjtime" }},
    {267,  { "syncfs" }},
    {268,  { "setns" }},
    {269,  { "sendmmsg" }},
    {270,  { "process_vm_ready" }},
    {271,  { "process_vm_writev" }},
    {272,  { "kcmp" }},
    {273,  { "finit_module" }},
    {274,  { "sched_setattr" }},
    {275,  { "sched_getattr" }},
    {276,  { "renameat2" }},
    {277,  { "seccomp" }},
    {278,  { "getrandom" }},
    {279,  { "memfd_create" }},
    {280,  { "bpf" }},
    {281,  { "execveat" }},
    {282,  { "userfaultid" }},
    {283,  { "membarrier" }},
    {284,  { "mlock2" }},
    {285,  { "copy_file_range" }},
    {286,  { "preadv2" }},
    {287,  { "pwritev2" }},
    {1024, { "open", openFunc<RiscvLinux64> }},
    {1025, { "link" }},
    {1026, { "unlink", unlinkFunc }},
    {1027, { "mknod" }},
    {1028, { "chmod", chmodFunc<RiscvLinux64> }},
    {1029, { "chown", chownFunc }},
    {1030, { "mkdir", mkdirFunc }},
    {1031, { "rmdir" }},
    {1032, { "lchown" }},
    {1033, { "access", accessFunc }},
    {1034, { "rename", renameFunc }},
    {1035, { "readlink", readlinkFunc }},
    {1036, { "symlink" }},
    {1037, { "utimes", utimesFunc<RiscvLinux64> }},
    {1038, { "stat", stat64Func<RiscvLinux64> }},
    {1039, { "lstat", lstat64Func<RiscvLinux64> }},
    {1040, { "pipe", pipeFunc }},
    {1041, { "dup2", dup2Func }},
    {1042, { "epoll_create" }},
    {1043, { "inotifiy_init" }},
    {1044, { "eventfd" }},
    {1045, { "signalfd" }},
    {1046, { "sendfile" }},
    {1047, { "ftruncate", ftruncate64Func }},
    {1048, { "truncate", truncate64Func }},
    {1049, { "stat", stat64Func<RiscvLinux64> }},
    {1050, { "lstat", lstat64Func<RiscvLinux64> }},
    {1051, { "fstat", fstat64Func<RiscvLinux64> }},
    {1052, { "fcntl", fcntl64Func }},
    {1053, { "fadvise64" }},
    {1054, { "newfstatat" }},
    {1055, { "fstatfs", fstatfsFunc<RiscvLinux64> }},
    {1056, { "statfs", statfsFunc<RiscvLinux64> }},
    {1057, { "lseek", lseekFunc }},
    {1058, { "mmap", mmapFunc<RiscvLinux64> }},
    {1059, { "alarm" }},
    {1060, { "getpgrp" }},
    {1061, { "pause" }},
    {1062, { "time", timeFunc<RiscvLinux64> }},
    {1063, { "utime" }},
    {1064, { "creat" }},
    {1065, { "getdents" }},
    {1066, { "futimesat" }},
    {1067, { "select" }},
    {1068, { "poll" }},
    {1069, { "epoll_wait" }},
    {1070, { "ustat" }},
    {1071, { "vfork" }},
    {1072, { "oldwait4" }},
    {1073, { "recv" }},
    {1074, { "send" }},
    {1075, { "bdflush" }},
    {1076, { "umount" }},
    {1077, { "uselib" }},
    {1078, { "sysctl" }},
    {1079, { "fork" }},
    {2011, { "getmainvars" }}
};

std::map<int, SyscallDescABI<DefaultSyscallABI>>
        RiscvLinuxProcess32::syscallDescs = {
    {0,    { "io_setup" }},
    {1,    { "io_destroy" }},
    {2,    { "io_submit" }},
    {3,    { "io_cancel" }},
    {4,    { "io_getevents" }},
    {5,    { "setxattr" }},
    {6,    { "lsetxattr" }},
    {7,    { "fsetxattr" }},
    {8,    { "getxattr" }},
    {9,    { "lgetxattr" }},
    {10,   { "fgetxattr" }},
    {11,   { "listxattr" }},
    {12,   { "llistxattr" }},
    {13,   { "flistxattr" }},
    {14,   { "removexattr" }},
    {15,   { "lremovexattr" }},
    {16,   { "fremovexattr" }},
    {17,   { "getcwd", getcwdFunc }},
    {18,   { "lookup_dcookie" }},
    {19,   { "eventfd2" }},
    {20,   { "epoll_create1" }},
    {21,   { "epoll_ctl" }},
    {22,   { "epoll_pwait" }},
    {23,   { "dup", dupFunc }},
    {24,   { "dup3" }},
    {25,   { "fcntl", fcntlFunc }},
    {26,   { "inotify_init1" }},
    {27,   { "inotify_add_watch" }},
    {28,   { "inotify_rm_watch" }},
    {29,   { "ioctl", ioctlFunc<RiscvLinux32> }},
    {30,   { "ioprio_get" }},
    {31,   { "ioprio_set" }},
    {32,   { "flock" }},
    {33,   { "mknodat" }},
    {34,   { "mkdirat" }},
    {35,   { "unlinkat", unlinkatFunc<RiscvLinux32> }},
    {36,   { "symlinkat" }},
    {37,   { "linkat" }},
    {38,   { "renameat", renameatFunc<RiscvLinux32> }},
    {39,   { "umount2" }},
    {40,   { "mount" }},
    {41,   { "pivot_root" }},
    {42,   { "nfsservctl" }},
    {43,   { "statfs", statfsFunc<RiscvLinux32> }},
    {44,   { "fstatfs", fstatfsFunc<RiscvLinux32> }},
    {45,   { "truncate", truncateFunc }},
    {46,   { "ftruncate", ftruncateFunc }},
    {47,   { "fallocate", fallocateFunc }},
    {48,   { "faccessat", faccessatFunc<RiscvLinux32> }},
    {49,   { "chdir" }},
    {50,   { "fchdir" }},
    {51,   { "chroot" }},
    {52,   { "fchmod", fchmodFunc<RiscvLinux32> }},
    {53,   { "fchmodat" }},
    {54,   { "fchownat" }},
    {55,   { "fchown", fchownFunc }},
    {56,   { "openat", openatFunc<RiscvLinux32> }},
    {57,   { "close", closeFunc }},
    {58,   { "vhangup" }},
    {59,   { "pipe2" }},
    {60,   { "quotactl" }},
    {61,   { "getdents64" }},
    {62,   { "lseek", lseekFunc }},
    {63,   { "read", readFunc<RiscvLinux32> }},
    {64,   { "write", writeFunc<RiscvLinux32> }},
    {66,   { "writev", writevFunc<RiscvLinux32> }},
    {67,   { "pread64" }},
    {68,   { "pwrite64", pwrite64Func<RiscvLinux32> }},
    {69,   { "preadv" }},
    {70,   { "pwritev" }},
    {71,   { "sendfile" }},
    {72,   { "pselect6" }},
    {73,   { "ppoll" }},
    {74,   { "signalfd64" }},
    {75,   { "vmsplice" }},
    {76,   { "splice" }},
    {77,   { "tee" }},
    {78,   { "readlinkat", readlinkatFunc<RiscvLinux32> }},
    {79,   { "fstatat" }},
    {80,   { "fstat", fstatFunc<RiscvLinux32> }},
    {81,   { "sync" }},
    {82,   { "fsync" }},
    {83,   { "fdatasync" }},
    {84,   { "sync_file_range2" }},
    {85,   { "timerfd_create" }},
    {86,   { "timerfd_settime" }},
    {87,   { "timerfd_gettime" }},
    {88,   { "utimensat" }},
    {89,   { "acct" }},
    {90,   { "capget" }},
    {91,   { "capset" }},
    {92,   { "personality" }},
    {93,   { "exit", exitFunc }},
    {94,   { "exit_group", exitGroupFunc }},
    {95,   { "waitid" }},
    {96,   { "set_tid_address", setTidAddressFunc }},
    {97,   { "unshare" }},
    {98,   { "futex", futexFunc<RiscvLinux32> }},
    {99,   { "set_robust_list", ignoreWarnOnceFunc }},
    {100,  { "get_robust_list", ignoreWarnOnceFunc }},
    {101,  { "nanosleep" }},
    {102,  { "getitimer" }},
    {103,  { "setitimer" }},
    {104,  { "kexec_load" }},
    {105,  { "init_module" }},
    {106,  { "delete_module" }},
    {107,  { "timer_create" }},
    {108,  { "timer_gettime" }},
    {109,  { "timer_getoverrun" }},
    {110,  { "timer_settime" }},
    {111,  { "timer_delete" }},
    {112,  { "clock_settime" }},
    {113,  { "clock_gettime", clock_gettimeFunc<RiscvLinux32> }},
    {114,  { "clock_getres", clock_getresFunc<RiscvLinux32> }},
    {115,  { "clock_nanosleep" }},
    {116,  { "syslog" }},
    {117,  { "ptrace" }},
    {118,  { "sched_setparam" }},
    {119,  { "sched_setscheduler" }},
    {120,  { "sched_getscheduler" }},
    {121,  { "sched_getparam" }},
    {122,  { "sched_setaffinity" }},
    {123,  { "sched_getaffinity" }},
    {124,  { "sched_yield", ignoreWarnOnceFunc }},
    {125,  { "sched_get_priority_max" }},
    {126,  { "sched_get_priority_min" }},
    {127,  { "scheD_rr_get_interval" }},
    {128,  { "restart_syscall" }},
    {129,  { "kill" }},
    {130,  { "tkill" }},
    {131,  { "tgkill", tgkillFunc<RiscvLinux32> }},
    {132,  { "sigaltstack" }},
    {133,  { "rt_sigsuspend", ignoreWarnOnceFunc }},
    {134,  { "rt_sigaction", ignoreWarnOnceFunc }},
    {135,  { "rt_sigprocmask", ignoreWarnOnceFunc }},
    {136,  { "rt_sigpending", ignoreWarnOnceFunc }},
    {137,  { "rt_sigtimedwait", ignoreWarnOnceFunc }},
    {138,  { "rt_sigqueueinfo", ignoreWarnOnceFunc }},
    {139,  { "rt_sigreturn", ignoreWarnOnceFunc }},
    {140,  { "setpriority" }},
    {141,  { "getpriority" }},
    {142,  { "reboot" }},
    {143,  { "setregid" }},
    {144,  { "setgid" }},
    {145,  { "setreuid" }},
    {146,  { "setuid", ignoreFunc }},
    {147,  { "setresuid" }},
    {148,  { "getresuid" }},
    {149,  { "getresgid" }},
    {150,  { "getresgid" }},
    {151,  { "setfsuid" }},
    {152,  { "setfsgid" }},
    {153,  { "times", timesFunc<RiscvLinux32> }},
    {154,  { "setpgid", setpgidFunc }},
    {155,  { "getpgid" }},
    {156,  { "getsid" }},
    {157,  { "setsid" }},
    {158,  { "getgroups" }},
    {159,  { "setgroups" }},
    {160,  { "uname", unameFunc32 }},
    {161,  { "sethostname" }},
    {162,  { "setdomainname" }},
    {163,  { "getrlimit", getrlimitFunc<RiscvLinux32> }},
    {164,  { "setrlimit", ignoreFunc }},
    {165,  { "getrusage", getrusageFunc<RiscvLinux32> }},
    {166,  { "umask", umaskFunc }},
    {167,  { "prctl" }},
    {168,  { "getcpu" }},
    {169,  { "gettimeofday", gettimeofdayFunc<RiscvLinux32> }},
    {170,  { "settimeofday" }},
    {171,  { "adjtimex" }},
    {172,  { "getpid", getpidFunc }},
    {173,  { "getppid", getppidFunc }},
    {174,  { "getuid", getuidFunc }},
    {175,  { "geteuid", geteuidFunc }},
    {176,  { "getgid", getgidFunc }},
    {177,  { "getegid", getegidFunc }},
    {178,  { "gettid", gettidFunc }},
    {179,  { "sysinfo", sysinfoFunc<RiscvLinux32> }},
    {180,  { "mq_open" }},
    {181,  { "mq_unlink" }},
    {182,  { "mq_timedsend" }},
    {183,  { "mq_timedrecieve" }},
    {184,  { "mq_notify" }},
    {185,  { "mq_getsetattr" }},
    {186,  { "msgget" }},
    {187,  { "msgctl" }},
    {188,  { "msgrcv" }},
    {189,  { "msgsnd" }},
    {190,  { "semget" }},
    {191,  { "semctl" }},
    {192,  { "semtimedop" }},
    {193,  { "semop" }},
    {194,  { "shmget" }},
    {195,  { "shmctl" }},
    {196,  { "shmat" }},
    {197,  { "shmdt" }},
    {198,  { "socket" }},
    {199,  { "socketpair" }},
    {200,  { "bind" }},
    {201,  { "listen" }},
    {202,  { "accept" }},
    {203,  { "connect" }},
    {204,  { "getsockname" }},
    {205,  { "getpeername" }},
    {206,  { "sendo" }},
    {207,  { "recvfrom" }},
    {208,  { "setsockopt" }},
    {209,  { "getsockopt" }},
    {210,  { "shutdown" }},
    {211,  { "sendmsg" }},
    {212,  { "recvmsg" }},
    {213,  { "readahead" }},
    {214,  { "brk", brkFunc }},
    {215,  { "munmap", munmapFunc }},
    {216,  { "mremap", mremapFunc<RiscvLinux32> }},
    {217,  { "add_key" }},
    {218,  { "request_key" }},
    {219,  { "keyctl" }},
    {220,  { "clone", cloneFunc<RiscvLinux32> }},
    {221,  { "execve", execveFunc<RiscvLinux32> }},
    {222,  { "mmap", mmapFunc<RiscvLinux32> }},
    {223,  { "fadvise64" }},
    {224,  { "swapon" }},
    {225,  { "swapoff" }},
    {226,  { "mprotect", ignoreFunc }},
    {227,  { "msync", ignoreFunc }},
    {228,  { "mlock", ignoreFunc }},
    {229,  { "munlock", ignoreFunc }},
    {230,  { "mlockall", ignoreFunc }},
    {231,  { "munlockall", ignoreFunc }},
    {232,  { "mincore", ignoreFunc }},
    {233,  { "madvise", ignoreFunc }},
    {234,  { "remap_file_pages" }},
    {235,  { "mbind", ignoreFunc }},
    {236,  { "get_mempolicy" }},
    {237,  { "set_mempolicy" }},
    {238,  { "migrate_pages" }},
    {239,  { "move_pages" }},
    {240,  { "tgsigqueueinfo" }},
    {241,  { "perf_event_open" }},
    {242,  { "accept4" }},
    {243,  { "recvmmsg" }},
    {260,  { "wait4" }},
    {261,  { "prlimit64", prlimitFunc<RiscvLinux32> }},
    {262,  { "fanotify_init" }},
    {263,  { "fanotify_mark" }},
    {264,  { "name_to_handle_at" }},
    {265,  { "open_by_handle_at" }},
    {266,  { "clock_adjtime" }},
    {267,  { "syncfs" }},
    {268,  { "setns" }},
    {269,  { "sendmmsg" }},
    {270,  { "process_vm_ready" }},
    {271,  { "process_vm_writev" }},
    {272,  { "kcmp" }},
    {273,  { "finit_module" }},
    {274,  { "sched_setattr" }},
    {275,  { "sched_getattr" }},
    {276,  { "renameat2" }},
    {277,  { "seccomp" }},
    {278,  { "getrandom" }},
    {279,  { "memfd_create" }},
    {280,  { "bpf" }},
    {281,  { "execveat" }},
    {282,  { "userfaultid" }},
    {283,  { "membarrier" }},
    {284,  { "mlock2" }},
    {285,  { "copy_file_range" }},
    {286,  { "preadv2" }},
    {287,  { "pwritev2" }},
    {1024, { "open", openFunc<RiscvLinux32> }},
    {1025, { "link" }},
    {1026, { "unlink", unlinkFunc }},
    {1027, { "mknod" }},
    {1028, { "chmod", chmodFunc<RiscvLinux32> }},
    {1029, { "chown", chownFunc }},
    {1030, { "mkdir", mkdirFunc }},
    {1031, { "rmdir" }},
    {1032, { "lchown" }},
    {1033, { "access", accessFunc }},
    {1034, { "rename", renameFunc }},
    {1035, { "readlink", readlinkFunc }},
    {1036, { "symlink" }},
    {1037, { "utimes", utimesFunc<RiscvLinux32> }},
    {1038, { "stat", statFunc<RiscvLinux32> }},
    {1039, { "lstat", lstatFunc<RiscvLinux32> }},
    {1040, { "pipe", pipeFunc }},
    {1041, { "dup2", dup2Func }},
    {1042, { "epoll_create" }},
    {1043, { "inotifiy_init" }},
    {1044, { "eventfd" }},
    {1045, { "signalfd" }},
    {1046, { "sendfile" }},
    {1047, { "ftruncate", ftruncateFunc }},
    {1048, { "truncate", truncateFunc }},
    {1049, { "stat", statFunc<RiscvLinux32> }},
    {1050, { "lstat", lstatFunc<RiscvLinux32> }},
    {1051, { "fstat", fstatFunc<RiscvLinux32> }},
    {1052, { "fcntl", fcntlFunc }},
    {1053, { "fadvise64" }},
    {1054, { "newfstatat" }},
    {1055, { "fstatfs", fstatfsFunc<RiscvLinux32> }},
    {1056, { "statfs", statfsFunc<RiscvLinux32> }},
    {1057, { "lseek", lseekFunc }},
    {1058, { "mmap", mmapFunc<RiscvLinux32> }},
    {1059, { "alarm" }},
    {1060, { "getpgrp" }},
    {1061, { "pause" }},
    {1062, { "time", timeFunc<RiscvLinux32> }},
    {1063, { "utime" }},
    {1064, { "creat" }},
    {1065, { "getdents" }},
    {1066, { "futimesat" }},
    {1067, { "select" }},
    {1068, { "poll" }},
    {1069, { "epoll_wait" }},
    {1070, { "ustat" }},
    {1071, { "vfork" }},
    {1072, { "oldwait4" }},
    {1073, { "recv" }},
    {1074, { "send" }},
    {1075, { "bdflush" }},
    {1076, { "umount" }},
    {1077, { "uselib" }},
    {1078, { "sysctl" }},
    {1079, { "fork" }},
    {2011, { "getmainvars" }}
};

RiscvLinuxProcess64::RiscvLinuxProcess64(ProcessParams * params,
    ObjectFile *objFile) : RiscvProcess64(params, objFile)
{}

SyscallDesc*
RiscvLinuxProcess64::getDesc(int callnum)
{
    return syscallDescs.find(callnum) != syscallDescs.end() ?
        &syscallDescs.at(callnum) : nullptr;
}

void
RiscvLinuxProcess64::syscall(ThreadContext *tc, Fault *fault)
{
    doSyscall(tc->readIntReg(SyscallNumReg), tc, fault);
}

RiscvLinuxProcess32::RiscvLinuxProcess32(ProcessParams * params,
    ObjectFile *objFile) : RiscvProcess32(params, objFile)
{}

SyscallDesc*
RiscvLinuxProcess32::getDesc(int callnum)
{
    return syscallDescs.find(callnum) != syscallDescs.end() ?
        &syscallDescs.at(callnum) : nullptr;
}

void
RiscvLinuxProcess32::syscall(ThreadContext *tc, Fault *fault)
{
    doSyscall(tc->readIntReg(SyscallNumReg), tc, fault);
}
