system calls
How does PA-RISC trap to the OS during syscalls.
x86 uses trapgates and long-jumps, sparc uses traps and MIPs uses jumps.
I'm wondering what the set of instructions are to initiate a system call.
-inane
Quoted 5 lines · Admin
How does PA-RISC trap to the OS during syscalls.
x86 uses trapgates and long-jumps, sparc uses traps and MIPs uses jumps.
I'm wondering what the set of instructions are to initiate a system call.
we use a gateway page in a different space. Here's glibc's implementation of syscall:
int
syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
long __sys_res;
{
register unsigned long __res asm("r28");
LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5)
asm volatile ("ble 0x100(%%sr2, %%r0)\n\t"
"copy %1, %%r20"
: "=r" (__res)
: "r" (sysnum) ASM_ARGS_6);
__sys_res = __res;
}
if ((unsigned long) __sys_res >= (unsigned long)-4095)
{
__set_errno(-__sys_res);
__sys_res = -1; }
return __sys_res;
}
if you're interested in discussion of what/how/why/etc, there's lots of material in the mailing list archives going all the way back to 99.
Signature · 1 line
Revolutions do not require corporate support.