[alpha] emulate osf/1 sys_indirect

Richard Henderson (rth@redhat.com)
Wed, 21 Nov 2001 16:30:11 -0800


Noticed that Netscape wanted to use it.

r~

--- arch/alpha/kernel/entry.S.orig Wed Nov 21 15:59:16 2001
+++ arch/alpha/kernel/entry.S Wed Nov 21 16:22:09 2001
@@ -488,6 +488,26 @@ entUnaUser:
.end entUnaUser

/*
+ * No idea why OSF/1 didn't implement syscall(3) in userland.
+ * Implement this by shifting the registers around, backing up
+ * the pc to the callsys, and returning to usermode.
+ */
+.align 3
+.ent sys_indirect
+sys_indirect:
+ ldq $1, SP_OFF+8($30)
+ stq $16, 0($30)
+ stq $17, SP_OFF+24($30)
+ stq $18, SP_OFF+32($30)
+ stq $19, SP_OFF+40($30)
+ stq $20, 72($30)
+ stq $21, 80($30)
+ subq $1, 4, $1
+ stq $1, SP_OFF+8($30)
+ br restore_all
+.end sys_indirect
+
+/*
* A fork is the same as clone(SIGCHLD, 0);
*/
.align 3
@@ -765,7 +785,7 @@ sys_rt_sigsuspend:
.align 3
.globl sys_call_table
sys_call_table:
- .quad alpha_ni_syscall /* 0 */
+ .quad sys_indirect /* 0 */
.quad sys_exit
.quad sys_fork
.quad sys_read
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/