mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
XPSemu (PPSA97358) stops next at sigsetjmp (aRo9AhFUXcM) from libkernel, per the body of #3323 "feat(libkernel): implement cpuset_setaffinity for the calling thread or process": "XPSemu: with this PR, the next stop is `sigsetjmp` (`aRo9AhFUXcM`)". RetroArch and PS5MC list it under libkernel in the absent-import tables of #1578; aerolib names aRo9AhFUXcM sigsetjmp. sigsetjmp is FreeBSD's amd64 sigsetjmp (lib/libc/amd64/gen/sigsetjmp.S, release/11.4.0 8c639945), the counterpart of the merged siglongjmp (#2935) and its sigjmp_buf layout (sys/x86/include/setjmp.h, _JBLEN 12): it stores savemask at offset 88 and, when it is nonzero, saves the current mask at 72 through _sigprocmask(SIG_BLOCK, NULL, oset); then it records the return address, rbx, rsp, rbp, r12-r15 and the x87 control word, and returns 0. guest_signal_sets now jumps through the export instead of its copy of FreeBSD's sigsetjmp, and checks that savemask 0 leaves the mask slot untouched, a nonzero savemask records the current mask and its own value, and the callee-saved registers come back after siglongjmp. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 8a609a5a1f189dce107a871e7da0fd55c746921f)