00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef SYSTEMTRAPHANDLER_H
00016 #define SYSTEMTRAPHANDLER_H
00017
00018 template <int N, class T>
00019 bool Perform_Str_x(T func, simRegister *, simRegister &nextPC);
00020
00021 template <int N, class T>
00022 bool Perform_x(T func, simRegister *, simRegister &nextPC);
00023
00024 bool Perform_SYS_mach_msg_trap(processor*, simRegister *);
00025 void do_host_info(processor*, simRegister *);
00026 void do_clock_get_time(processor*, simRegister *);
00027 bool Perform_SYS_mach(processor*, simRegister *);
00028
00029 ppcThread* createThreadWithStack(processor* proc, simRegister *regs);
00030
00031 bool Perform_SYS_blank(processor*, simRegister *);
00032 bool Perform_SYS_exit(processor*, simRegister *);
00033 bool Perform_SYS_getrusage(processor*, simRegister *, simRegister &);
00034 bool Perform_SYS_getrlimit(processor*, simRegister *, simRegister &);
00035 bool Perform_SYS_fork(processor*, simRegister *);
00036 bool Perform_SYS_vfork(processor*, simRegister *);
00037 bool Perform_SYS_read(processor*, simRegister *, simRegister &);
00038 bool Perform_SYS_open(processor*, simRegister *);
00039 bool Perform_SYS_write(processor*, simRegister *, simRegister &);
00040 bool Perform_SYS_writev(processor*, simRegister *, simRegister &);
00041 bool Perform_SYS_close(processor*, simRegister *);
00042 bool Perform_SYS_creat(processor*, simRegister *);
00043 bool Perform_SYS_unlink(processor*, simRegister *);
00044 bool Perform_SYS_chdir(processor*, simRegister *);
00045 bool Perform_SYS_chmod(processor*, simRegister *);
00046 bool Perform_SYS_chown(processor*, simRegister *);
00047 bool Perform_SYS_brk(processor*, simRegister *);
00048 bool Perform_SYS_lseek(processor*, simRegister *, simRegister &);
00049 bool Perform_SYS_getuid(processor*, simRegister *);
00050 bool Perform_SYS_access(processor*, simRegister *);
00051 bool Perform_SYS_stat(processor*, simRegister *, simRegister &);
00052 bool Perform_SYS_lstat(processor*, simRegister *, simRegister &);
00053 bool Perform_SYS_kill(processor*, simRegister *, simRegister &);
00054 bool Perform_SYS_dup(processor*, simRegister *);
00055 bool Perform_SYS_pipe(processor*, simRegister *);
00056 bool Perform_SYS_getgid(processor*, simRegister *);
00057 bool Perform_SYS_ioctl(processor*, simRegister *);
00058 bool Perform_SYS_fstat(processor*, simRegister *, simRegister &nextPC);
00059 bool Perform_SYS_getpagesize(processor*, simRegister *);
00060 bool Perform_SYS_fsync(processor*, simRegister *);
00061 bool Perform_SYS_dup2(processor*, simRegister *);
00062 bool Perform_SYS_fcntl(processor*, simRegister *);
00063 bool Perform_SYS_select(processor*, simRegister *);
00064 bool Perform_SYS_gettimeofday(processor*, simRegister*,simRegister &nextPC);
00065 bool Perform_SYS___sysctl(processor*, simRegister*,simRegister &nextPC);
00066 bool Perform_SYS_issetugid(processor* proc, simRegister *regs, simRegister &nextPC);
00067
00068 bool Perform_PIM_FORK(processor*, simRegister *);
00069 bool Perform_PIM_EXIT(processor*, simRegister *);
00070 bool Perform_PIM_EXIT_FREE(processor*, simRegister *);
00071 bool Perform_PIM_LOCK(processor*, simRegister *);
00072 bool Perform_PIM_UNLOCK(processor*, simRegister *);
00073 bool Perform_PIM_IS_LOCAL(processor*, simRegister *);
00074 bool Perform_PIM_ALLOCATE_LOCAL(processor*, simRegister *);
00075 bool Perform_PIM_MOVE_TO(processor*, simRegister *);
00076 bool Perform_PIM_MOVE_AWAY(processor*, simRegister *);
00077 bool Perform_PIM_QUICK_PRINT(processor*, simRegister *);
00078 bool Perform_PIM_TRACE(processor*, simRegister *);
00079 bool Perform_PIM_FFILE_RD(processor*, simRegister *);
00080 bool Perform_PIM_RAND(processor*, simRegister *);
00081 bool Perform_PIM_MALLOC(processor*, simRegister *);
00082 bool Perform_PIM_FREE(processor*, simRegister *);
00083 bool Perform_PIM_WRITE_MEM(processor*, simRegister *);
00084 bool Perform_PIM_RESET(processor* thread, simRegister *);
00085 bool Perform_PIM_NUMBER(processor* thread, simRegister *);
00086 bool Perform_PIM_REMAP(processor* thread, simRegister *);
00087 bool Perform_PIM_REMAP_TO_ADDR(processor* thread, simRegister *);
00088 bool Perform_PIM_ATOMIC_INCREMENT(processor* thread, simRegister *);
00089 bool Perform_PIM_ATOMIC_DECREMENT(processor* thread, simRegister *);
00090 bool Perform_PIM_EST_STATE_SIZE(processor* thread, simRegister *);
00091 bool Perform_PIM_READFX(processor* thread, simRegister *);
00092 bool Perform_PIM_WRITEEF(processor* thread, simRegister *);
00093 bool Perform_PIM_CHANGE_FE(processor* thread, simRegister *);
00094 bool Perform_PIM_BULK_set_FE(processor* thread, simRegister *, simRegister);
00095 bool Perform_PIM_IS_FE_FULL(processor* thread, simRegister *);
00096 bool Perform_PIM_IS_PRIVATE(processor* thread, simRegister *);
00097 bool Perform_PIM_TID(processor* thread, simRegister *);
00098 bool Perform_PIM_REMAP_TO_POLY(processor* thread, simRegister *);
00099 bool Perform_PIM_TAG_INSTRUCTIONS(processor* thread, simRegister *);
00100 bool Perform_PIM_TAG_SWITCH(processor* thread, simRegister *);
00101 bool Perform_PIM_SPAWN_TO_COPROC(processor*, simRegister *);
00102 bool Perform_PIM_SPAWN_TO_LOCALE_STACK(processor*, simRegister *);
00103 bool Perform_PIM_SPAWN_TO_LOCALE_STACK_STOPPED(processor*, simRegister *);
00104 bool Perform_PIM_START_STOPPED_THREAD(processor*, simRegister *);
00105 bool Perform_PIM_SWITCH_ADDR_MODE(processor*, simRegister *);
00106 bool Perform_PIM_WRITE_SPECIAL(processor*, simRegister *, const int);
00107 bool Perform_PIM_READ_SPECIAL(processor*, simRegister *, const int,
00108 const int);
00109 bool Perform_PIM_TRYEF(processor*, simRegister *);
00110
00111 bool Perform_PIM_MEM_REGION_CREATE(processor* thread, simRegister *);
00112 bool Perform_PIM_MEM_REGION_GET(processor* thread, simRegister *);
00113
00114 bool Perform_Unimplemented(processor*, simRegister *);
00115
00116 bool Perform_NETSIM_pickup(processor*, simRegister *, simRegister &);
00117 bool Perform_NETSIM_SYS_CALL(processor*, simRegister *, simRegister &);
00118 bool Perform_NETSIM_TX_CALL(processor*, simRegister *, simRegister &);
00119
00120 bool Perform_PIM_AMO(processor *, simRegister*);
00121
00122 #endif