Messages in this thread | | | Date | Mon, 09 Dec 2002 12:18:29 -0800 (PST) | Subject | Re: [PATCH] compatibility syscall layer (lets try again) | From | "David S. Miller" <> |
| |
From: "Martin Schwidefsky" <schwidefsky@de.ibm.com> Date: Mon, 9 Dec 2002 18:16:43 +0100
>Architecture maintainers, can you comment on how easy/hard it is to do the >same thing on your architectures? I _assume_ it's trivial (akin to the >three-liner register state change in i386/kernel/signal.c).
For s390/s390x this is actually quite tricky. The system call number is coded in the instruction, e.g. 0x0aa2 is svc 162 or sys_nanosleep. There is no register involved that contains the system call number I could simply change. I either have to change the instruction (no way) or I have to avoid going back to userspace in this case. This would require assembler magic in entry.S. Not nice.
Put the magic restart_block syscall at some fixed place in every user process, change the PC to that. Or, alternatively, put the restart_block syscall insn on the stack and point the PC at that.
This isn't rocket science :-)
- 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/
| |