From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30517 invoked by alias); 24 Jul 2002 12:15:03 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 30501 invoked from network); 24 Jul 2002 12:15:01 -0000 Received: from unknown (HELO mail.nexus.co.uk) (62.3.66.203) by sources.redhat.com with SMTP; 24 Jul 2002 12:15:01 -0000 Received: from dsl-62-3-66-201.zen.co.uk ([62.3.66.201] helo=localhost.localdomain) by mail.nexus.co.uk with esmtp (Exim 3.35 #1 (Debian)) id 17XL4m-0004kO-00 for ; Wed, 24 Jul 2002 13:17:08 +0100 Subject: small optimisation patch From: Philip Blundell To: libc-hacker@sources.redhat.com Content-Type: text/plain Content-Transfer-Encoding: 7bit Date: Wed, 24 Jul 2002 05:15:00 -0000 Message-Id: <1027512900.3528.9.camel@mill> Mime-Version: 1.0 X-SW-Source: 2002-07/txt/msg00053.txt.bz2 2002-07-24 Philip Blundell * sysdeps/unix/arm/brk.S: Improve schedule. * sysdeps/unix/sysv/linux/arm/socket.S (PUSHARGS_1): Use more efficient instruction. (__socket): Optimize return sequence. Index: sysdeps/unix/arm/brk.S =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/arm/brk.S,v retrieving revision 1.4 diff -u -p -r1.4 brk.S --- sysdeps/unix/arm/brk.S 6 Jul 2001 04:56:07 -0000 1.4 +++ sysdeps/unix/arm/brk.S 24 Jul 2002 11:39:26 -0000 @@ -35,8 +35,8 @@ C_LABEL(__curbrk) SYSCALL__ (brk, 1) #ifdef PIC ldr r1, 1f - add r1, r1, pc -2: ldr r2, _cb_addr + ldr r2, _cb_addr +2: add r1, pc, r1 add r1, r1, r2 #else ldr r1, _cb_addr @@ -45,7 +45,7 @@ SYSCALL__ (brk, 1) mov r0, $0 RETINSTR(mov, pc, r14) #ifdef PIC -1: .long _GLOBAL_OFFSET_TABLE_ - 2b - 4 +1: .long _GLOBAL_OFFSET_TABLE_ - 2b - 8 _cb_addr: .long C_SYMBOL_NAME(__curbrk)(GOTOFF) #else Index: sysdeps/unix/sysv/linux/arm/socket.S =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/arm/socket.S,v retrieving revision 1.8 diff -u -p -r1.8 socket.S --- sysdeps/unix/sysv/linux/arm/socket.S 6 Jul 2001 04:56:13 -0000 1.8 +++ sysdeps/unix/sysv/linux/arm/socket.S 24 Jul 2002 11:39:30 -0000 @@ -35,7 +35,7 @@ #define __socket P(__,socket) #endif -#define PUSHARGS_1 stmfd sp!, {a1} +#define PUSHARGS_1 str a1, [sp, $-4]! #define PUSHARGS_2 stmfd sp!, {a1, a2} #define PUSHARGS_3 stmfd sp!, {a1, a2, a3} #define PUSHARGS_4 stmfd sp!, {a1, a2, a3, a4} @@ -78,10 +78,8 @@ ENTRY (__socket) /* r0 is < 0 if there was an error. */ cmn r0, $124 - bhs PLTJMP(syscall_error) - - /* Successful; return the syscall's value. */ - ret + RETINSTR(movcc, pc, r14) + b PLTJMP(syscall_error) PSEUDO_END (__socket)