kernel: add ps5 sysvec

stub sys_begin_app_mount & sys_end_app_mount
This commit is contained in:
DH 2024-11-21 02:48:43 +03:00
parent 0741f8a0dc
commit 20f8ff7881
3 changed files with 756 additions and 7 deletions

View file

@ -1683,10 +1683,12 @@ orbis::SysResult orbis::sys_get_phys_page_size(Thread *thread /* TODO */) {
return ErrorCode::NOSYS;
}
orbis::SysResult orbis::sys_begin_app_mount(Thread *thread /* TODO */) {
return ErrorCode::NOSYS;
ORBIS_LOG_FATAL(__FUNCTION__);
return {};
}
orbis::SysResult orbis::sys_end_app_mount(Thread *thread /* TODO */) {
return ErrorCode::NOSYS;
ORBIS_LOG_FATAL(__FUNCTION__);
return {};
}
orbis::SysResult orbis::sys_fsc2h_ctrl(Thread *thread /* TODO */) {
return ErrorCode::NOSYS;

View file

@ -1,8 +1,8 @@
#include "sys/syscall.hpp"
#include "sys/sysentry.hpp"
#include "sys/sysproto.hpp"
#include "thread/Thread.hpp"
#include "thread/Process.hpp"
#include "thread/Thread.hpp"
#include <algorithm>
#include <unordered_map>
@ -34,7 +34,15 @@ void orbis::syscall_entry(Thread *thread) {
auto p = thread->tproc;
if (syscall_num >= p->sysent->size) {
if (thread->tproc->onSysEnter != nullptr) {
thread->tproc->onSysEnter(thread, syscall_num, nullptr, 0);
}
error = int(ErrorCode::NOSYS);
if (thread->tproc->onSysExit != nullptr) {
thread->tproc->onSysExit(thread, syscall_num, nullptr, 0,
ErrorCode::NOSYS);
}
} else {
auto sysent = p->sysent->table[syscall_num];
uint64_t args[8];
@ -2489,6 +2497,732 @@ static constexpr sysent ps4_sysent[] = {
wrap<sys_cpumode_yield>(),
};
static constexpr sysent ps5_sysent[] = {
wrap<nosys>(),
wrap<sys_exit>(),
wrap<sys_fork>(),
wrap<sys_read>(),
wrap<sys_write>(),
wrap<sys_open>(),
wrap<sys_close>(),
wrap<sys_wait4>(),
wrap<nosys>(),
wrap<sys_link>(),
wrap<sys_unlink>(),
wrap<nosys>(),
wrap<sys_chdir>(),
wrap<sys_fchdir>(),
wrap<sys_mknod>(),
wrap<sys_chmod>(),
wrap<sys_chown>(),
wrap<sys_obreak>(),
wrap<sys_getfsstat>(),
wrap<nosys>(),
wrap<sys_getpid>(),
wrap<sys_mount>(),
wrap<sys_unmount>(),
wrap<sys_setuid>(),
wrap<sys_getuid>(),
wrap<sys_geteuid>(),
wrap<sys_ptrace>(),
wrap<sys_recvmsg>(),
wrap<sys_sendmsg>(),
wrap<sys_recvfrom>(),
wrap<sys_accept>(),
wrap<sys_getpeername>(),
wrap<sys_getsockname>(),
wrap<sys_access>(),
wrap<sys_chflags>(),
wrap<sys_fchflags>(),
wrap<sys_sync>(),
wrap<sys_kill>(),
wrap<nosys>(),
wrap<sys_getppid>(),
wrap<nosys>(),
wrap<sys_dup>(),
wrap<sys_pipe>(),
wrap<sys_getegid>(),
wrap<sys_profil>(),
wrap<sys_ktrace>(),
wrap<nosys>(),
wrap<sys_getgid>(),
wrap<nosys>(),
wrap<sys_getlogin>(),
wrap<sys_setlogin>(),
wrap<sys_acct>(),
wrap<nosys>(),
wrap<sys_sigaltstack>(),
wrap<sys_ioctl>(),
wrap<sys_reboot>(),
wrap<sys_revoke>(),
wrap<sys_symlink>(),
wrap<sys_readlink>(),
wrap<sys_execve>(),
wrap<sys_umask>(),
wrap<sys_chroot>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_msync>(),
wrap<sys_vfork>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_sbrk>(),
wrap<sys_sstk>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_munmap>(),
wrap<sys_mprotect>(),
wrap<sys_madvise>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_mincore>(),
wrap<sys_getgroups>(),
wrap<sys_setgroups>(),
wrap<sys_getpgrp>(),
wrap<sys_setpgid>(),
wrap<sys_setitimer>(),
wrap<nosys>(),
wrap<sys_swapon>(),
wrap<sys_getitimer>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_getdtablesize>(),
wrap<sys_dup2>(),
wrap<nosys>(),
wrap<sys_fcntl>(),
wrap<sys_select>(),
wrap<nosys>(),
wrap<sys_fsync>(),
wrap<sys_setpriority>(),
wrap<sys_socket>(),
wrap<sys_connect>(),
wrap<sys_netcontrol>(),
wrap<sys_getpriority>(),
wrap<sys_netabort>(),
wrap<sys_netgetsockinfo>(),
wrap<nosys>(),
wrap<sys_bind>(),
wrap<sys_setsockopt>(),
wrap<sys_listen>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_socketex>(),
wrap<sys_socketclose>(),
wrap<nosys>(),
wrap<sys_gettimeofday>(),
wrap<sys_getrusage>(),
wrap<sys_getsockopt>(),
wrap<nosys>(),
wrap<sys_readv>(),
wrap<sys_writev>(),
wrap<sys_settimeofday>(),
wrap<sys_fchown>(),
wrap<sys_fchmod>(),
wrap<sys_netgetiflist>(),
wrap<sys_setreuid>(),
wrap<sys_setregid>(),
wrap<sys_rename>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_flock>(),
wrap<sys_mkfifo>(),
wrap<sys_sendto>(),
wrap<sys_shutdown>(),
wrap<sys_socketpair>(),
wrap<sys_mkdir>(),
wrap<sys_rmdir>(),
wrap<sys_utimes>(),
wrap<nosys>(),
wrap<sys_adjtime>(),
wrap<sys_kqueueex>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_setsid>(),
wrap<sys_quotactl>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_nlm_syscall>(),
wrap<sys_nfssvc>(),
wrap<nosys>(),
wrap<sys_statfs>(),
wrap<sys_fstatfs>(),
wrap<nosys>(),
wrap<sys_lgetfh>(),
wrap<sys_getfh>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_sysarch>(),
wrap<sys_rtprio>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_semsys>(),
wrap<sys_msgsys>(),
wrap<sys_shmsys>(),
wrap<nosys>(),
wrap<sys_freebsd6_pread>(),
wrap<sys_freebsd6_pwrite>(),
wrap<sys_setfib>(),
wrap<sys_ntp_adjtime>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_setgid>(),
wrap<sys_setegid>(),
wrap<sys_seteuid>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_stat>(),
wrap<sys_fstat>(),
wrap<sys_lstat>(),
wrap<sys_pathconf>(),
wrap<sys_fpathconf>(),
wrap<nosys>(),
wrap<sys_getrlimit>(),
wrap<sys_setrlimit>(),
wrap<sys_getdirentries>(),
wrap<sys_freebsd6_mmap>(),
wrap<nosys>(),
wrap<sys_freebsd6_lseek>(),
wrap<sys_freebsd6_truncate>(),
wrap<sys_freebsd6_ftruncate>(),
wrap<sys___sysctl>(),
wrap<sys_mlock>(),
wrap<sys_munlock>(),
wrap<sys_undelete>(),
wrap<sys_futimes>(),
wrap<sys_getpgid>(),
wrap<nosys>(),
wrap<sys_poll>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys___semctl>(),
wrap<sys_semget>(),
wrap<sys_semop>(),
wrap<nosys>(),
wrap<sys_msgctl>(),
wrap<sys_msgget>(),
wrap<sys_msgsnd>(),
wrap<sys_msgrcv>(),
wrap<sys_shmat>(),
wrap<sys_shmctl>(),
wrap<sys_shmdt>(),
wrap<sys_shmget>(),
wrap<sys_clock_gettime>(),
wrap<sys_clock_settime>(),
wrap<sys_clock_getres>(),
wrap<sys_ktimer_create>(),
wrap<sys_ktimer_delete>(),
wrap<sys_ktimer_settime>(),
wrap<sys_ktimer_gettime>(),
wrap<sys_ktimer_getoverrun>(),
wrap<sys_nanosleep>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_ntp_gettime>(),
wrap<nosys>(),
wrap<sys_minherit>(),
wrap<sys_rfork>(),
wrap<sys_openbsd_poll>(),
wrap<sys_issetugid>(),
wrap<sys_lchown>(),
wrap<sys_aio_read>(),
wrap<sys_aio_write>(),
wrap<sys_lio_listio>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_getdents>(),
wrap<nosys>(),
wrap<sys_lchmod>(),
wrap<sys_lchown>(),
wrap<sys_lutimes>(),
wrap<sys_msync>(),
wrap<sys_nstat>(),
wrap<sys_nfstat>(),
wrap<sys_nlstat>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_preadv>(),
wrap<sys_pwritev>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_fhstatfs>(),
wrap<sys_fhopen>(),
wrap<sys_fhstat>(),
wrap<sys_modnext>(),
wrap<sys_modstat>(),
wrap<sys_modfnext>(),
wrap<sys_modfind>(),
wrap<sys_kldload>(),
wrap<sys_kldunload>(),
wrap<sys_kldfind>(),
wrap<sys_kldnext>(),
wrap<sys_kldstat>(),
wrap<sys_kldfirstmod>(),
wrap<sys_getsid>(),
wrap<sys_setresuid>(),
wrap<sys_setresgid>(),
wrap<nosys>(),
wrap<sys_aio_return>(),
wrap<sys_aio_suspend>(),
wrap<sys_aio_cancel>(),
wrap<sys_aio_error>(),
wrap<sys_oaio_read>(),
wrap<sys_oaio_write>(),
wrap<sys_olio_listio>(),
wrap<sys_yield>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_mlockall>(),
wrap<sys_munlockall>(),
wrap<sys___getcwd>(),
wrap<sys_sched_setparam>(),
wrap<sys_sched_getparam>(),
wrap<sys_sched_setscheduler>(),
wrap<sys_sched_getscheduler>(),
wrap<sys_sched_yield>(),
wrap<sys_sched_get_priority_max>(),
wrap<sys_sched_get_priority_min>(),
wrap<sys_sched_rr_get_interval>(),
wrap<sys_utrace>(),
wrap<sys_sendfile>(),
wrap<sys_kldsym>(),
wrap<sys_jail>(),
wrap<sys_nnpfs_syscall>(),
wrap<sys_sigprocmask>(),
wrap<sys_sigsuspend>(),
wrap<sys_sigaction>(),
wrap<sys_sigpending>(),
wrap<sys_sigreturn>(),
wrap<sys_sigtimedwait>(),
wrap<sys_sigwaitinfo>(),
wrap<sys___acl_get_file>(),
wrap<sys___acl_set_file>(),
wrap<sys___acl_get_fd>(),
wrap<sys___acl_set_fd>(),
wrap<sys___acl_delete_file>(),
wrap<sys___acl_delete_fd>(),
wrap<sys___acl_aclcheck_file>(),
wrap<sys___acl_aclcheck_fd>(),
wrap<sys_extattrctl>(),
wrap<sys_extattr_set_file>(),
wrap<sys_extattr_get_file>(),
wrap<sys_extattr_delete_file>(),
wrap<sys_aio_waitcomplete>(),
wrap<sys_getresuid>(),
wrap<sys_getresgid>(),
wrap<sys_kqueue>(),
wrap<sys_kevent>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_extattr_set_fd>(),
wrap<sys_extattr_get_fd>(),
wrap<sys_extattr_delete_fd>(),
wrap<sys___setugid>(),
wrap<nosys>(),
wrap<sys_eaccess>(),
wrap<sys_afs3_syscall>(),
wrap<sys_nmount>(),
wrap<sys_mtypeprotect>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys___mac_get_proc>(),
wrap<sys___mac_set_proc>(),
wrap<sys___mac_get_fd>(),
wrap<sys___mac_get_file>(),
wrap<sys___mac_set_fd>(),
wrap<sys___mac_set_file>(),
wrap<sys_kenv>(),
wrap<sys_lchflags>(),
wrap<sys_uuidgen>(),
wrap<sys_sendfile>(),
wrap<sys_mac_syscall>(),
wrap<sys_getfsstat>(),
wrap<sys_statfs>(),
wrap<sys_fstatfs>(),
wrap<sys_fhstatfs>(),
wrap<nosys>(),
wrap<sys_ksem_close>(),
wrap<sys_ksem_post>(),
wrap<sys_ksem_wait>(),
wrap<sys_ksem_trywait>(),
wrap<sys_ksem_init>(),
wrap<sys_ksem_open>(),
wrap<sys_ksem_unlink>(),
wrap<sys_ksem_getvalue>(),
wrap<sys_ksem_destroy>(),
wrap<sys___mac_get_pid>(),
wrap<sys___mac_get_link>(),
wrap<sys___mac_set_link>(),
wrap<sys_extattr_set_link>(),
wrap<sys_extattr_get_link>(),
wrap<sys_extattr_delete_link>(),
wrap<sys___mac_execve>(),
wrap<sys_sigaction>(),
wrap<sys_sigreturn>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_getcontext>(),
wrap<sys_setcontext>(),
wrap<sys_swapcontext>(),
wrap<sys_swapoff>(),
wrap<sys___acl_get_link>(),
wrap<sys___acl_set_link>(),
wrap<sys___acl_delete_link>(),
wrap<sys___acl_aclcheck_link>(),
wrap<sys_sigwait>(),
wrap<sys_thr_create>(),
wrap<sys_thr_exit>(),
wrap<sys_thr_self>(),
wrap<sys_thr_kill>(),
wrap<sys__umtx_lock>(),
wrap<sys__umtx_unlock>(),
wrap<sys_jail_attach>(),
wrap<sys_extattr_list_fd>(),
wrap<sys_extattr_list_file>(),
wrap<sys_extattr_list_link>(),
wrap<nosys>(),
wrap<sys_ksem_timedwait>(),
wrap<sys_thr_suspend>(),
wrap<sys_thr_wake>(),
wrap<sys_kldunloadf>(),
wrap<sys_audit>(),
wrap<sys_auditon>(),
wrap<sys_getauid>(),
wrap<sys_setauid>(),
wrap<sys_getaudit>(),
wrap<sys_setaudit>(),
wrap<sys_getaudit_addr>(),
wrap<sys_setaudit_addr>(),
wrap<sys_auditctl>(),
wrap<sys__umtx_op>(),
wrap<sys_thr_new>(),
wrap<sys_sigqueue>(),
wrap<sys_kmq_open>(),
wrap<sys_kmq_setattr>(),
wrap<sys_kmq_timedreceive>(),
wrap<sys_kmq_timedsend>(),
wrap<sys_kmq_notify>(),
wrap<sys_kmq_unlink>(),
wrap<sys_abort2>(),
wrap<sys_thr_set_name>(),
wrap<sys_aio_fsync>(),
wrap<sys_rtprio_thread>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_sctp_peeloff>(),
wrap<sys_sctp_generic_sendmsg>(),
wrap<sys_sctp_generic_sendmsg_iov>(),
wrap<sys_sctp_generic_recvmsg>(),
wrap<sys_pread>(),
wrap<sys_pwrite>(),
wrap<sys_mmap>(),
wrap<sys_lseek>(),
wrap<sys_truncate>(),
wrap<sys_ftruncate>(),
wrap<sys_thr_kill2>(),
wrap<sys_shm_open>(),
wrap<sys_shm_unlink>(),
wrap<sys_cpuset>(),
wrap<sys_cpuset_setid>(),
wrap<sys_cpuset_getid>(),
wrap<sys_cpuset_getaffinity>(),
wrap<sys_cpuset_setaffinity>(),
wrap<sys_faccessat>(),
wrap<sys_fchmodat>(),
wrap<sys_fchownat>(),
wrap<sys_fexecve>(),
wrap<sys_fstatat>(),
wrap<sys_futimesat>(),
wrap<sys_linkat>(),
wrap<sys_mkdirat>(),
wrap<sys_mkfifoat>(),
wrap<sys_mknodat>(),
wrap<sys_openat>(),
wrap<sys_readlinkat>(),
wrap<sys_renameat>(),
wrap<sys_symlinkat>(),
wrap<sys_unlinkat>(),
wrap<sys_posix_openpt>(),
wrap<sys_gssd_syscall>(),
wrap<sys_jail_get>(),
wrap<sys_jail_set>(),
wrap<sys_jail_remove>(),
wrap<sys_closefrom>(),
wrap<sys___semctl>(),
wrap<sys_msgctl>(),
wrap<sys_shmctl>(),
wrap<sys_lpathconf>(),
wrap<sys_cap_new>(),
wrap<sys_cap_getrights>(),
wrap<sys_cap_enter>(),
wrap<sys_cap_getmode>(),
wrap<sys_pdfork>(),
wrap<sys_pdkill>(),
wrap<sys_pdgetpid>(),
wrap<nosys>(),
wrap<sys_pselect>(),
wrap<sys_getloginclass>(),
wrap<sys_setloginclass>(),
wrap<sys_rctl_get_racct>(),
wrap<sys_rctl_get_rules>(),
wrap<sys_rctl_get_limits>(),
wrap<sys_rctl_add_rule>(),
wrap<sys_rctl_remove_rule>(),
wrap<sys_posix_fallocate>(),
wrap<sys_posix_fadvise>(),
wrap<sys_regmgr_call>(),
wrap<sys_jitshm_create>(),
wrap<sys_jitshm_alias>(),
wrap<sys_dl_get_list>(),
wrap<sys_dl_get_info>(),
wrap<sys_dl_notify_event>(),
wrap<sys_evf_create>(),
wrap<sys_evf_delete>(),
wrap<sys_evf_open>(),
wrap<sys_evf_close>(),
wrap<sys_evf_wait>(),
wrap<sys_evf_trywait>(),
wrap<sys_evf_set>(),
wrap<sys_evf_clear>(),
wrap<sys_evf_cancel>(),
wrap<sys_query_memory_protection>(),
wrap<sys_batch_map>(),
wrap<sys_osem_create>(),
wrap<sys_osem_delete>(),
wrap<sys_osem_open>(),
wrap<sys_osem_close>(),
wrap<sys_osem_wait>(),
wrap<sys_osem_trywait>(),
wrap<sys_osem_post>(),
wrap<sys_osem_cancel>(),
wrap<sys_namedobj_create>(),
wrap<sys_namedobj_delete>(),
wrap<sys_set_vm_container>(),
wrap<sys_debug_init>(),
wrap<sys_suspend_process>(),
wrap<sys_resume_process>(),
wrap<sys_opmc_enable>(),
wrap<sys_opmc_disable>(),
wrap<sys_opmc_set_ctl>(),
wrap<sys_opmc_set_ctr>(),
wrap<sys_opmc_get_ctr>(),
wrap<sys_budget_create>(),
wrap<sys_budget_delete>(),
wrap<sys_budget_get>(),
wrap<sys_budget_set>(),
wrap<sys_virtual_query>(),
wrap<sys_mdbg_call>(),
wrap<sys_obs_sblock_create>(),
wrap<sys_obs_sblock_delete>(),
wrap<sys_obs_sblock_enter>(),
wrap<sys_obs_sblock_exit>(),
wrap<sys_obs_sblock_xenter>(),
wrap<sys_obs_sblock_xexit>(),
wrap<sys_obs_eport_create>(),
wrap<sys_obs_eport_delete>(),
wrap<sys_obs_eport_trigger>(),
wrap<sys_obs_eport_open>(),
wrap<sys_obs_eport_close>(),
wrap<sys_is_in_sandbox>(),
wrap<sys_dmem_container>(),
wrap<sys_get_authinfo>(),
wrap<sys_mname>(),
wrap<sys_dynlib_dlopen>(),
wrap<sys_dynlib_dlclose>(),
wrap<sys_dynlib_dlsym>(),
wrap<sys_dynlib_get_list>(),
wrap<sys_dynlib_get_info>(),
wrap<sys_dynlib_load_prx>(),
wrap<sys_dynlib_unload_prx>(),
wrap<sys_dynlib_do_copy_relocations>(),
wrap<sys_dynlib_prepare_dlclose>(),
wrap<sys_dynlib_get_proc_param>(),
wrap<sys_dynlib_process_needed_and_relocate>(),
wrap<sys_sandbox_path>(),
wrap<sys_mdbg_service>(),
wrap<sys_randomized_path>(),
wrap<sys_rdup>(),
wrap<sys_dl_get_metadata>(),
wrap<sys_workaround8849>(),
wrap<sys_is_development_mode>(),
wrap<sys_get_self_auth_info>(),
wrap<sys_dynlib_get_info_ex>(),
wrap<sys_budget_getid>(),
wrap<sys_budget_get_ptype>(),
wrap<sys_get_paging_stats_of_all_threads>(),
wrap<sys_get_proc_type_info>(),
wrap<sys_get_resident_count>(),
wrap<sys_prepare_to_suspend_process>(),
wrap<sys_get_resident_fmem_count>(),
wrap<sys_thr_get_name>(),
wrap<sys_set_gpo>(),
wrap<sys_get_paging_stats_of_all_objects>(),
wrap<sys_test_debug_rwmem>(),
wrap<sys_free_stack>(),
wrap<sys_suspend_system>(),
wrap<sys_ipmimgr_call>(),
wrap<sys_get_gpo>(),
wrap<sys_get_vm_map_timestamp>(),
wrap<sys_opmc_set_hw>(),
wrap<sys_opmc_get_hw>(),
wrap<sys_get_cpu_usage_all>(),
wrap<sys_mmap_dmem>(),
wrap<sys_physhm_open>(),
wrap<sys_physhm_unlink>(),
wrap<sys_resume_internal_hdd>(),
wrap<sys_thr_suspend_ucontext>(),
wrap<sys_thr_resume_ucontext>(),
wrap<sys_thr_get_ucontext>(),
wrap<sys_thr_set_ucontext>(),
wrap<sys_set_timezone_info>(),
wrap<sys_set_phys_fmem_limit>(),
wrap<sys_utc_to_localtime>(),
wrap<sys_localtime_to_utc>(),
wrap<sys_set_uevt>(),
wrap<sys_get_cpu_usage_proc>(),
wrap<sys_get_map_statistics>(),
wrap<sys_set_chicken_switches>(),
wrap<sys_extend_page_table_pool>(),
wrap<sys_extend_page_table_pool2>(),
wrap<sys_get_kernel_mem_statistics>(),
wrap<sys_get_sdk_compiled_version>(),
wrap<sys_app_state_change>(),
wrap<sys_dynlib_get_obj_member>(),
wrap<sys_budget_get_ptype_of_budget>(),
wrap<sys_prepare_to_resume_process>(),
wrap<sys_process_terminate>(),
wrap<sys_blockpool_open>(),
wrap<sys_blockpool_map>(),
wrap<sys_blockpool_unmap>(),
wrap<sys_dynlib_get_info_for_libdbg>(),
wrap<sys_blockpool_batch>(),
wrap<sys_fdatasync>(),
wrap<sys_dynlib_get_list2>(),
wrap<sys_dynlib_get_info2>(),
wrap<sys_aio_submit>(),
wrap<sys_aio_multi_delete>(),
wrap<sys_aio_multi_wait>(),
wrap<sys_aio_multi_poll>(),
wrap<sys_aio_get_data>(),
wrap<sys_aio_multi_cancel>(),
wrap<sys_get_bio_usage_all>(),
wrap<sys_aio_create>(),
wrap<sys_aio_submit_cmd>(),
wrap<sys_aio_init>(),
wrap<sys_get_page_table_stats>(),
wrap<sys_dynlib_get_list_for_libdbg>(),
wrap<sys_blockpool_move>(),
wrap<sys_virtual_query_all>(),
wrap<sys_reserve_2mb_page>(),
wrap<sys_cpumode_yield>(),
wrap<sys_wait6>(),
wrap<sys_cap_rights_limit>(),
wrap<sys_cap_ioctls_limit>(),
wrap<sys_cap_ioctls_get>(),
wrap<sys_cap_fcntls_limit>(),
wrap<sys_cap_fcntls_get>(),
wrap<sys_bindat>(),
wrap<sys_connectat>(),
wrap<sys_chflagsat>(),
wrap<sys_accept4>(),
wrap<sys_pipe2>(),
wrap<sys_aio_mlock>(),
wrap<sys_procctl>(),
wrap<sys_ppoll>(),
wrap<sys_futimens>(),
wrap<sys_utimensat>(),
wrap<sys_numa_getaffinity>(),
wrap<sys_numa_setaffinity>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<nosys>(),
wrap<sys_apr_submit>(),
wrap<sys_apr_resolve>(),
wrap<sys_apr_stat>(),
wrap<sys_apr_wait>(),
wrap<sys_apr_ctrl>(),
wrap<sys_get_phys_page_size>(),
wrap<sys_begin_app_mount>(),
wrap<sys_end_app_mount>(),
wrap<sys_fsc2h_ctrl>(),
wrap<sys_streamwrite>(),
wrap<sys_app_save>(),
wrap<sys_app_restore>(),
wrap<sys_saved_app_delete>(),
wrap<sys_get_ppr_sdk_compiled_version>(),
wrap<sys_notify_app_event>(),
wrap<sys_ioreq>(),
wrap<sys_openintr>(),
wrap<sys_dl_get_info_2>(),
wrap<sys_acinfo_add>(),
wrap<sys_acinfo_delete>(),
wrap<sys_acinfo_get_all_for_coredump>(),
wrap<sys_ampr_ctrl_debug>(),
wrap<sys_workspace_ctrl>(),
};
constinit sysentvec freebsd9_sysvec = {.size = std::size(freebsd9_sysent),
.table = freebsd9_sysent};
@ -2498,5 +3232,6 @@ constinit sysentvec freebsd11_sysvec = {.size = std::size(freebsd11_sysent),
constinit sysentvec ps4_sysvec = {.size = std::size(ps4_sysent),
.table = ps4_sysent};
constinit sysentvec ps5_sysvec = {.size = 0, .table = nullptr};
constinit sysentvec ps5_sysvec = {.size = std::size(ps5_sysent),
.table = ps5_sysent};
} // namespace orbis

View file

@ -525,8 +525,16 @@ int guestExec(orbis::Thread *mainThread, ExecEnv execEnv,
if (executableModule->dynType == orbis::DynType::Ps4) {
mainThread->tproc->type = orbis::ProcessType::Ps4;
mainThread->tproc->sysent = &orbis::ps4_sysvec;
} else if (executableModule->dynType == orbis::DynType::Ps5) {
mainThread->tproc->type = orbis::ProcessType::Ps5;
mainThread->tproc->sysent = &orbis::ps5_sysvec;
} else {
if (orbis::g_context.fwType == orbis::FwType::Ps4) {
mainThread->tproc->sysent = &orbis::ps4_sysvec;
} else {
mainThread->tproc->sysent = &orbis::ps5_sysvec;
}
}
// clang-format off
@ -995,7 +1003,6 @@ int main(int argc, const char *argv[]) {
int status = 0;
initProcess->sysent = &orbis::ps4_sysvec;
initProcess->onSysEnter = onSysEnter;
initProcess->onSysExit = onSysExit;
initProcess->ops = &rx::procOpsTable;
@ -1097,11 +1104,16 @@ int main(int argc, const char *argv[]) {
return 1;
}
auto execEnv = guestCreateExecEnv(mainThread, executableModule, isSystem);
if (isSystem && executableModule->dynType == orbis::DynType::None) {
orbis::g_context.fwType = orbis::FwType::Ps5;
executableModule->dynType = orbis::DynType::Ps5;
}
guestInitDev();
guestInitFd(mainThread);
auto execEnv = guestCreateExecEnv(mainThread, executableModule, isSystem);
// data transfer mode
// 0 - normal
// 1 - source