Module Name: src
Committed By: matt
Date: Wed Nov 28 02:21:41 UTC 2012
Modified Files:
src/lib/libc/arch/arm [matt-nb6-plus]: Makefile.inc
src/lib/libc/arch/arm/gen [matt-nb6-plus]: _lwp.c makecontext.c
swapcontext.S
Added Files:
src/lib/libc/arch/arm [matt-nb6-plus]: genassym.cf
Log Message:
Pullup EABI changes.
To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.10.4.1 src/lib/libc/arch/arm/Makefile.inc
cvs rdiff -u -r0 -r1.1.6.2 src/lib/libc/arch/arm/genassym.cf
cvs rdiff -u -r1.5 -r1.5.8.1 src/lib/libc/arch/arm/gen/_lwp.c
cvs rdiff -u -r1.3 -r1.3.26.1 src/lib/libc/arch/arm/gen/makecontext.c
cvs rdiff -u -r1.5.26.1 -r1.5.26.2 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/Makefile.inc
diff -u src/lib/libc/arch/arm/Makefile.inc:1.10 src/lib/libc/arch/arm/Makefile.inc:1.10.4.1
--- src/lib/libc/arch/arm/Makefile.inc:1.10 Fri Nov 18 16:10:02 2011
+++ src/lib/libc/arch/arm/Makefile.inc Wed Nov 28 02:21:41 2012
@@ -1,10 +1,11 @@
-# $NetBSD: Makefile.inc,v 1.10 2011/11/18 16:10:02 joerg Exp $
+# $NetBSD: Makefile.inc,v 1.10.4.1 2012/11/28 02:21:41 matt Exp $
.include <bsd.own.mk>
SRCS+= __aeabi_read_tp.S __sigaction14_sigtramp.c __sigtramp2.S
-CPPFLAGS += -DSOFTFLOAT
+CPPFLAGS += -I.
+CPPFLAGS += -DSOFTFLOAT -I.
SOFTFLOAT_BITS=32
.include <softfloat/Makefile.inc>
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.5.8.1
--- 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 Nov 28 02:21:41 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: _lwp.c,v 1.5 2011/02/24 04:28:41 joerg Exp $ */
+/* $NetBSD: _lwp.c,v 1.5.8.1 2012/11/28 02:21:41 matt 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.5.8.1 2012/11/28 02:21:41 matt Exp $");
#endif /* LIBC_SCCS and not lint */
#include "namespace.h"
@@ -50,7 +50,7 @@ void
_lwp_makecontext(ucontext_t *u, void (*start)(void *),
void *arg, void *private, caddr_t stack_base, size_t stack_size)
{
- void **sp;
+ uintptr_t sp;
getcontext(u);
u->uc_link = NULL;
@@ -58,16 +58,15 @@ _lwp_makecontext(ucontext_t *u, void (*s
u->uc_stack.ss_sp = stack_base;
u->uc_stack.ss_size = stack_size;
- sp = (void **) (stack_base + stack_size);
-
+ sp = (uintptr_t)stack_base + stack_size;
/*
* Note: We make sure the stack is 8-byte aligned, here.
*/
- u->uc_mcontext.__gregs[_REG_R0] = (__greg_t) arg;
- u->uc_mcontext.__gregs[_REG_SP] = ((__greg_t) sp) & ~7;
- u->uc_mcontext.__gregs[_REG_LR] = (__greg_t) _lwp_exit;
- u->uc_mcontext.__gregs[_REG_PC] = (__greg_t) start;
- 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)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.3.26.1
--- src/lib/libc/arch/arm/gen/makecontext.c:1.3 Mon Apr 28 20:22:55 2008
+++ src/lib/libc/arch/arm/gen/makecontext.c Wed Nov 28 02:21:41 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: makecontext.c,v 1.3 2008/04/28 20:22:55 martin Exp $ */
+/* $NetBSD: makecontext.c,v 1.3.26.1 2012/11/28 02:21:41 matt 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.3.26.1 2012/11/28 02:21:41 matt 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. */
Index: src/lib/libc/arch/arm/gen/swapcontext.S
diff -u src/lib/libc/arch/arm/gen/swapcontext.S:1.5.26.1 src/lib/libc/arch/arm/gen/swapcontext.S:1.5.26.2
--- src/lib/libc/arch/arm/gen/swapcontext.S:1.5.26.1 Thu Nov 1 16:44:57 2012
+++ src/lib/libc/arch/arm/gen/swapcontext.S Wed Nov 28 02:21:41 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: swapcontext.S,v 1.5.26.1 2012/11/01 16:44:57 matt Exp $ */
+/* $NetBSD: swapcontext.S,v 1.5.26.2 2012/11/28 02:21:41 matt Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -30,19 +30,22 @@
*/
#include "SYS.h"
+#include "assym.h"
#if defined(LIBC_SCCS) && !defined(lint)
- RCSID("$NetBSD: swapcontext.S,v 1.5.26.1 2012/11/01 16:44:57 matt Exp $")
+ RCSID("$NetBSD: swapcontext.S,v 1.5.26.2 2012/11/28 02:21:41 matt Exp $")
#endif /* LIBC_SCCS && !lint */
ENTRY(swapcontext)
stmfd sp!, {r0-r1, lr} /* Must save oucp, ucp, lr. */
+ sub sp, sp, #4
bl PIC_SYM(_C_LABEL(_getcontext), PLT) /* getcontext(oucp) */
cmp r0, #0
+ add sp, 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. */
+ str sp, [r0, #_UC_REGS_SP] /* Adjust saved SP. */
+ str lr, [r0, #_UC_REGS_PC] /* Adjust saved PC. */
#ifdef SOFTFLOAT
/* Ahem. */
#endif
Added files:
Index: src/lib/libc/arch/arm/genassym.cf
diff -u /dev/null src/lib/libc/arch/arm/genassym.cf:1.1.6.2
--- /dev/null Wed Nov 28 02:21:42 2012
+++ src/lib/libc/arch/arm/genassym.cf Wed Nov 28 02:21:41 2012
@@ -0,0 +1,36 @@
+# $NetBSD: genassym.cf,v 1.1.6.2 2012/11/28 02:21:41 matt Exp $
+
+#
+# Copyright (c) 2012 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Nick Hudson
+#
+# 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/types.h>
+include <ucontext.h>
+
+define _UC_REGS_SP offsetof(ucontext_t, uc_mcontext.__gregs[_REG_SP])
+define _UC_REGS_PC offsetof(ucontext_t, uc_mcontext.__gregs[_REG_PC])