From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Klein To: law@cygnus.com Cc: gcc@gcc.gnu.org Subject: Re: MPE Port Date: Thu, 30 Sep 1999 18:02:00 -0000 Message-ID: <4.1.19990906102604.00c75df0@garfield.dis.com> X-SW-Source: 1999-09n/msg00185.html Message-ID: <19990930180200.fKqNThOw1WJSDsPvj-8woJVdSidj79zc-kdppt8ZJjQ@z> Explanation: Handle certain MPE nuances such as bcopy() not being able to do overlapped moves. Invoke millicode instead of bcopy(). Sat Sep 4 18:00:00 PDT 1999 Mark Klein (mklein@dis.com) * pa/xm-pampeix.h: New file for the MPE port. *** egcs/gcc/config/pa/xm-pampeix.h Wed Dec 31 16:00:00 1969 --- egcs-ss/gcc/config/pa/xm-pampeix.h Mon Aug 30 21:52:06 1999 *************** *** 0 **** --- 1,109 ---- + /* Configuration for GNU C-compiler for PA-RISC. + Copyright (C) 1998 Free Software Foundation, Inc. + Contributed by Mark Klein (mklein@dis.com) + + This file is part of GNU CC. + + GNU CC is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GNU CC is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU CC; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + + #ifndef _POSIX_SOURCE + #define _POSIX_SOURCE + #endif + + #define USG + + /* Use System V memory functions. */ + #ifndef _BCMP_DEFINED + #define _BCMP_DEFINED + #ifndef BSTRING + #define BSTRING + #endif + #if !defined(bcopy) && !defined(HAS_BCOPY) + inline static void + bcopy(const void *src,void *dst,int len) { + asm volatile ( + ".import $$lr_unk_unk,MILLICODE; + copy %0, %%r26; + copy %1, %%r25; + bl $$lr_unk_unk,%%r31; + copy %2, %%r24" + : + : "r" (src), + "r" (dst), + "r" (len) + : "%r24", + "%r25", + "%r26", + "%r31"); + } + #endif + #if !defined(bzero) && !defined(HAS_BZERO) + #define bzero(a,b) memset (a,0,b) + #endif + #if !defined(bcmp) && !defined(HAS_BCMP) + #define bcmp(a,b,c) memcmp (a,b,c) + #endif + #endif + + #if !defined(rindex) && !defined(HAS_RINDEX) + #define rindex strrchr + #endif + #if !defined(index) && !defined(HAS_INDEX) + #define index strchr + #endif + + /* #defines that need visibility everywhere. */ + #define FALSE 0 + #define TRUE 1 + + /* This describes the machine the compiler is hosted on. */ + #define HOST_BITS_PER_CHAR 8 + #define HOST_BITS_PER_SHORT 16 + #define HOST_BITS_PER_INT 32 + #define HOST_BITS_PER_LONG 32 + #define HOST_BITS_PER_LONGLONG 64 + + /* Doubles are stored in memory with the high order word first. This + matters when cross-compiling. */ + #define HOST_WORDS_BIG_ENDIAN 1 + + /* Place any machine-dependent include files here, in case we + are bootstrapping. */ + + /* target machine dependencies. + tm.h is a symbolic link to the actual target specific file. */ + #include "tm.h" + + /* Arguments to use with `exit'. */ + #define SUCCESS_EXIT_CODE 0 + #define FATAL_EXIT_CODE 33 + + /* Don't try to use sys_siglist. */ + #define NO_SYS_SIGLIST + + /* HP's compiler has problems with enum bitfields. */ + #define ONLY_INT_FIELDS + + #ifndef _MPEIX_SOURCE + #define _MPEIX_SOURCE + #endif + + /* If not compiled with GNU C, use C alloca. */ + #ifndef __GNUC__ + #define USE_C_ALLOCA + #endif + + #define STARTFILE_SPEC "" -- Mark Klein DIS International, Ltd. http://www.dis.com 415-892-8400 PGP Public Key Available