diff options
Diffstat (limited to 'kern/linux')
-rw-r--r-- | kern/linux/linux_syscalls.cc | 652 | ||||
-rw-r--r-- | kern/linux/linux_system.hh | 41 |
2 files changed, 367 insertions, 326 deletions
diff --git a/kern/linux/linux_syscalls.cc b/kern/linux/linux_syscalls.cc index 6e8d5d190..d67725050 100644 --- a/kern/linux/linux_syscalls.cc +++ b/kern/linux/linux_syscalls.cc @@ -33,332 +33,332 @@ namespace { standard_strings[SystemCalls<Linux>::Number] = { - "llseek", //0 - "newselect", //1 - "sysctl", //2 - "access", //3 - "acct", //4 - "adjtimex", //5 - "afs_syscall", //6 - "alarm", //7 - "bdflush", //8 - "break", //9 - - - "brk", //10 - "capget", //11 - "capset", //12 - "chdir", //13 - "chmod", //14 - "chown", //15 - "chown32", //16 - "chroot", //17 - "clock_getres", //18 - "clock_gettime", //19 - - - "clock_nanosleep", //20 - "clock_settime", //21 - "clone", //22 - "close", //23 - "creat", //24 - "create_module", //25 - "delete_module", //26 - "dup", //27 - "dup2", //28 - "epoll_create", //29 - - - "epoll_ctl", //30 - "epoll_wait", //31 - "execve", //32 - "exit", //33 - "exit_group", //34 - "fadvise64", //35 - "fadvise64_64", //36 - "fchdir", //37 - "fchmod", //38 - "fchown", //39 - - - "fchown32", //40 - "fcntl", //41 - "fcntl64", //42 - "fdatasync", //43 - "fgetxattr", //44 - "flistxattr", //45 - "flock", //46 - "fork", //47 - "fremovexattr", //48 - "fsetxattr", //49 - - - "fstat", //50 - "fstat64", //51 - "fstatfs", //52 - "fstatfs64", //53 - "fsync", //54 - "ftime", //55 - "ftruncate", //56 - "ftruncate64", //57 - "futex", //58 - "get_kernel_syms", //59 - - - "get_thread_area", //60 - "getcwd", //61 - "getdents", //62 - "getdents64", //63 - "getegid", //64 - "getegid32", //65 - "geteuid", //66 - "geteuid32", //67 - "getgid", //68 - "getgid32", //69 - - - "getgroups", //70 - "getgroups32", //71 - "getitimer", //72 - "getpgid", //73 - "getpgrp", //74 - "getpid", //75 - "getpmsg", //76 - "getppid", //77 - "getpriority", //78 - "getresgid", //79 - - - "getresgid32", //80 - "getresuid", //81 - "getresuid32", //82 - "getrlimit", //83 - "getrusage", //84 - "getsid", //85 - "gettid", //86 - "gettimeofday", //87 - "getuid", //88 - "getuid32", //89 - - - "getxattr", //90 - "gtty", //91 - "idle", //92 - "init_module", //93 - "io_cancel", //94 - "io_destroy", //95 - "io_getevents", //96 - "io_setup", //97 - "io_submit", //98 - "ioctl", //99 - - - "ioperm", //100 - "iopl", //101 - "ipc", //102 - "kill", //103 - "lchown", //104 - "lchown32", //105 - "lgetxattr", //106 - "link", //107 - "listxattr", //108 - "llistxattr", //109 - - - "lock", //110 - "lookup_dcookie", //111 - "lremovexattr", //112 - "lseek", //113 - "lsetxattr", //114 - "lstat", //115 - "lstat64", //116 - "madvise", //117 - "madvise1", //118 - "mincore", //119 - - - "mkdir", //120 - "mknod", //121 - "mlock", //122 - "mlockall", //123 - "mmap", //124 - "mmap2", //125 - "modify_ldt", //126 - "mount", //127 - "mprotect", //128 - "mpx", //129 - - - "mremap", //130 - "msync", //131 - "munlock", //132 - "munlockall", //133 - "munmap", //134 - "nanosleep", //135 - "nfsservctl", //136 - "nice", //137 - "oldfstat", //138 - "oldlstat", //139 - - - "oldolduname", //140 - "oldstat", //141 - "olduname", //142 - "open", //143 - "pause", //144 - "personality", //145 - "pipe", //146 - "pivot_root", //147 - "poll", //148 - "prctl", //149 - - - "pread64", //150 - "prof", //151 - "profil", //152 - "ptrace", //153 - "putpmsg", //154 - "pwrite64", //155 - "query_module", //156 - "quotactl", //157 - "read", //158 - "readahead", //159 - - - "readdir", //160 - "readlink", //161 - "readv", //162 - "reboot", //163 - "remap_file_pages", //164 - "removexattr", //165 - "rename", //166 - "restart_syscall", //167 - "rmdir", //168 - "rt_sigaction", //169 - - - "rt_sigpending", //170 - "rt_sigprocmask", //171 - "rt_sigqueueinfo", //172 - "rt_sigreturn", //173 - "rt_sigsuspend", //174 - "rt_sigtimedwait", //175 - "sched_get_priority_max", //176 - "sched_get_priority_min", //177 - "sched_getaffinity", //178 - "sched_getparam", //179 - - - "sched_getscheduler", //180 - "sched_rr_get_interval", //181 - "sched_setaffinity", //182 - "sched_setparam", //183 - "sched_setscheduler", //184 - "sched_yield", //185 - "select", //186 - "sendfile", //187 - "sendfile64", //188 - "set_thread_area", //189 - - - "set_tid_address", //190 - "setdomainname", //191 - "setfsgid", //192 - "setfsgid32", //193 - "setfsuid", //194 - "setfsuid32", //195 - "setgid", //196 - "setgid32", //197 - "setgroups", //198 - "setgroups32", //199 - - - "sethostname", //200 - "setitimer", //201 - "setpgid", //202 - "setpriority", //203 - "setregid", //204 - "setregid32", //205 - "setresgid", //206 - "setresgid32", //207 - "setresuid", //208 - "setresuid32", //209 - - - "setreuid", //210 - "setreuid32", //211 - "setrlimit", //212 - "setsid", //213 - "settimeofday", //214 - "setuid", //215 - "setuid32", //216 - "setxattr", //217 - "sgetmask", //218 - "sigaction", //219 - - - "sigaltstack", //220 - "signal", //221 - "sigpending", //222 - "sigprocmask", //223 - "sigreturn", //224 - "sigsuspend", //225 - "socketcall", //226 - "ssetmask", //227 - "stat", //228 - "stat64", //229 - - - "statfs", //230 - "statfs64", //231 - "stime", //232 - "stty", //233 - "swapoff", //234 - "swapon", //235 - "symlink", //236 - "sync", //237 - "sysfs", //238 - "sysinfo", //239 - - - "syslog", //240 - "tgkill", //241 - "time", //242 - "timer_create", //243 - "timer_delete", //244 - "timer_getoverrun", //245 - "timer_gettime", //246 - "timer_settime", //247 - "times", //248 - "tkill", //249 - - - "truncate", //250 - "truncate64", //251 - "ugetrlimit", //252 - "ulimit", //253 - "umask", //254 - "umount", //255 - "umount2", //256 - "uname", //257 - "unlink", //258 - "uselib", //259 - - - "ustat", //260 - "utime", //261 - "utimes", //262 - "vfork", //263 - "vhangup", //264 - "vm86", //265 - "vm86old", //266 - "vserver", //267 - "wait4", //268 - "waitpid", //269 - - - "write", //270 - "writev", //271 + "llseek", //0 + "newselect", //1 + "sysctl", //2 + "access", //3 + "acct", //4 + "adjtimex", //5 + "afs_syscall", //6 + "alarm", //7 + "bdflush", //8 + "break", //9 + + + "brk", //10 + "capget", //11 + "capset", //12 + "chdir", //13 + "chmod", //14 + "chown", //15 + "chown32", //16 + "chroot", //17 + "clock_getres", //18 + "clock_gettime", //19 + + + "clock_nanosleep", //20 + "clock_settime", //21 + "clone", //22 + "close", //23 + "creat", //24 + "create_module", //25 + "delete_module", //26 + "dup", //27 + "dup2", //28 + "epoll_create", //29 + + + "epoll_ctl", //30 + "epoll_wait", //31 + "execve", //32 + "exit", //33 + "exit_group", //34 + "fadvise64", //35 + "fadvise64_64", //36 + "fchdir", //37 + "fchmod", //38 + "fchown", //39 + + + "fchown32", //40 + "fcntl", //41 + "fcntl64", //42 + "fdatasync", //43 + "fgetxattr", //44 + "flistxattr", //45 + "flock", //46 + "fork", //47 + "fremovexattr", //48 + "fsetxattr", //49 + + + "fstat", //50 + "fstat64", //51 + "fstatfs", //52 + "fstatfs64", //53 + "fsync", //54 + "ftime", //55 + "ftruncate", //56 + "ftruncate64", //57 + "futex", //58 + "get_kernel_syms", //59 + + + "get_thread_area", //60 + "getcwd", //61 + "getdents", //62 + "getdents64", //63 + "getegid", //64 + "getegid32", //65 + "geteuid", //66 + "geteuid32", //67 + "getgid", //68 + "getgid32", //69 + + + "getgroups", //70 + "getgroups32", //71 + "getitimer", //72 + "getpgid", //73 + "getpgrp", //74 + "getpid", //75 + "getpmsg", //76 + "getppid", //77 + "getpriority", //78 + "getresgid", //79 + + + "getresgid32", //80 + "getresuid", //81 + "getresuid32", //82 + "getrlimit", //83 + "getrusage", //84 + "getsid", //85 + "gettid", //86 + "gettimeofday", //87 + "getuid", //88 + "getuid32", //89 + + + "getxattr", //90 + "gtty", //91 + "idle", //92 + "init_module", //93 + "io_cancel", //94 + "io_destroy", //95 + "io_getevents", //96 + "io_setup", //97 + "io_submit", //98 + "ioctl", //99 + + + "ioperm", //100 + "iopl", //101 + "ipc", //102 + "kill", //103 + "lchown", //104 + "lchown32", //105 + "lgetxattr", //106 + "link", //107 + "listxattr", //108 + "llistxattr", //109 + + + "lock", //110 + "lookup_dcookie", //111 + "lremovexattr", //112 + "lseek", //113 + "lsetxattr", //114 + "lstat", //115 + "lstat64", //116 + "madvise", //117 + "madvise1", //118 + "mincore", //119 + + + "mkdir", //120 + "mknod", //121 + "mlock", //122 + "mlockall", //123 + "mmap", //124 + "mmap2", //125 + "modify_ldt", //126 + "mount", //127 + "mprotect", //128 + "mpx", //129 + + + "mremap", //130 + "msync", //131 + "munlock", //132 + "munlockall", //133 + "munmap", //134 + "nanosleep", //135 + "nfsservctl", //136 + "nice", //137 + "oldfstat", //138 + "oldlstat", //139 + + + "oldolduname", //140 + "oldstat", //141 + "olduname", //142 + "open", //143 + "pause", //144 + "personality", //145 + "pipe", //146 + "pivot_root", //147 + "poll", //148 + "prctl", //149 + + + "pread64", //150 + "prof", //151 + "profil", //152 + "ptrace", //153 + "putpmsg", //154 + "pwrite64", //155 + "query_module", //156 + "quotactl", //157 + "read", //158 + "readahead", //159 + + + "readdir", //160 + "readlink", //161 + "readv", //162 + "reboot", //163 + "remap_file_pages", //164 + "removexattr", //165 + "rename", //166 + "restart_syscall", //167 + "rmdir", //168 + "rt_sigaction", //169 + + + "rt_sigpending", //170 + "rt_sigprocmask", //171 + "rt_sigqueueinfo", //172 + "rt_sigreturn", //173 + "rt_sigsuspend", //174 + "rt_sigtimedwait", //175 + "sched_get_priority_max", //176 + "sched_get_priority_min", //177 + "sched_getaffinity", //178 + "sched_getparam", //179 + + + "sched_getscheduler", //180 + "sched_rr_get_interval", //181 + "sched_setaffinity", //182 + "sched_setparam", //183 + "sched_setscheduler", //184 + "sched_yield", //185 + "select", //186 + "sendfile", //187 + "sendfile64", //188 + "set_thread_area", //189 + + + "set_tid_address", //190 + "setdomainname", //191 + "setfsgid", //192 + "setfsgid32", //193 + "setfsuid", //194 + "setfsuid32", //195 + "setgid", //196 + "setgid32", //197 + "setgroups", //198 + "setgroups32", //199 + + + "sethostname", //200 + "setitimer", //201 + "setpgid", //202 + "setpriority", //203 + "setregid", //204 + "setregid32", //205 + "setresgid", //206 + "setresgid32", //207 + "setresuid", //208 + "setresuid32", //209 + + + "setreuid", //210 + "setreuid32", //211 + "setrlimit", //212 + "setsid", //213 + "settimeofday", //214 + "setuid", //215 + "setuid32", //216 + "setxattr", //217 + "sgetmask", //218 + "sigaction", //219 + + + "sigaltstack", //220 + "signal", //221 + "sigpending", //222 + "sigprocmask", //223 + "sigreturn", //224 + "sigsuspend", //225 + "socketcall", //226 + "ssetmask", //227 + "stat", //228 + "stat64", //229 + + + "statfs", //230 + "statfs64", //231 + "stime", //232 + "stty", //233 + "swapoff", //234 + "swapon", //235 + "symlink", //236 + "sync", //237 + "sysfs", //238 + "sysinfo", //239 + + + "syslog", //240 + "tgkill", //241 + "time", //242 + "timer_create", //243 + "timer_delete", //244 + "timer_getoverrun", //245 + "timer_gettime", //246 + "timer_settime", //247 + "times", //248 + "tkill", //249 + + + "truncate", //250 + "truncate64", //251 + "ugetrlimit", //252 + "ulimit", //253 + "umask", //254 + "umount", //255 + "umount2", //256 + "uname", //257 + "unlink", //258 + "uselib", //259 + + + "ustat", //260 + "utime", //261 + "utimes", //262 + "vfork", //263 + "vhangup", //264 + "vm86", //265 + "vm86old", //266 + "vserver", //267 + "wait4", //268 + "waitpid", //269 + + + "write", //270 + "writev", //271 }; diff --git a/kern/linux/linux_system.hh b/kern/linux/linux_system.hh index b9f301c60..83775cb92 100644 --- a/kern/linux/linux_system.hh +++ b/kern/linux/linux_system.hh @@ -61,21 +61,46 @@ class AlphaArguments; class LinuxSystem : public System { private: + /** Object pointer for the kernel code */ ElfObject *kernel; + + /** Object pointer for the console code */ ElfObject *console; + /** kernel Symbol table */ SymbolTable *kernelSymtab; + + /** console symbol table */ SymbolTable *consoleSymtab; + /** Event to halt the simulator if the kernel calls panic() */ BreakPCEvent *kernelPanicEvent; + + /** Event to halt the simulator if the console calls panic() */ BreakPCEvent *consolePanicEvent; + + /** Event to skip determine_cpu_caches() because we don't support the + * IPRs that the code can access to figure out cache sizes + */ SkipFuncEvent *skipCacheProbeEvent; + + /** PC based event to skip the ide_delay_50ms() call */ SkipFuncEvent *skipIdeDelay50msEvent; + + /** Skip calculate_delay_loop() rather than waiting for this to be + * calculated + */ LinuxSkipDelayLoopEvent *skipDelayLoopEvent; + /** Begining of kernel code */ Addr kernelStart; + + /** End of kernel code */ Addr kernelEnd; + + /** Entry point in the kernel to start at */ Addr kernelEntry; + bool bin; std::vector<string> binned_fns; @@ -101,9 +126,25 @@ class LinuxSystem : public System int registerExecContext(ExecContext *xc); void replaceExecContext(ExecContext *xc, int xcIndex); + /** + * Returns the addess the kernel starts at. + * @return address the kernel starts at + */ Addr getKernelStart() const { return kernelStart; } + + /** + * Returns the addess the kernel ends at. + * @return address the kernel ends at + */ Addr getKernelEnd() const { return kernelEnd; } + + /** + * Returns the addess the entry point to the kernel code. + * @return entry point of the kernel code + */ Addr getKernelEntry() const { return kernelEntry; } + + bool breakpoint(); }; |