CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: skrll Date: Wed Nov 21 21:01:41 UTC 2018 Modified Files: src/lib/libc/arch/arm/gen: swapcontext.S Log Message: Fix a comment To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/lib/libc/arch/arm/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/swapcontext.S diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.14 src/lib/libc/arch/arm/gen/swapcontext.S:1.15 --- src/lib/libc/arch/arm/gen/swapcontext.S:1.14 Sat Nov 30 20:20:42 2013 +++ src/lib/libc/arch/arm/gen/swapcontext.S Wed Nov 21 21:01:41 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.14 2013/11/30 20:20:42 joerg Exp $ */ +/* $NetBSD: swapcontext.S,v 1.15 2018/11/21 21:01:41 skrll Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #include "assym.h" #if defined(LIBC_SCCS) && !defined(lint) -RCSID("$NetBSD: swapcontext.S,v 1.14 2013/11/30 20:20:42 joerg Exp $") +RCSID("$NetBSD: swapcontext.S,v 1.15 2018/11/21 21:01:41 skrll Exp $") #endif /* LIBC_SCCS && !lint */ ENTRY(swapcontext) @@ -70,7 +70,7 @@ ENTRY(swapcontext) #endif #if !defined(__thumb__) str sp, [r0, #_UC_REGS_SP] /* Adjust saved SP. */ - str lr, [r0, #_UC_REGS_PC] /* Adjust saved SP. */ + str lr, [r0, #_UC_REGS_PC] /* Adjust saved PC. */ #else mov r2, sp str r2, [r0, #_UC_REGS_SP] /* Adjust saved SP. */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: joerg Date: Fri Jan 17 22:20:04 UTC 2014 Removed Files: src/lib/libc/arch/arm/gen: fabs.c Log Message: GC To generate a diff of this commit: cvs rdiff -u -r1.3 -r0 src/lib/libc/arch/arm/gen/fabs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: joerg Date: Wed Dec 25 22:05:12 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: Explicitly enable FPU support. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.25 src/lib/libc/arch/arm/gen/Makefile.inc:1.26 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.25 Wed Aug 21 03:09:39 2013 +++ src/lib/libc/arch/arm/gen/Makefile.inc Wed Dec 25 22:05:12 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.25 2013/08/21 03:09:39 matt Exp $ +# $NetBSD: Makefile.inc,v 1.26 2013/12/25 22:05:12 joerg Exp $ SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divide.S divsi3.S \ fabs.c flt_rounds.c udivsi3.S @@ -20,6 +20,9 @@ SRCS+= __aeabi_idiv0.c __aeabi_ldiv0.c SRCS+= modsi3.S umodsi3.S .endif +AFLAGS._setjmp.S= -mfpu=vfp +AFLAGS.setjmp.S= -mfpu=vfp + SRCS+= nanf.c SRCS+= setjmp.S
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: skrll Date: Mon Oct 21 08:28:14 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: _setjmp.S Log Message: Fix bug introduced in revision 1.13 which meant longjmp would never work on EABI where VFP didn't exist. Hi gimpy! To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/lib/libc/arch/arm/gen/_setjmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_setjmp.S diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.14 src/lib/libc/arch/arm/gen/_setjmp.S:1.15 --- src/lib/libc/arch/arm/gen/_setjmp.S:1.14 Thu Sep 12 15:36:15 2013 +++ src/lib/libc/arch/arm/gen/_setjmp.S Mon Oct 21 08:28:14 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.14 2013/09/12 15:36:15 joerg Exp $ */ +/* $NetBSD: _setjmp.S,v 1.15 2013/10/21 08:28:14 skrll Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -135,6 +135,7 @@ ENTRY(_longjmp) vldmia r3, {d8-d15} ldr r3, [r0, #(_JB_REG_FPSCR * 4)] vmsr fpscr, r3 +1: #endif /* __ARM_EABI__ (_ARM_ARCH_T2 || !__thumb__) */ adds r0, r0, #(_JB_REG_R4 * 4)
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: htodd Date: Wed Sep 4 22:38:09 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: swapcontext.S Log Message: Fix build by matching .cfi/#if. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/lib/libc/arch/arm/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/swapcontext.S diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.11 src/lib/libc/arch/arm/gen/swapcontext.S:1.12 --- src/lib/libc/arch/arm/gen/swapcontext.S:1.11 Wed Sep 4 21:17:15 2013 +++ src/lib/libc/arch/arm/gen/swapcontext.S Wed Sep 4 22:38:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.11 2013/09/04 21:17:15 matt Exp $ */ +/* $NetBSD: swapcontext.S,v 1.12 2013/09/04 22:38:09 htodd Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #include assym.h #if defined(LIBC_SCCS) !defined(lint) -RCSID($NetBSD: swapcontext.S,v 1.11 2013/09/04 21:17:15 matt Exp $) +RCSID($NetBSD: swapcontext.S,v 1.12 2013/09/04 22:38:09 htodd Exp $) #endif /* LIBC_SCCS !lint */ ENTRY(swapcontext) @@ -52,7 +52,7 @@ ENTRY(swapcontext) #endif bl PIC_SYM(_C_LABEL(_getcontext), PLT) /* getcontext(oucp) */ cmp r0, #0 -#if !defined(__thumb__) +#if !defined(__thumb__) defined(__UNWIND_TABLES__) pop {r0-r2, lr} .cfi_def_cfa_offset 0 RETc(ne)
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Wed Sep 4 23:08:29 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: swapcontext.S Log Message: Fix the .cfi correctly. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libc/arch/arm/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/swapcontext.S diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.12 src/lib/libc/arch/arm/gen/swapcontext.S:1.13 --- src/lib/libc/arch/arm/gen/swapcontext.S:1.12 Wed Sep 4 22:38:09 2013 +++ src/lib/libc/arch/arm/gen/swapcontext.S Wed Sep 4 23:08:29 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.12 2013/09/04 22:38:09 htodd Exp $ */ +/* $NetBSD: swapcontext.S,v 1.13 2013/09/04 23:08:29 matt Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #include assym.h #if defined(LIBC_SCCS) !defined(lint) -RCSID($NetBSD: swapcontext.S,v 1.12 2013/09/04 22:38:09 htodd Exp $) +RCSID($NetBSD: swapcontext.S,v 1.13 2013/09/04 23:08:29 matt Exp $) #endif /* LIBC_SCCS !lint */ ENTRY(swapcontext) @@ -52,9 +52,11 @@ ENTRY(swapcontext) #endif bl PIC_SYM(_C_LABEL(_getcontext), PLT) /* getcontext(oucp) */ cmp r0, #0 -#if !defined(__thumb__) defined(__UNWIND_TABLES__) +#if !defined(__thumb__) pop {r0-r2, lr} +#if defined(__ARM_EABI__) defined(__UNWIND_TABLES__) .cfi_def_cfa_offset 0 +#endif RETc(ne) #else pop {r0-r3}
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Wed Aug 21 03:09:39 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: divide.S need -marm To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.24 src/lib/libc/arch/arm/gen/Makefile.inc:1.25 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.24 Thu Jun 20 17:53:01 2013 +++ src/lib/libc/arch/arm/gen/Makefile.inc Wed Aug 21 03:09:39 2013 @@ -1,8 +1,10 @@ -# $NetBSD: Makefile.inc,v 1.24 2013/06/20 17:53:01 msaitoh Exp $ +# $NetBSD: Makefile.inc,v 1.25 2013/08/21 03:09:39 matt Exp $ SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divide.S divsi3.S \ fabs.c flt_rounds.c udivsi3.S +CPUFLAGS.divide.S+= -marm + # Common ieee754 constants and functions SRCS+= infinityf_ieee754.c infinity_ieee754.c infinityl_dbl_ieee754.c SRCS+= fpclassifyf_ieee754.c fpclassifyd_ieee754.c
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Sat Aug 17 01:07:45 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: alloca.S Log Message: Thumbify add END To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/lib/libc/arch/arm/gen/alloca.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/alloca.S diff -u src/lib/libc/arch/arm/gen/alloca.S:1.4 src/lib/libc/arch/arm/gen/alloca.S:1.5 --- src/lib/libc/arch/arm/gen/alloca.S:1.4 Sat Aug 21 11:20:10 2004 +++ src/lib/libc/arch/arm/gen/alloca.S Sat Aug 17 01:07:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: alloca.S,v 1.4 2004/08/21 11:20:10 rearnsha Exp $ */ +/* $NetBSD: alloca.S,v 1.5 2013/08/17 01:07:45 matt Exp $ */ /* * Copyright (c) 1995 Mark Brinicombe @@ -37,8 +37,17 @@ #include machine/asm.h ENTRY(alloca) - add r0, r0, #0x0007 /* round up to next 8 byte alignment */ - bic r0, r0, #0x0007 - sub sp, sp, r0 /* Adjust the stack pointer */ - mov r0, sp /* r0 = base of new space */ + adds r0, r0, #7 /* round up to next 8 byte alignment */ +#if !defined(__thumb__) || defined(_ARM_ARCH_T2) + bics r0, r0, #7 + sub sp, sp, r0 /* Adjust the stack pointer */ + mov r0, sp /* r0 = base of new space */ +#else + lsrs r0, r0, #3 + lsls r0, r0, #3 + mov r1, sp + subs r0, r1, r0 /* Adjust the stack pointer */ + mov sp, r0 /* r0 = base of new space */ +#endif RET +END(alloca)
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Thu Jun 20 07:18:40 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: modsi3/umodsi3 is not needed for earm since __aeabi_*divmod takes care of it. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.22 src/lib/libc/arch/arm/gen/Makefile.inc:1.23 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.22 Tue Apr 30 01:42:04 2013 +++ src/lib/libc/arch/arm/gen/Makefile.inc Thu Jun 20 07:18:40 2013 @@ -1,7 +1,7 @@ -# $NetBSD: Makefile.inc,v 1.22 2013/04/30 01:42:04 matt Exp $ +# $NetBSD: Makefile.inc,v 1.23 2013/06/20 07:18:40 matt Exp $ -SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divsi3.S \ - fabs.c flt_rounds.c modsi3.S umodsi3.S divide.S divsi3.S udivsi3.S +SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divide.S divsi3.S \ + fabs.c flt_rounds.c udivsi3.S # Common ieee754 constants and functions SRCS+= infinityf_ieee754.c infinity_ieee754.c infinityl_dbl_ieee754.c @@ -14,6 +14,8 @@ SRCS+= signbitf_ieee754.c signbitd_ieee7 .if !empty(LIBC_MACHINE_ARCH:Mearm*) SRCS+= __aeabi_fcmpun.c __aeabi_dcmpun.c SRCS+= __aeabi_idiv0.c __aeabi_ldiv0.c +.else +SRCS+= modsi3.s umodsi3.S .endif SRCS+= nanf.c
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: msaitoh Date: Thu Jun 20 17:53:01 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: Fix compile error. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.23 src/lib/libc/arch/arm/gen/Makefile.inc:1.24 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.23 Thu Jun 20 07:18:40 2013 +++ src/lib/libc/arch/arm/gen/Makefile.inc Thu Jun 20 17:53:01 2013 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.23 2013/06/20 07:18:40 matt Exp $ +# $NetBSD: Makefile.inc,v 1.24 2013/06/20 17:53:01 msaitoh Exp $ SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divide.S divsi3.S \ fabs.c flt_rounds.c udivsi3.S @@ -15,7 +15,7 @@ SRCS+= signbitf_ieee754.c signbitd_ieee7 SRCS+= __aeabi_fcmpun.c __aeabi_dcmpun.c SRCS+= __aeabi_idiv0.c __aeabi_ldiv0.c .else -SRCS+= modsi3.s umodsi3.S +SRCS+= modsi3.S umodsi3.S .endif SRCS+= nanf.c
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: skrll Date: Fri Apr 19 13:14:11 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: _setjmp.S setjmp.S Log Message: Actually fail if the magic number is found to be wrong in __longjmp. Avoid overwriting the {,_}longjmp return value in __ARM_EABI__ ok matt@ To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/lib/libc/arch/arm/gen/_setjmp.S cvs rdiff -u -r1.12 -r1.13 src/lib/libc/arch/arm/gen/setjmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_setjmp.S diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.10 src/lib/libc/arch/arm/gen/_setjmp.S:1.11 --- src/lib/libc/arch/arm/gen/_setjmp.S:1.10 Tue Jan 29 19:23:09 2013 +++ src/lib/libc/arch/arm/gen/_setjmp.S Fri Apr 19 13:14:10 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.10 2013/01/29 19:23:09 matt Exp $ */ +/* $NetBSD: _setjmp.S,v 1.11 2013/04/19 13:14:10 skrll Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -107,10 +107,10 @@ ENTRY(_longjmp) #ifdef __ARM_EABI__ teq r3, r2/* did magic change? */ beq 1f/* no, don't restore VFP */ - add r1, r0, #(_JB_REG_D8 * 4) - vldmia r1, {d8-d15} - ldr r1, [r0, #(_JB_REG_FPSCR * 4)] - vmsr fpscr, r1 + add ip, r0, #(_JB_REG_D8 * 4) + vldmia ip, {d8-d15} + ldr ip, [r0, #(_JB_REG_FPSCR * 4)] + vmsr fpscr, ip 1: #endif /* __ARM_EABI__ */ Index: src/lib/libc/arch/arm/gen/setjmp.S diff -u src/lib/libc/arch/arm/gen/setjmp.S:1.12 src/lib/libc/arch/arm/gen/setjmp.S:1.13 --- src/lib/libc/arch/arm/gen/setjmp.S:1.12 Tue Jan 29 19:23:09 2013 +++ src/lib/libc/arch/arm/gen/setjmp.S Fri Apr 19 13:14:10 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: setjmp.S,v 1.12 2013/01/29 19:23:09 matt Exp $ */ +/* $NetBSD: setjmp.S,v 1.13 2013/04/19 13:14:10 skrll Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -105,6 +105,7 @@ ENTRY(__longjmp14) ldr ip, .Lsetjmp_magic bic r3, r2, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP) teq r3, ip + bne .Lbotch /* Restore the signal mask. */ stmfd sp!, {r0-r2, r14} @@ -118,10 +119,10 @@ ENTRY(__longjmp14) tst r2, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP) /* is this a VFP magic? */ beq 1f/* no, don't restore VFP */ - add r1, r0, #(_JB_REG_D8 * 4) - vldmia r1, {d8-d15} - ldr r1, [r0, #(_JB_REG_FPSCR * 4)] - vmsr fpscr, r1 + add ip, r0, #(_JB_REG_D8 * 4) + vldmia ip, {d8-d15} + ldr ip, [r0, #(_JB_REG_FPSCR * 4)] + vmsr fpscr, ip 1: #endif /* __ARM_EABI__ */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Fri Apr 19 13:45:46 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: _setjmp.S setjmp.S Log Message: A small optimization To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/lib/libc/arch/arm/gen/_setjmp.S cvs rdiff -u -r1.13 -r1.14 src/lib/libc/arch/arm/gen/setjmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_setjmp.S diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.11 src/lib/libc/arch/arm/gen/_setjmp.S:1.12 --- src/lib/libc/arch/arm/gen/_setjmp.S:1.11 Fri Apr 19 13:14:10 2013 +++ src/lib/libc/arch/arm/gen/_setjmp.S Fri Apr 19 13:45:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.11 2013/04/19 13:14:10 skrll Exp $ */ +/* $NetBSD: _setjmp.S,v 1.12 2013/04/19 13:45:45 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -124,8 +124,7 @@ ENTRY(_longjmp) beq botch /* Set return value */ - mov r0, r1 - teq r0, #0x + movs r0, r1 moveq r0, #0x0001 RET Index: src/lib/libc/arch/arm/gen/setjmp.S diff -u src/lib/libc/arch/arm/gen/setjmp.S:1.13 src/lib/libc/arch/arm/gen/setjmp.S:1.14 --- src/lib/libc/arch/arm/gen/setjmp.S:1.13 Fri Apr 19 13:14:10 2013 +++ src/lib/libc/arch/arm/gen/setjmp.S Fri Apr 19 13:45:45 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: setjmp.S,v 1.13 2013/04/19 13:14:10 skrll Exp $ */ +/* $NetBSD: setjmp.S,v 1.14 2013/04/19 13:45:45 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -136,9 +136,7 @@ ENTRY(__longjmp14) beq .Lbotch /* Set return value */ - - mov r0, r1 - teq r0, #0x + movs r0, r1 moveq r0, #0x0001 RET
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Tue Jan 29 19:23:09 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: _setjmp.S setjmp.S Log Message: AAPCS (EABI) requires that VFP D8-D15 are always saved, regardless whether the soft float or hard float ABI is being used. However, if there isn't a FPU that can't be done. So only save/restore them if a FPU is present. When libc initializes, it does a sysctl to determine if there is a FPU and stores the result which _setjmp/setjmp uses. If there was a FPU, the magic in the jmp_buf is changed to reflect that the VFP registers were saved. longjmp uses the magic to determine if it needs to restore the VFP registers. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/lib/libc/arch/arm/gen/_setjmp.S cvs rdiff -u -r1.11 -r1.12 src/lib/libc/arch/arm/gen/setjmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_setjmp.S diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.9 src/lib/libc/arch/arm/gen/_setjmp.S:1.10 --- src/lib/libc/arch/arm/gen/_setjmp.S:1.9 Fri Jan 25 08:52:16 2013 +++ src/lib/libc/arch/arm/gen/_setjmp.S Tue Jan 29 19:23:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.9 2013/01/25 08:52:16 matt Exp $ */ +/* $NetBSD: _setjmp.S,v 1.10 2013/01/29 19:23:09 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -36,6 +36,10 @@ #error FPA is not supported anymore #endif +#ifdef __ARM_EABI__ + .fpu vfp +#endif + #include machine/asm.h #include machine/setjmp.h @@ -49,19 +53,33 @@ * The previous signal state is NOT restored. * * Note: r0 is the return value - * r1-r3 are scratch registers in functions + * r1-r3,ip are scratch registers in functions */ ENTRY(_setjmp) ldr r1, .L_setjmp_magic - str r1, [r0] -#ifdef __ARM_PCS_VFP - add r1, r0, #(_JB_REG_D8 * 4) - vstmia r1, {d8-d15} - vmrs r1, fpscr - str r1, [r0, #(_JB_REG_FPSCR * 4)] -#endif /* __ARM_PCS_VFP */ +#ifdef __ARM_EABI__ + ldr r2, .Lfpu_present +#ifdef PIC + GOT_INIT(r3, .L_setjmp_got, .L_setjmp_gotinit) + ldr r2, [r2, r3] +#else + ldr r2, [r2] +#endif + teq r2, #0 /* do we have a FPU? */ + beq 1f /* no, don't save VFP registers */ + + orr r1, r1, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP) +/* change magic to VFP magic */ + add r2, r0, #(_JB_REG_D8 * 4) + vstmia r2, {d8-d15} + vmrs r2, fpscr + str r2, [r0, #(_JB_REG_FPSCR * 4)] +1: +#endif /* __ARM_EABI__ */ + + str r1, [r0] add r0, r0, #(_JB_REG_R4 * 4) /* Store integer registers */ @@ -71,24 +89,30 @@ ENTRY(_setjmp) RET .L_setjmp_magic: -#ifdef __ARM_PCS_VFP - .word _JB_MAGIC__SETJMP_VFP -#else .word _JB_MAGIC__SETJMP -#endif +#ifdef __ARM_EABI__ + GOT_INITSYM(.L_setjmp_got, .L_setjmp_gotinit) +.Lfpu_present: + .word PIC_SYM(_libc_arm_fpu_present, GOTOFF) +#endif /* __ARM_EABI__ */ ENTRY(_longjmp) - ldr r2, .L_setjmp_magic - ldr r3, [r0] - teq r2, r3 - bne botch - -#ifdef __ARM_PCS_VFP + ldr r2, [r0] /* get magic from jmp_buf */ + bic r3, r2, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP) + /* ignore VFP-ness of magic */ + ldr ip, .L_setjmp_magic /* load magic */ + teq ip, r3/* magic correct? */ + bne botch/* no, botch */ + +#ifdef __ARM_EABI__ + teq r3, r2/* did magic change? */ + beq 1f/* no, don't restore VFP */ add r1, r0, #(_JB_REG_D8 * 4) vldmia r1, {d8-d15} ldr r1, [r0, #(_JB_REG_FPSCR * 4)] vmsr fpscr, r1 -#endif /* __ARM_PCS_VFP */ +1: +#endif /* __ARM_EABI__ */ add r0, r0, #(_JB_REG_R4 * 4) /* Restore integer registers */ Index: src/lib/libc/arch/arm/gen/setjmp.S diff -u src/lib/libc/arch/arm/gen/setjmp.S:1.11 src/lib/libc/arch/arm/gen/setjmp.S:1.12 --- src/lib/libc/arch/arm/gen/setjmp.S:1.11 Fri Jan 25 08:52:16 2013 +++ src/lib/libc/arch/arm/gen/setjmp.S Tue Jan 29 19:23:09 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: setjmp.S,v 1.11 2013/01/25 08:52:16 matt Exp $ */ +/* $NetBSD: setjmp.S,v 1.12 2013/01/29 19:23:09 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -36,6 +36,10 @@ #error FPA is not supported anymore #endif +#ifdef __ARM_EABI__ + .fpu vfp +#endif + #include machine/asm.h #include machine/setjmp.h @@ -59,14 +63,28 @@ ENTRY(__setjmp14) ldmfd sp!, {r0-r2, r14} ldr r1, .Lsetjmp_magic - str r1, [r0] -#ifdef __ARM_PCS_VFP - add r1, r0, #(_JB_REG_D8 * 4) - vstmia r1, {d8-d15} - vmrs r1, fpscr - str r1, [r0, #(_JB_REG_FPSCR * 4)] -#endif /* __ARM_PCS_VFP */ +#ifdef __ARM_EABI__ + ldr r2, .Lfpu_present +#ifdef PIC + GOT_INIT(r3, .Lsetjmp_got, .Lsetjmp_gotinit) + ldr r2, [r2, r3] +#else + ldr r2, [r2] +#endif + teq r2, #0 /* do we have a FPU? */ + beq 1f /* no, don't save VFP registers */ + + orr r1, r1, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP) +/* change magic to VFP magic */ + add r2, r0, #(_JB_REG_D8 * 4) + vstmia r2, {d8-d15} + vmrs r2, fpscr + str r2, [r0, #(_JB_REG_FPSCR * 4)] +1: +#endif /* __ARM_EABI__ */ + + str r1, [r0] /*
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Fri Jan 25 08:52:16 UTC 2013 Modified Files: src/lib/libc/arch/arm/gen: _setjmp.S setjmp.S Log Message: Use __ARM_PCS_VFP to determine whether the VFP is being used. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libc/arch/arm/gen/_setjmp.S cvs rdiff -u -r1.10 -r1.11 src/lib/libc/arch/arm/gen/setjmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_setjmp.S diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.8 src/lib/libc/arch/arm/gen/_setjmp.S:1.9 --- src/lib/libc/arch/arm/gen/_setjmp.S:1.8 Fri Jan 11 13:55:25 2013 +++ src/lib/libc/arch/arm/gen/_setjmp.S Fri Jan 25 08:52:16 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.8 2013/01/11 13:55:25 matt Exp $ */ +/* $NetBSD: _setjmp.S,v 1.9 2013/01/25 08:52:16 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -32,7 +32,7 @@ * SUCH DAMAGE. */ -#if !defined(__SOFTFP__) !defined(__VFP_FP__) +#if !defined(__SOFTFP__) !defined(__VFP_FP__) !defined(__ARM_PCS) #error FPA is not supported anymore #endif @@ -56,12 +56,12 @@ ENTRY(_setjmp) ldr r1, .L_setjmp_magic str r1, [r0] -#ifndef __SOFTFP__ +#ifdef __ARM_PCS_VFP add r1, r0, #(_JB_REG_D8 * 4) vstmia r1, {d8-d15} vmrs r1, fpscr str r1, [r0, #(_JB_REG_FPSCR * 4)] -#endif +#endif /* __ARM_PCS_VFP */ add r0, r0, #(_JB_REG_R4 * 4) /* Store integer registers */ @@ -71,10 +71,10 @@ ENTRY(_setjmp) RET .L_setjmp_magic: -#ifdef __SOFTFP__ - .word _JB_MAGIC__SETJMP -#else +#ifdef __ARM_PCS_VFP .word _JB_MAGIC__SETJMP_VFP +#else + .word _JB_MAGIC__SETJMP #endif ENTRY(_longjmp) @@ -83,12 +83,12 @@ ENTRY(_longjmp) teq r2, r3 bne botch -#ifndef __SOFTFP__ +#ifdef __ARM_PCS_VFP add r1, r0, #(_JB_REG_D8 * 4) vldmia r1, {d8-d15} ldr r1, [r0, #(_JB_REG_FPSCR * 4)] vmsr fpscr, r1 -#endif +#endif /* __ARM_PCS_VFP */ add r0, r0, #(_JB_REG_R4 * 4) /* Restore integer registers */ Index: src/lib/libc/arch/arm/gen/setjmp.S diff -u src/lib/libc/arch/arm/gen/setjmp.S:1.10 src/lib/libc/arch/arm/gen/setjmp.S:1.11 --- src/lib/libc/arch/arm/gen/setjmp.S:1.10 Fri Jan 11 13:55:25 2013 +++ src/lib/libc/arch/arm/gen/setjmp.S Fri Jan 25 08:52:16 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: setjmp.S,v 1.10 2013/01/11 13:55:25 matt Exp $ */ +/* $NetBSD: setjmp.S,v 1.11 2013/01/25 08:52:16 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -32,7 +32,7 @@ * SUCH DAMAGE. */ -#if !defined(__SOFTFP__) !defined(__VFP_FP__) +#if !defined(__SOFTFP__) !defined(__VFP_FP__) !defined(__ARM_PCS) #error FPA is not supported anymore #endif @@ -61,12 +61,12 @@ ENTRY(__setjmp14) ldr r1, .Lsetjmp_magic str r1, [r0] -#ifndef __SOFTFP__ +#ifdef __ARM_PCS_VFP add r1, r0, #(_JB_REG_D8 * 4) vstmia r1, {d8-d15} vmrs r1, fpscr str r1, [r0, #(_JB_REG_FPSCR * 4)] -#endif /* !__SOFTFP__ */ +#endif /* __ARM_PCS_VFP */ /* Store integer registers */ add r0, r0, #(_JB_REG_R4 * 4) @@ -75,10 +75,10 @@ ENTRY(__setjmp14) RET .Lsetjmp_magic: -#ifdef __SOFTFP__ - .word _JB_MAGIC_SETJMP -#else +#ifdef __ARM_PCS_VFP .word _JB_MAGIC_SETJMP_VFP +#else + .word _JB_MAGIC_SETJMP #endif @@ -96,12 +96,12 @@ ENTRY(__longjmp14) bl PIC_SYM(_C_LABEL(__sigprocmask14), PLT) ldmfd sp!, {r0-r2, r14} -#ifndef __SOFTFP__ +#ifdef __ARM_PCS_VFP add r1, r0, #(_JB_REG_D8 * 4) vldmia r1, {d8-d15} ldr r1, [r0, #(_JB_REG_FPSCR * 4)] vmsr fpscr, r1 -#endif /* !__SOFTFP__ */ +#endif /* __ARM_PCS_VFP */ add r0, r0, #(_JB_REG_R4 * 4) /* Restore integer registers */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Sat Jan 26 07:04:23 UTC 2013 Added Files: src/lib/libc/arch/arm/gen: __aeabi_dcmpun.c __aeabi_fcmpun.c Log Message: Add __aeabi_[fd]cmpun for IEEE unordered compares (requires by ARM RTABI). To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libc/arch/arm/gen/__aeabi_dcmpun.c \ src/lib/libc/arch/arm/gen/__aeabi_fcmpun.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/lib/libc/arch/arm/gen/__aeabi_dcmpun.c diff -u /dev/null src/lib/libc/arch/arm/gen/__aeabi_dcmpun.c:1.1 --- /dev/null Sat Jan 26 07:04:23 2013 +++ src/lib/libc/arch/arm/gen/__aeabi_dcmpun.c Sat Jan 26 07:04:22 2013 @@ -0,0 +1,54 @@ +/*- + * Copyright (c) 2013 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Matt Thomas of 3am Software Foundry. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include sys/cdefs.h +#if defined(LIBC_SCCS) !defined(lint) +__RCSID($NetBSD: __aeabi_dcmpun.c,v 1.1 2013/01/26 07:04:22 matt Exp $); +#endif /* LIBC_SCCS and not lint */ + +#include arm/aeabi.h +#include arm/ieee.h + +#include math.h + +/* + * result (1, 0) denotes (?, =) [2], use for C99 isunordered() + */ + +int +__aeabi_dcmpun(double x, double y) +{ + const union ieee_double_u ux = { .dblu_d = x }; + const union ieee_double_u uy = { .dblu_d = y }; + + return (ux.dblu_dbl.dbl_exp == DBL_EXP_INFNAN + (ux.dblu_dbl.dbl_frach|ux.dblu_dbl.dbl_fracl) != 0) + || (uy.dblu_dbl.dbl_exp == DBL_EXP_INFNAN + (uy.dblu_dbl.dbl_frach|uy.dblu_dbl.dbl_fracl) != 0); +} Index: src/lib/libc/arch/arm/gen/__aeabi_fcmpun.c diff -u /dev/null src/lib/libc/arch/arm/gen/__aeabi_fcmpun.c:1.1 --- /dev/null Sat Jan 26 07:04:23 2013 +++ src/lib/libc/arch/arm/gen/__aeabi_fcmpun.c Sat Jan 26 07:04:22 2013 @@ -0,0 +1,54 @@ +/*- + * Copyright (c) 2013 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Matt Thomas of 3am Software Foundry. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include sys/cdefs.h +#if defined(LIBC_SCCS) !defined(lint) +__RCSID($NetBSD: __aeabi_fcmpun.c,v 1.1 2013/01/26 07:04:22 matt Exp $); +#endif /* LIBC_SCCS and not lint */ + +#include arm/aeabi.h +#include arm/ieee.h +
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Wed Nov 28 02:18:25 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: swapcontext.S Log Message: Add missing registers. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libc/arch/arm/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/swapcontext.S diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.8 src/lib/libc/arch/arm/gen/swapcontext.S:1.9 --- src/lib/libc/arch/arm/gen/swapcontext.S:1.8 Thu Sep 27 11:20:20 2012 +++ src/lib/libc/arch/arm/gen/swapcontext.S Wed Nov 28 02:18:24 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.8 2012/09/27 11:20:20 skrll Exp $ */ +/* $NetBSD: swapcontext.S,v 1.9 2012/11/28 02:18:24 matt Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -33,15 +33,15 @@ #include assym.h #if defined(LIBC_SCCS) !defined(lint) -RCSID($NetBSD: swapcontext.S,v 1.8 2012/09/27 11:20:20 skrll Exp $) +RCSID($NetBSD: swapcontext.S,v 1.9 2012/11/28 02:18:24 matt Exp $) #endif /* LIBC_SCCS !lint */ ENTRY(swapcontext) stmfd sp!, {r0-r1, lr} /* Must save oucp, ucp, lr. */ - sub sp, #4 + sub sp, sp, #4 bl PIC_SYM(_C_LABEL(_getcontext), PLT) /* getcontext(oucp) */ cmp r0, #0 - add sp, #4 + add sp, sp, #4 ldmfd sp!, {r0-r1, lr} RETc(ne) str sp, [r0, #_UC_REGS_SP] /* Adjust saved SP. */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: christos Date: Tue Oct 30 12:42:37 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: add new files to fix static linking To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.19 src/lib/libc/arch/arm/gen/Makefile.inc:1.20 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.19 Tue Oct 9 22:15:03 2012 +++ src/lib/libc/arch/arm/gen/Makefile.inc Tue Oct 30 08:42:37 2012 @@ -1,7 +1,7 @@ -# $NetBSD: Makefile.inc,v 1.19 2012/10/10 02:15:03 christos Exp $ +# $NetBSD: Makefile.inc,v 1.20 2012/10/30 12:42:37 christos Exp $ SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divsi3.S \ - fabs.c flt_rounds.c modsi3.S umodsi3.S + fabs.c flt_rounds.c modsi3.S umodsi3.S divide.S divsi3.S udivsi3.S # Common ieee754 constants and functions SRCS+= infinityf_ieee754.c infinity_ieee754.c infinityl_dbl_ieee754.c
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: christos Date: Wed Oct 10 02:15:03 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: add split files To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.18 src/lib/libc/arch/arm/gen/Makefile.inc:1.19 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.18 Mon Jul 30 08:57:54 2012 +++ src/lib/libc/arch/arm/gen/Makefile.inc Tue Oct 9 22:15:03 2012 @@ -1,7 +1,7 @@ -# $NetBSD: Makefile.inc,v 1.18 2012/07/30 12:57:54 skrll Exp $ +# $NetBSD: Makefile.inc,v 1.19 2012/10/10 02:15:03 christos Exp $ SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divsi3.S \ - fabs.c flt_rounds.c + fabs.c flt_rounds.c modsi3.S umodsi3.S # Common ieee754 constants and functions SRCS+= infinityf_ieee754.c infinity_ieee754.c infinityl_dbl_ieee754.c
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: skrll Date: Thu Sep 27 09:53:53 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: swapcontext.S Log Message: Fixup the stack pointer in the ucontext returned by getcontext. This fixes the following tests lib/libc/sys/t_swapcontext.c lib/libpthread/t_swapcontext.c To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libc/arch/arm/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/swapcontext.S diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.6 src/lib/libc/arch/arm/gen/swapcontext.S:1.7 --- src/lib/libc/arch/arm/gen/swapcontext.S:1.6 Sun Aug 5 05:10:38 2012 +++ src/lib/libc/arch/arm/gen/swapcontext.S Thu Sep 27 09:53:53 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.6 2012/08/05 05:10:38 skrll Exp $ */ +/* $NetBSD: swapcontext.S,v 1.7 2012/09/27 09:53:53 skrll Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include SYS.h #if defined(LIBC_SCCS) !defined(lint) -RCSID($NetBSD: swapcontext.S,v 1.6 2012/08/05 05:10:38 skrll Exp $) +RCSID($NetBSD: swapcontext.S,v 1.7 2012/09/27 09:53:53 skrll Exp $) #endif /* LIBC_SCCS !lint */ ENTRY(swapcontext) @@ -43,6 +43,7 @@ ENTRY(swapcontext) add sp, #4 ldmfd sp!, {r0-r1, lr} RETc(ne) + str sp, [r0, #(36 + 13*4)] /* Adjust saved SP. */ str lr, [r0, #(36 + 15*4)] /* Adjust saved PC. */ #ifdef SOFTFLOAT /* Ahem. */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: skrll Date: Sun Aug 5 05:10:38 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: swapcontext.S Log Message: Ensure stack alignment. looks fine matt@ To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libc/arch/arm/gen/swapcontext.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/swapcontext.S diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.5 src/lib/libc/arch/arm/gen/swapcontext.S:1.6 --- src/lib/libc/arch/arm/gen/swapcontext.S:1.5 Mon Apr 28 20:22:55 2008 +++ src/lib/libc/arch/arm/gen/swapcontext.S Sun Aug 5 05:10:38 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: swapcontext.S,v 1.5 2008/04/28 20:22:55 martin Exp $ */ +/* $NetBSD: swapcontext.S,v 1.6 2012/08/05 05:10:38 skrll Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -32,13 +32,15 @@ #include SYS.h #if defined(LIBC_SCCS) !defined(lint) -RCSID($NetBSD: swapcontext.S,v 1.5 2008/04/28 20:22:55 martin Exp $) +RCSID($NetBSD: swapcontext.S,v 1.6 2012/08/05 05:10:38 skrll Exp $) #endif /* LIBC_SCCS !lint */ ENTRY(swapcontext) stmfd sp!, {r0-r1, lr} /* Must save oucp, ucp, lr. */ + sub sp, #4 bl PIC_SYM(_C_LABEL(_getcontext), PLT) /* getcontext(oucp) */ cmp r0, #0 + add sp, #4 ldmfd sp!, {r0-r1, lr} RETc(ne) str lr, [r0, #(36 + 15*4)] /* Adjust saved PC. */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: matt Date: Wed Aug 1 06:02:13 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: _setjmp.S setjmp.S Log Message: Add #error cases in case someone tries to compile hardfloat VFP libraries. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libc/arch/arm/gen/_setjmp.S cvs rdiff -u -r1.8 -r1.9 src/lib/libc/arch/arm/gen/setjmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_setjmp.S diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.6 src/lib/libc/arch/arm/gen/_setjmp.S:1.7 --- src/lib/libc/arch/arm/gen/_setjmp.S:1.6 Sat Aug 21 11:20:10 2004 +++ src/lib/libc/arch/arm/gen/_setjmp.S Wed Aug 1 06:02:13 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.6 2004/08/21 11:20:10 rearnsha Exp $ */ +/* $NetBSD: _setjmp.S,v 1.7 2012/08/01 06:02:13 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -53,6 +53,8 @@ ENTRY(_setjmp) str r1, [r0], #4 #ifdef SOFTFLOAT add r0, r0, #52 +#elif defined(__VFP_FP__) +#error _setjmp VFP support missing #else /* Store fp registers */ sfm f4, 4, [r0], #48 @@ -77,6 +79,8 @@ ENTRY(_longjmp) #ifdef SOFTFLOAT add r0, r0, #52 +#elif defined(__VFP_FP__) +#error _longjmp VFP support missing #else /* Restore fp registers */ lfm f4, 4, [r0], #48 Index: src/lib/libc/arch/arm/gen/setjmp.S diff -u src/lib/libc/arch/arm/gen/setjmp.S:1.8 src/lib/libc/arch/arm/gen/setjmp.S:1.9 --- src/lib/libc/arch/arm/gen/setjmp.S:1.8 Sun Oct 16 17:26:24 2005 +++ src/lib/libc/arch/arm/gen/setjmp.S Wed Aug 1 06:02:13 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: setjmp.S,v 1.8 2005/10/16 17:26:24 christos Exp $ */ +/* $NetBSD: setjmp.S,v 1.9 2012/08/01 06:02:13 matt Exp $ */ /* * Copyright (c) 1997 Mark Brinicombe @@ -59,6 +59,8 @@ ENTRY(__setjmp14) #ifdef SOFTFLOAT add r0, r0, #52 +#elif defined(__VFP_FP__) +#error __setjmp14 VFP support missing #else /* Store fp registers */ sfm f4, 4, [r0], #48 @@ -92,6 +94,8 @@ ENTRY(__longjmp14) add r0, r0, #4 #ifdef SOFTFLOAT add r0, r0, #52 +#elif defined(__VFP_FP__) +#error __longjmp14 VFP support missing #else /* Restore fp registers */ lfm f4, 4, [r0], #48
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: skrll Date: Mon Jul 30 12:57:55 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: Backout previous. ld.so requires the division routines so this needs more thought. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.17 src/lib/libc/arch/arm/gen/Makefile.inc:1.18 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.17 Wed Jul 11 18:24:27 2012 +++ src/lib/libc/arch/arm/gen/Makefile.inc Mon Jul 30 12:57:54 2012 @@ -1,6 +1,6 @@ -# $NetBSD: Makefile.inc,v 1.17 2012/07/11 18:24:27 reinoud Exp $ +# $NetBSD: Makefile.inc,v 1.18 2012/07/30 12:57:54 skrll Exp $ -SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c \ +SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divsi3.S \ fabs.c flt_rounds.c # Common ieee754 constants and functions
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: reinoud Date: Wed Jul 11 18:24:27 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: Makefile.inc Log Message: On the libc/libgcc clashes cleanup that removed divsi3.o from libc, ARM/evbarm was forgotten. This patch fixes it making static binaries possible again! To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/lib/libc/arch/arm/gen/Makefile.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/Makefile.inc diff -u src/lib/libc/arch/arm/gen/Makefile.inc:1.16 src/lib/libc/arch/arm/gen/Makefile.inc:1.17 --- src/lib/libc/arch/arm/gen/Makefile.inc:1.16 Sun Dec 6 07:12:17 2009 +++ src/lib/libc/arch/arm/gen/Makefile.inc Wed Jul 11 18:24:27 2012 @@ -1,6 +1,6 @@ -# $NetBSD: Makefile.inc,v 1.16 2009/12/06 07:12:17 uebayasi Exp $ +# $NetBSD: Makefile.inc,v 1.17 2012/07/11 18:24:27 reinoud Exp $ -SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c divsi3.S \ +SRCS+= alloca.S byte_swap_2.S byte_swap_4.S bswap64.c \ fabs.c flt_rounds.c # Common ieee754 constants and functions
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: bsh Date: Wed Mar 21 09:05:36 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: _lwp.c Log Message: shut up lint(1) To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libc/arch/arm/gen/_lwp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_lwp.c diff -u src/lib/libc/arch/arm/gen/_lwp.c:1.5 src/lib/libc/arch/arm/gen/_lwp.c:1.6 --- src/lib/libc/arch/arm/gen/_lwp.c:1.5 Thu Feb 24 04:28:41 2011 +++ src/lib/libc/arch/arm/gen/_lwp.c Wed Mar 21 09:05:35 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: _lwp.c,v 1.5 2011/02/24 04:28:41 joerg Exp $ */ +/* $NetBSD: _lwp.c,v 1.6 2012/03/21 09:05:35 bsh Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -37,7 +37,7 @@ #include sys/cdefs.h #if defined(LIBC_SCCS) !defined(lint) -__RCSID($NetBSD: _lwp.c,v 1.5 2011/02/24 04:28:41 joerg Exp $); +__RCSID($NetBSD: _lwp.c,v 1.6 2012/03/21 09:05:35 bsh Exp $); #endif /* LIBC_SCCS and not lint */ #include namespace.h @@ -58,16 +58,22 @@ _lwp_makecontext(ucontext_t *u, void (*s u-uc_stack.ss_sp = stack_base; u-uc_stack.ss_size = stack_size; + /* LINTED - alignment is fixed below. */ sp = (void **) (stack_base + stack_size); /* * Note: We make sure the stack is 8-byte aligned, here. */ + /* LINTED - doesn't lose any bits by this conversion */ u-uc_mcontext.__gregs[_REG_R0] = (__greg_t) arg; + /* LINTED - doesn't lose any bits by this conversion */ u-uc_mcontext.__gregs[_REG_SP] = ((__greg_t) sp) ~7; + /* LINTED - doesn't lose any bits by this conversion */ u-uc_mcontext.__gregs[_REG_LR] = (__greg_t) _lwp_exit; + /* LINTED - doesn't lose any bits by this conversion */ u-uc_mcontext.__gregs[_REG_PC] = (__greg_t) start; + /* LINTED - unsinged long and unsigned int are same size */ u-uc_mcontext._mc_tlsbase = (uintptr_t)private; u-uc_flags |= _UC_TLSBASE; }
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: christos Date: Wed Mar 21 14:03:06 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: _lwp.c makecontext.c Log Message: no need for linted annotations To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libc/arch/arm/gen/_lwp.c cvs rdiff -u -r1.3 -r1.4 src/lib/libc/arch/arm/gen/makecontext.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/_lwp.c diff -u src/lib/libc/arch/arm/gen/_lwp.c:1.6 src/lib/libc/arch/arm/gen/_lwp.c:1.7 --- src/lib/libc/arch/arm/gen/_lwp.c:1.6 Wed Mar 21 05:05:35 2012 +++ src/lib/libc/arch/arm/gen/_lwp.c Wed Mar 21 10:03:06 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: _lwp.c,v 1.6 2012/03/21 09:05:35 bsh Exp $ */ +/* $NetBSD: _lwp.c,v 1.7 2012/03/21 14:03:06 christos Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -37,7 +37,7 @@ #include sys/cdefs.h #if defined(LIBC_SCCS) !defined(lint) -__RCSID($NetBSD: _lwp.c,v 1.6 2012/03/21 09:05:35 bsh Exp $); +__RCSID($NetBSD: _lwp.c,v 1.7 2012/03/21 14:03:06 christos Exp $); #endif /* LIBC_SCCS and not lint */ #include namespace.h @@ -58,22 +58,15 @@ _lwp_makecontext(ucontext_t *u, void (*s u-uc_stack.ss_sp = stack_base; u-uc_stack.ss_size = stack_size; - /* LINTED - alignment is fixed below. */ - sp = (void **) (stack_base + stack_size); - + sp = (void *) (stack_base + stack_size); /* * Note: We make sure the stack is 8-byte aligned, here. */ - /* LINTED - doesn't lose any bits by this conversion */ - u-uc_mcontext.__gregs[_REG_R0] = (__greg_t) arg; - /* LINTED - doesn't lose any bits by this conversion */ - u-uc_mcontext.__gregs[_REG_SP] = ((__greg_t) sp) ~7; - /* LINTED - doesn't lose any bits by this conversion */ - u-uc_mcontext.__gregs[_REG_LR] = (__greg_t) _lwp_exit; - /* LINTED - doesn't lose any bits by this conversion */ - u-uc_mcontext.__gregs[_REG_PC] = (__greg_t) start; - /* LINTED - unsinged long and unsigned int are same size */ - u-uc_mcontext._mc_tlsbase = (uintptr_t)private; + u-uc_mcontext.__gregs[_REG_R0] = (__greg_t)(uintptr_t)arg; + u-uc_mcontext.__gregs[_REG_SP] = ((__greg_t)(uintptr_t)sp) ~7; + u-uc_mcontext.__gregs[_REG_LR] = (__greg_t)(uintptr_t)_lwp_exit; + u-uc_mcontext.__gregs[_REG_PC] = (__greg_t)(uintptr_t)start; + u-uc_mcontext._mc_tlsbase = (__greg_t)(uintptr_t)private; u-uc_flags |= _UC_TLSBASE; } Index: src/lib/libc/arch/arm/gen/makecontext.c diff -u src/lib/libc/arch/arm/gen/makecontext.c:1.3 src/lib/libc/arch/arm/gen/makecontext.c:1.4 --- src/lib/libc/arch/arm/gen/makecontext.c:1.3 Mon Apr 28 16:22:55 2008 +++ src/lib/libc/arch/arm/gen/makecontext.c Wed Mar 21 10:03:06 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:55 martin Exp $ */ +/* $NetBSD: makecontext.c,v 1.4 2012/03/21 14:03:06 christos Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include sys/cdefs.h #if defined(LIBC_SCCS) !defined(lint) -__RCSID($NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:55 martin Exp $); +__RCSID($NetBSD: makecontext.c,v 1.4 2012/03/21 14:03:06 christos Exp $); #endif #include stddef.h @@ -55,12 +55,12 @@ makecontext(ucontext_t *ucp, void (*func /* Allocate necessary stack space for arguments exceeding r0-3. */ if (argc 4) sp -= argc - 4; - gr[_REG_SP] = (__greg_t)sp; + gr[_REG_SP] = (__greg_t)(uintptr_t)sp; /* Wipe out frame pointer. */ gr[_REG_FP] = 0; /* Arrange for return via the trampoline code. */ - gr[_REG_LR] = (__greg_t)_resumecontext; - gr[_REG_PC] = (__greg_t)func; + gr[_REG_LR] = (__greg_t)(uintptr_t)_resumecontext; + gr[_REG_PC] = (__greg_t)(uintptr_t)func; va_start(ap, argc); /* Pass up to four arguments in r0-3. */
CVS commit: src/lib/libc/arch/arm/gen
Module Name:src Committed By: he Date: Wed Mar 21 20:04:57 UTC 2012 Modified Files: src/lib/libc/arch/arm/gen: flt_rounds.c Log Message: Use c89 function declaration. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/lib/libc/arch/arm/gen/flt_rounds.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/arch/arm/gen/flt_rounds.c diff -u src/lib/libc/arch/arm/gen/flt_rounds.c:1.3 src/lib/libc/arch/arm/gen/flt_rounds.c:1.4 --- src/lib/libc/arch/arm/gen/flt_rounds.c:1.3 Sat Feb 25 00:58:35 2006 +++ src/lib/libc/arch/arm/gen/flt_rounds.c Wed Mar 21 20:04:57 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: flt_rounds.c,v 1.3 2006/02/25 00:58:35 wiz Exp $ */ +/* $NetBSD: flt_rounds.c,v 1.4 2012/03/21 20:04:57 he Exp $ */ /* * Copyright (c) 1996 Mark Brinicombe @@ -33,7 +33,7 @@ #include sys/cdefs.h #if defined(LIBC_SCCS) !defined(lint) -__RCSID($NetBSD: flt_rounds.c,v 1.3 2006/02/25 00:58:35 wiz Exp $); +__RCSID($NetBSD: flt_rounds.c,v 1.4 2012/03/21 20:04:57 he Exp $); #endif /* LIBC_SCCS and not lint */ #include sys/types.h @@ -75,7 +75,7 @@ static const int map[] = { int __flt_rounds(void); int -__flt_rounds() +__flt_rounds(void) { return(map[fpgetround()]); }