]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
arm: Assembly implementation cleanup
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 6 Jul 2015 13:00:29 +0000 (13:00 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.com>
Wed, 5 Aug 2015 13:41:03 +0000 (10:41 -0300)
This patch removes arm assembly implementation of mmap and mmap64.
The new implementation used is the wordsize-32 generic linux one.

Tested on armhf.

ChangeLog
sysdeps/unix/sysv/linux/arm/mmap.S [deleted file]
sysdeps/unix/sysv/linux/arm/mmap.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/arm/mmap64.S [deleted file]

index a228926acc2b8dfc76a8ea1d5d1d21be20fde200..fd0fd74e399dcac52c827997893a337b9045f536 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-08-05  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+       * sysdeps/unix/sysv/linux/arm/mmap.c: Add file.
+       * sysdeps/unix/sysv/linux/arm/mmap.S: Remove file.
+       * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise.
+
 2015-08-05  Marko Myllynen  <myllynen@redhat.com>
 
        [BZ #18525]
diff --git a/sysdeps/unix/sysv/linux/arm/mmap.S b/sysdeps/unix/sysv/linux/arm/mmap.S
deleted file mode 100644 (file)
index 4fb5bf4..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-#define        EINVAL          22
-
-       .text
-
-ENTRY (__mmap)
-       /* shuffle args */
-       push    { r5 }
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r5, 0)
-       ldr     r5, [sp, #8]
-       push    { r4 }
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r4, 0)
-       cfi_remember_state
-       ldr     r4, [sp, #8]
-
-       /* convert offset to pages */
-       movs    ip, r5, lsl #20
-       bne     .Linval
-       mov     r5, r5, lsr #12
-
-       /* do the syscall */
-       DO_CALL (mmap2, 0)
-
-       /* restore registers */
-2:
-       pop     { r4 }
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r4)
-       pop     { r5 }
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r5)
-
-       cmn     r0, $4096
-       it      cc
-       RETINSTR(cc, lr)
-       b       PLTJMP(syscall_error)
-
-       cfi_restore_state
-.Linval:
-       mov     r0, #-EINVAL
-       b       2b
-PSEUDO_END (__mmap)
-
-weak_alias (__mmap, mmap)
diff --git a/sysdeps/unix/sysv/linux/arm/mmap.c b/sysdeps/unix/sysv/linux/arm/mmap.c
new file mode 100644 (file)
index 0000000..2cb4907
--- /dev/null
@@ -0,0 +1,18 @@
+/* Copyright (C) 2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c>
diff --git a/sysdeps/unix/sysv/linux/arm/mmap64.S b/sysdeps/unix/sysv/linux/arm/mmap64.S
deleted file mode 100644 (file)
index d574df0..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 2000-2015 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-       .syntax unified
-
-#define        EINVAL          22
-
-#ifdef __ARMEB__
-# define LOW_OFFSET      8 + 4
-/* The initial + 4 is for the stack postdecrement.  */
-# define HIGH_OFFSET 4 + 8 + 0
-#else
-# define LOW_OFFSET      8 + 0
-# define HIGH_OFFSET 4 + 8 + 4
-#endif
-
-       /* The mmap2 system call takes six arguments, all in registers.  */
-       .text
-ENTRY (__mmap64)
-       ldr     ip, [sp, $LOW_OFFSET]
-       push    { r5 }
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r5, 0)
-       ldr     r5, [sp, $HIGH_OFFSET]
-       push    { r4 }
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r4, 0)
-       cfi_remember_state
-       movs    r4, ip, lsl $20         @ check that offset is page-aligned
-       mov     ip, ip, lsr $12
-       it      eq
-       movseq  r4, r5, lsr $12         @ check for overflow
-       bne     .Linval
-       ldr     r4, [sp, $8]            @ load fd
-       orr     r5, ip, r5, lsl $20     @ compose page offset
-       DO_CALL (mmap2, 0)
-       cmn     r0, $4096
-       pop     {r4, r5}
-       cfi_adjust_cfa_offset (-8)
-       cfi_restore (r4)
-       cfi_restore (r5)
-       it      cc
-       RETINSTR(cc, lr)
-       b       PLTJMP(syscall_error)
-
-       cfi_restore_state
-.Linval:
-       mov     r0, $-EINVAL
-       pop     {r4, r5}
-       cfi_adjust_cfa_offset (-8)
-       cfi_restore (r4)
-       cfi_restore (r5)
-       b       PLTJMP(syscall_error)
-PSEUDO_END (__mmap64)
-
-weak_alias (__mmap64, mmap64)