From 5b7f5d6f44d9ee73ba36b1507d929344bfb463a6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Love=20H=C3=B6rnquist-=C3=85strand?= Date: Wed, 24 Sep 2003 20:02:05 +0000 Subject: [PATCH] lwp-elf-bsd-and-assembly-cleanup-20030924 FIXES 2153 --- src/lwp/Makefile.in | 9 ++---- src/lwp/lwp.c | 3 +- src/lwp/lwp_elf.h | 62 ++++++++++++++++++++++++++++++++++++++++++ src/lwp/process.i386.s | 27 ++++++------------ 4 files changed, 74 insertions(+), 27 deletions(-) create mode 100644 src/lwp/lwp_elf.h diff --git a/src/lwp/Makefile.in b/src/lwp/Makefile.in index 1b107b977..cbefad018 100644 --- a/src/lwp/Makefile.in +++ b/src/lwp/Makefile.in @@ -47,15 +47,12 @@ process.o : process.s process.c $(RM) process.ss ;; \ ppc_darwin* ) \ $(CC) ${LWP_DBG} ${LWP_OPTMZ} -c ${XCFLAGS} -I${TOP_INCDIR} ${srcdir}/process.s;; \ - i386_obsd31 | i386_obsd32 | i386_obsd33 ) \ + i386_*bsd*) \ + echo foo ; \ cp ${srcdir}/process.i386.s process.S ; \ - ${CC} -E -I${TOP_INCDIR} process.S >process.ss ; \ + ${CC} -E -I${srcdir} -I${TOP_INCDIR} process.S >process.ss ; \ ${AS} process.ss -o process.o ; \ $(RM) -f process.S ;;\ - i386_*bsd* ) \ - /usr/bin/cpp -P -I${TOP_INCDIR} ${srcdir}/process.i386.s > process.ss; \ - ${AS} -o process.o process.ss; \ - $(RM) process.ss ;; \ ncrx86_* | sunx86_*) \ /usr/ccs/lib/cpp -P -I${TOP_INCDIR} ${srcdir}/process.i386.s process.ss; \ ${AS} -o process.o process.ss; \ diff --git a/src/lwp/lwp.c b/src/lwp/lwp.c index 69828d34d..742609213 100644 --- a/src/lwp/lwp.c +++ b/src/lwp/lwp.c @@ -17,8 +17,7 @@ #include #include -RCSID - ("$Header$"); +RCSID("$Header$"); #include #include diff --git a/src/lwp/lwp_elf.h b/src/lwp/lwp_elf.h new file mode 100644 index 000000000..fd8f8c5b0 --- /dev/null +++ b/src/lwp/lwp_elf.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2000-2002 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * 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. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE 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 INSTITUTE 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. + */ + +/* + * For common usage of elf platforms + * + * $Id$ + */ + +#ifndef _C_LABEL +#if !defined(SYSV) && !defined(__ELF__) && !defined(AFS_SUN5_ENV) +#ifdef __STDC__ +#define _C_LABEL(name) _##name +#else +#define _C_LABEL(name) _/**/name +#endif +#else /* SYSV || __ELF__ || AFS_SUN5_ENV */ +#define _C_LABEL(name) name +#endif +#endif /* _C_LABEL */ + +#ifndef ENTRY +#if !defined(SYSV) && !defined(__ELF__) && !defined(AFS_SUN5_ENV) +#ifdef __STDC__ +#define ENTRY(name) _##name##: +#else +#define ENTRY(name) _/**/name/**/: +#endif +#else /* SYSV || __ELF__ || AFS_SUN5_ENV */ +#define ENTRY(name) name: +#endif +#endif /* _C_LABEL */ diff --git a/src/lwp/process.i386.s b/src/lwp/process.i386.s index 105a11646..e5635f3f0 100644 --- a/src/lwp/process.i386.s +++ b/src/lwp/process.i386.s @@ -16,10 +16,7 @@ * "ojala que es correcto!" */ -#define IGNORE_STDS_H 1 -/*#ifndef AFS_DJGPP_ENV*/ -#include -/*#endif /* AFS_DJGPP_ENV */ +#include .file "process.s" @@ -45,22 +42,14 @@ .set area1,12 .set newsp,16 +.globl _C_LABEL(PRE_Block) +.globl _C_LABEL(savecontext) -#if defined(AFS_DJGPP_ENV) || (defined(AFS_OBSD_ENV) && !defined (AFS_OBSD34_ENV)) -#define PRE_Block _PRE_Block -#define savecontext _savecontext -#define abort _abort -#define returnto _returnto -#endif /* AFS_DJGPP_ENV */ - -.globl PRE_Block -.globl savecontext - -savecontext: +ENTRY(savecontext) pushl %ebp /* New Frame! */ movl %esp,%ebp pusha /* Push all registers */ - movl $1,PRE_Block /* Pre-emption code */ + movl $1,_C_LABEL(PRE_Block) /* Pre-emption code */ movl area1(%ebp),%eax /* eax = base of savearea */ movl %esp,(%eax) /* area->topstack = esp */ movl newsp(%ebp),%eax /* get new sp into eax */ @@ -82,15 +71,15 @@ L1: /* stack offset */ .set area2,8 -.globl returnto +.globl _C_LABEL(returnto) -returnto: +ENTRY(returnto) pushl %ebp movl %esp, %ebp /* New frame, to get correct pointer */ movl area2(%ebp),%eax /* eax = area2 */ movl (%eax),%esp /* restore esp */ popa - movl $0,PRE_Block /* clear it up... */ + movl $0,_C_LABEL(PRE_Block) /* clear it up... */ popl %ebp ret -- 2.39.5