NetBSD Problem Report #43009

From www@NetBSD.org  Fri Mar 19 11:29:12 2010
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id DD14C63C49E
	for <gnats-bugs@gnats.NetBSD.org>; Fri, 19 Mar 2010 11:29:12 +0000 (UTC)
Message-Id: <20100319112912.9C3C963B11D@www.NetBSD.org>
Date: Fri, 19 Mar 2010 11:29:12 +0000 (UTC)
From: dennis.c.ferguson@gmail.com
Reply-To: dennis.c.ferguson@gmail.com
To: gnats-bugs@NetBSD.org
Subject: lib/libc/arch/powerpc64/gen/__sigsetjmp14.S uses lmd/stmd macros
X-Send-Pr-Version: www-1.0

>Number:         43009
>Category:       port-powerpc
>Synopsis:       lib/libc/arch/powerpc64/gen/__sigsetjmp14.S uses lmd/stmd macros
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    mrg
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Mar 19 11:30:00 +0000 2010
>Closed-Date:    Mon Mar 22 01:39:51 +0000 2010
>Last-Modified:  Mon Mar 22 01:40:01 +0000 2010
>Originator:     Dennis Ferguson
>Release:        very recent 5.99.24
>Organization:
>Environment:
NetBSD acer.hk.akit-ferguson.com 5.99.24 NetBSD 5.99.24 (GENERIC) #0: Sun Mar 14 17:25:30 HKT 2010  dennis@acer.hk.akit-ferguson.com:/usr/obj/sys/arch/amd64/compile/GENERIC amd64
>Description:
I've been working through problems building with the
current powerpc64 support by doing macppc64 builds and
attempting to repair what I find.  When it attempts to
assemble lib/libc/arch/powerpc64/gen/__sigsetjmp14.S it
gets this:

#   compile  libc/__sigsetjmp14.o
/usr/src/obj/tooldir.Darwin-10.2.0-i386/bin/powerpc64--netbsd-gcc  -I/usr/src/lib/libc/arch/powerpc64 -nostdinc -idirafter /usr/src/obj/destdir.macppc/usr/include  -fstack-protector -Wstack-protector --param ssp-buffer-size=1  -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCCS -D_REENTRANT -DHESIOD -DINET6 -DNLS -DYP -I/usr/src/lib/libc/include -I/usr/src/lib/libc -I/usr/src/sys -I/usr/src/lib/libc/compat/stdlib -I/usr/src/lib/libc/compat/../stdlib -I/usr/src/lib/libc/../../common/lib/libc/quad -I/usr/src/lib/libc/../../common/lib/libc/string -I/usr/src/lib/libc/../../common/lib/libc/arch/powerpc64/string -D__DBINTERFACE_PRIVATE -I/usr/src/libexec/ld.elf_so -I/usr/src/lib/libc/dlfcn -I/usr/src/lib/libc/gdtoa -DNO_FENV_H -I/usr/src/lib/libc/arch/powerpc64/gdtoa -DWITH_RUNE -I/usr/src/lib/libc -DPOSIX_MISTAKE -DCOMPAT__RES -DUSE_POLL -DPORTMAP -DWIDE_DOUBLE -DALL_STATE -DUSG_COMPAT  -D_FORTIFY_SOURCE=2 -nostdinc -isystem /usr/src/obj/destdir.macppc/usr/include -c -traditional-cpp    /usr/src/l
 ib/libc/arch/powerpc64/gen/__sigsetjmp14.S -o __sigsetjmp14.o
/usr/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S: Assembler messages:
/usr/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:25: Error: Unrecognized opcode: `stmd'
/usr/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:30: Error: Unrecognized opcode: `lmd'

*** Failed target:  __sigsetjmp14.o

stmd and lmd are macros which are defined in the kernel environment
(i.e. #ifdef _KERNEL) only.
>How-To-Repeat:
Do a:

    MACHINE=macppc64 ./build.sh distribution
>Fix:
Replace them with equivalent code.  Both __setjmp14.S and
_setjmp.S had the same problem at some point, and were fixed
by different people at different times in different ways.  This
patch attempts to fix __sigsetjmp14.S in a manner equivalent
to _setjmp.S:

Index: __sigsetjmp14.S
===================================================================
RCS file: /cvsroot/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S,v
retrieving revision 1.1
diff -u -r1.1 __sigsetjmp14.S
--- __sigsetjmp14.S	7 Jul 2006 21:07:35 -0000	1.1
+++ __sigsetjmp14.S	19 Mar 2010 09:10:01 -0000
@@ -22,12 +22,20 @@
 	mfcr	%r12
 	mr	%r10,%r1
 	mr	%r9,%r2
-	stmd	7, 0(%r6)		# save r7-r31
+	i = 0
+	.rept	32-7
+	std	7+i,i*8(%r6)		# save r7-r31
+	i = i + 1
+	.endr
 	li	%r3,0
 	blr

 ENTRY(__siglongjmp14)
-	lmd	7,0(%r3)		# load r7-r31
+	i = 0
+	.rept	32-7
+	ld	7+i,i*8(%r3)		# load r7-r31
+	i = i + 1
+	.endr
 	mr	%r6,%r4
 	mtlr	%r11
 	mtcr	%r12

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: port-powerpc-maintainer->mrg
Responsible-Changed-By: mrg@NetBSD.org
Responsible-Changed-When: Sun, 21 Mar 2010 23:41:45 +0000
Responsible-Changed-Why:
i'll merge this in


State-Changed-From-To: open->closed
State-Changed-By: mrg@NetBSD.org
State-Changed-When: Mon, 22 Mar 2010 01:39:51 +0000
State-Changed-Why:
patched submitted.  thanks!  this one had already been a problem with attempting
to update GCC files, i just commented those calls to make it "assemble".


From: matthew green <mrg@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/43009 CVS commit: src/lib/libc/arch/powerpc64/gen
Date: Mon, 22 Mar 2010 01:39:12 +0000

 Module Name:	src
 Committed By:	mrg
 Date:		Mon Mar 22 01:39:11 UTC 2010

 Modified Files:
 	src/lib/libc/arch/powerpc64/gen: __sigsetjmp14.S

 Log Message:
 replace kernel-only 'stmd' and 'lmd' operations in userland with equivalent
 sequences of code, as done in eg, powerpc64/gen/_setjmp.S rev 1.2.

 from dennis.c.ferguson@gmail.com in PR#43009.


 To generate a diff of this commit:
 cvs rdiff -u -r1.1 -r1.2 src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.