Hi,
On Mon, 19 Jul 1999, Philip Blundell wrote:
> >According to loglevel.c, it is calling `syscall( SYS_syslog, 8, NULL,
> >level )', but according to do_syslog, it is receiving
> >do_syslog(type=3D9437287 buf=3D=EF=A1 len=3D0 ) regardless of the value=
> > of
> >`level'. Every other program that calls do_syslog appears to work
>
> This is probably the same bug in syscall() that Kyle Mestery reported last
> week (or whenever it was). It is a kernel problem and the fix is pretty
> trivial; you should be able to find it in the archives for this mailing list.
>
Here is the code I am running (the patch Phil mentioned above) that
alleviated my problems with syscall():
SYMBOL_NAME(sys_syscall):
eor r6, r0, #OS_NUMBER << 20
cmp r6, #NR_syscalls @ check range
add sp, sp, #4 @ take of the save of our r4
ldmib sp, {r0 - r4} @ get our args
str r4, [sp, #-4]! @ Put our arg on the stack
ldrle pc, [r5, r6, lsl #2]
mov r0, #-ENOSYS
mov pc, lr
This has worked for me. Replace the beginning of sys_syscall() in
arch/arm/kernel/entry-common.S with what I have above, and it should
work.
--
Kyle Mestery | StorageTek's Storage Networking Group
[EMAIL PROTECTED] | http://www.freebsd.org/
[EMAIL PROTECTED] | http://www.netwinder.org/
Protect your right to privacy: www.freecrypto.org
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]