From eea9e45879a0aca3ca44a614f3eb1059b1634241 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 1 Mar 2002 21:20:49 +0000 Subject: Patch from Miles Bader to allow Large File support on the v850. --- libc/sysdeps/linux/v850/Makefile | 6 +++--- libc/sysdeps/linux/v850/ftruncate64.c | 33 +++++++++++++++++++++++++++++++++ libc/sysdeps/linux/v850/truncate64.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 libc/sysdeps/linux/v850/ftruncate64.c create mode 100644 libc/sysdeps/linux/v850/truncate64.c (limited to 'libc/sysdeps') diff --git a/libc/sysdeps/linux/v850/Makefile b/libc/sysdeps/linux/v850/Makefile index 5d367ad39..ff95337e0 100644 --- a/libc/sysdeps/linux/v850/Makefile +++ b/libc/sysdeps/linux/v850/Makefile @@ -1,7 +1,7 @@ # Makefile for uClibc # -# Copyright (C) 2001 NEC Corporation -# Copyright (C) 2001 Miles Bader +# Copyright (C) 2001,2002 NEC Corporation +# Copyright (C) 2001,2002 Miles Bader # Copyright (C) 2000 Lineo, inc. # # This program is free software; you can redistribute it and/or modify it under @@ -36,7 +36,7 @@ CRT0_OBJ = $(patsubst %.S,%.o, $(CRT0)) SSRC = setjmp.S longjmp.S vfork.S SOBJS = $(patsubst %.S,%.o, $(SSRC)) -CSRC = _mmap.c +CSRC = _mmap.c truncate64.c ftruncate64.c COBJS = $(patsubst %.c,%.o, $(CSRC)) OBJS = $(SOBJS) $(COBJS) diff --git a/libc/sysdeps/linux/v850/ftruncate64.c b/libc/sysdeps/linux/v850/ftruncate64.c new file mode 100644 index 000000000..929332751 --- /dev/null +++ b/libc/sysdeps/linux/v850/ftruncate64.c @@ -0,0 +1,33 @@ +/* + * libc/sysdeps/linux/v850/ftruncate64.c -- `ftruncate64' syscall for linux/v850 + * + * Copyright (C) 2002 NEC Corporation + * Copyright (C) 2002 Miles Bader + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License. See the file COPYING.LIB in the main + * directory of this archive for more details. + * + * Written by Miles Bader + */ + +#include +#include +#include +#include + +#ifdef __UCLIBC_HAVE_LFS__ + +/* A version of ftruncate64 that passes in the 64-bit length argument as two + 32-bit arguments, as required by system call interface on the v850. */ +#define __NR__ftruncate64 __NR_ftruncate64 +extern inline _syscall3 (int, _ftruncate64, + int, fd, unsigned long, len_lo, long, len_hi); + +/* The exported ftruncate64. */ +int ftruncate64 (int fd, __off64_t length) +{ + return _ftruncate64 (fd, (unsigned long)length, (long)(length >> 32)); +} + +#endif /* __UCLIBC_HAVE_LFS__ */ diff --git a/libc/sysdeps/linux/v850/truncate64.c b/libc/sysdeps/linux/v850/truncate64.c new file mode 100644 index 000000000..fd8a8a0ba --- /dev/null +++ b/libc/sysdeps/linux/v850/truncate64.c @@ -0,0 +1,34 @@ +/* + * libc/sysdeps/linux/v850/truncate64.c -- `truncate64' syscall for linux/v850 + * + * Copyright (C) 2002 NEC Corporation + * Copyright (C) 2002 Miles Bader + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License. See the file COPYING.LIB in the main + * directory of this archive for more details. + * + * Written by Miles Bader + */ + +#include +#include +#include +#include + +#ifdef __UCLIBC_HAVE_LFS__ + +/* A version of truncate64 that passes in the 64-bit length argument as two + 32-bit arguments, as required by system call interface on the v850. */ +#define __NR__truncate64 __NR_truncate64 +extern inline _syscall3 (int, _truncate64, + const char *, file, + unsigned long, len_lo, long, len_hi); + +/* The exported truncate64. */ +int truncate64 (const char *file, __off64_t length) +{ + return _truncate64 (file, (unsigned long)length, (long)(length >> 32)); +} + +#endif /* __UCLIBC_HAVE_LFS__ */ -- cgit v1.2.3