extsw r4,r4 /* sign extend off_t offset parm */
b .sys_lseek
-_GLOBAL(compat_sys_socketcall) /* r3=call, r4=args */
- cmpwi r3, 1
- blt- .do_einval
- cmpwi r3, 17
- bgt- .do_einval
- subi r3, r3, 1 /* index into socketcall_table vectors and jmp */
- sldi r3, r3, 3 /* each entry is 8 bytes */
- LOADADDR(r10,.socketcall_table_begin)
- ldx r10, r10, r3
- mtctr r10
- bctr
-
-/* Socket function vectored fix ups for 32 bit */
-_STATIC(do_sys_socket) /* sys_socket(int, int, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwa r4,4(r10)
-3: lwa r5,8(r10)
- b .sys_socket
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_bind) /* sys_bind(int fd, struct sockaddr *, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwa r5,8(r10)
- b .sys_bind
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_connect) /* sys_connect(int, struct sockaddr *, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwa r5,8(r10)
- b .sys_connect
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_listen) /* sys_listen(int, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwa r4,4(r10)
- b .sys_listen
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .previous
-
-_STATIC(do_sys_accept) /* sys_accept(int, struct sockaddr *, int *) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
- b .sys_accept
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_getsockname) /* sys_getsockname(int, struct sockaddr *, int *) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
- b .sys_getsockname
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_getpeername) /* sys_getpeername(int, struct sockaddr *, int *) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
- b .sys_getpeername
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_socketpair) /* sys_socketpair(int, int, int, int *) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwa r4,4(r10)
-3: lwa r5,8(r10)
-4: lwz r6,12(r10)
- b .sys_socketpair
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .previous
-
-_STATIC(do_sys_send) /* sys_send(int, void *, size_t, unsigned int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
-4: lwz r6,12(r10)
- b .sys_send
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .previous
-
-_STATIC(do_sys_recv) /* sys_recv(int, void *, size_t, unsigned int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
-4: lwz r6,12(r10)
- b .sys_recv
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .previous
-
-_STATIC(do_sys_sendto) /* sys32_sendto(int, u32, compat_size_t, unsigned int, u32, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
-4: lwz r6,12(r10)
-5: lwz r7,16(r10)
-6: lwz r8,20(r10)
- b .sys_sendto
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .llong 5b,.do_efault
- .llong 6b,.do_efault
- .previous
-
-_STATIC(do_sys_recvfrom) /* sys32_recvfrom(int, u32, compat_size_t, unsigned int, u32, u32) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwz r5,8(r10)
-4: lwz r6,12(r10)
-5: lwz r7,16(r10)
-6: lwz r8,20(r10)
- b .sys_recvfrom
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .llong 5b,.do_efault
- .llong 6b,.do_efault
- .previous
-
-_STATIC(do_sys_shutdown) /* sys_shutdown(int, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwa r4,4(r10)
- b .sys_shutdown
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .previous
-
-_STATIC(do_sys_setsockopt) /* compat_sys_setsockopt(int, int, int, char *, int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwa r4,4(r10)
-3: lwa r5,8(r10)
-4: lwz r6,12(r10)
-5: lwa r7,16(r10)
- b .compat_sys_setsockopt
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .llong 5b,.do_efault
- .previous
-
-_STATIC(do_sys_getsockopt) /* compat_sys_getsockopt(int, int, int, u32, u32) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwa r4,4(r10)
-3: lwa r5,8(r10)
-4: lwz r6,12(r10)
-5: lwz r7,16(r10)
- b .compat_sys_getsockopt
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .llong 4b,.do_efault
- .llong 5b,.do_efault
- .previous
-
-_STATIC(do_sys_sendmsg) /* compat_sys_sendmsg(int, struct compat_msghdr *, unsigned int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwa r5,8(r10)
- b .compat_sys_sendmsg
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_sys_recvmsg) /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) */
- mr r10,r4
-1: lwa r3,0(r10)
-2: lwz r4,4(r10)
-3: lwa r5,8(r10)
- b .compat_sys_recvmsg
- .section __ex_table,"a"
- .align 3
- .llong 1b,.do_efault
- .llong 2b,.do_efault
- .llong 3b,.do_efault
- .previous
-
-_STATIC(do_einval)
- li r3,-EINVAL
- blr
-
-_STATIC(do_efault)
- li r3,-EFAULT
- blr
-
- .balign 8
-_GLOBAL(socketcall_table_begin)
- .llong .do_sys_socket
- .llong .do_sys_bind
- .llong .do_sys_connect
- .llong .do_sys_listen
- .llong .do_sys_accept
- .llong .do_sys_getsockname
- .llong .do_sys_getpeername
- .llong .do_sys_socketpair
- .llong .do_sys_send
- .llong .do_sys_recv
- .llong .do_sys_sendto
- .llong .do_sys_recvfrom
- .llong .do_sys_shutdown
- .llong .do_sys_setsockopt
- .llong .do_sys_getsockopt
- .llong .do_sys_sendmsg
- .llong .do_sys_recvmsg
-_GLOBAL(socketcall_table_end)
return ret;
}
-extern asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg);
-asmlinkage long sys32_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)
-{
- switch (cmd) {
- case F_GETLK:
- case F_SETLK:
- case F_SETLKW:
- {
- struct flock f;
- mm_segment_t old_fs;
- long ret;
-
- if(get_compat_flock(&f, (struct compat_flock *)arg))
- return -EFAULT;
- old_fs = get_fs(); set_fs (KERNEL_DS);
- ret = sys_fcntl(fd, cmd, (unsigned long)&f);
- set_fs (old_fs);
- if(put_compat_flock(&f, (struct compat_flock *)arg))
- return -EFAULT;
- return ret;
- }
- default:
- return sys_fcntl(fd, cmd, (unsigned long)arg);
- }
-}
-
struct ncp_mount_data32_v3 {
int version;
unsigned int ncp_fd;
return sys_umount(name, (int)flags);
}
-asmlinkage long sys32_fcntl64(unsigned int fd, unsigned int cmd, unsigned long arg)
-{
- if (cmd >= F_GETLK64 && cmd <= F_SETLKW64)
- return sys_fcntl(fd, cmd + F_GETLK - F_GETLK64, arg);
- return sys32_fcntl(fd, cmd, arg);
-}
-
struct __sysctl_args32 {
u32 name;
int nlen;