This code knows nothing about EABI (it uses OABI syscall,
swi <syscall number>, but EABI uses r7 for syscall number and swi 0x0
for syscall calling).
In case of EABI-enabled system when we use OABI-compat syscall we
have __NR_restart_syscall is 0, and r7 from the userspace. vector_swi
code sees the EABI syscall and tries to use r7 as a syscall number, so
we are trapping to bad_syscall() which generates SIGILL.
I'm attaching a fix for EABI+OABI-comat system. For EABI only system
it should be improved to store and recover userspace's R7 and pass
r7=__NR_restart_syscall to swi 0.
This message was posted to the following mailing lists: