From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8941 invoked by alias); 21 Apr 2002 05:48:17 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 8932 invoked from network); 21 Apr 2002 05:48:16 -0000 Received: from unknown (HELO localhost.redhat.com) (24.112.240.27) by sources.redhat.com with SMTP; 21 Apr 2002 05:48:16 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 508393D1A; Sun, 21 Apr 2002 01:48:14 -0400 (EDT) Message-ID: <3CC2529E.9040900@cygnus.com> Date: Sat, 20 Apr 2002 22:48:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:0.9.9) Gecko/20020328 X-Accept-Language: en-us, en MIME-Version: 1.0 To: thorpej@wasabisystems.com Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH/RFC] Get Alpha target to GDB_MULTI_ARCH_PARTIAL References: <20020420095435.T1627@dr-evil.shagadelic.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-04/txt/msg00721.txt.bz2 Jason, This and the fallout it causes can go in separatly. Note the tweak. > +++ alpha-tdep.h 19 Apr 2002 23:32:25 -0000 > @@ -0,0 +1,74 @@ > +/* Common target dependent code for GDB on Alpha systems. > + Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002 Free > + Software Foundation, Inc. > + > + This file is part of GDB. > + > + This program 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 of the License, or > + (at your option) any later version. > + > + This program 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 this program; if not, write to the Free Software > + Foundation, Inc., 59 Temple Place - Suite 330, > + Boston, MA 02111-1307, USA. */ #ifndef ... #define ... You could also consider making much of this enum's (until the CPP stuff gets resolved). > +/* Say how long (ordinary) registers are. This is a piece of bogosity > + used in push_word and a few other places; REGISTER_RAW_SIZE is the > + real way to know how big a register is. */ > +#define ALPHA_REGISTER_SIZE 8 > + > +/* Number of machine registers. */ > +#define ALPHA_NUM_REGS 66 > + > +/* Total amount of space needed to store our copies of the machine's > + register state. */ > +#define ALPHA_REGISTER_BYTES (ALPHA_NUM_REGS * 8) > + > +/* Largest value REGISTER_RAW_SIZE can have. */ > +#define ALPHA_MAX_REGISTER_RAW_SIZE 8 > + > +/* Largest value REGISTER_VIRTUAL_SIZE can have. */ > +#define ALPHA_MAX_REGISTER_VIRTUAL_SIZE 8 > + > +/* Register numbers of various important registers. > + Note that most of these values are "real" register numbers, > + and correspond to the general registers of the machine, > + and FP_REGNUM is a "phony" register number which is too large > + to be an actual register number as far as the user is concerned > + but serves to get the desired value when passed to read_register. */ > + > +#define ALPHA_V0_REGNUM 0 /* Function integer return value */ > +#define ALPHA_T7_REGNUM 8 /* Return address register for OSF/1 __add* */ > +#define ALPHA_GCC_FP_REGNUM 15 /* Used by gcc as frame register */ > +#define ALPHA_A0_REGNUM 16 /* Loc of first arg during a subr call */ > +#define ALPHA_T9_REGNUM 23 /* Return address register for OSF/1 __div* */ > +#define ALPHA_T12_REGNUM 27 /* Contains start addr of current proc */ > +#define ALPHA_SP_REGNUM 30 /* Contains address of top of stack */ > +#define ALPHA_RA_REGNUM 26 /* Contains return address value */ > +#define ALPHA_ZERO_REGNUM 31 /* Read-only register, always 0 */ > +#define ALPHA_FP0_REGNUM 32 /* Floating point register 0 */ > +#define ALPHA_FPA0_REGNUM 48 /* First float arg during a subr call */ > +#define ALPHA_FPCR_REGNUM 63 /* Floating point control register */ > +#define ALPHA_PC_REGNUM 64 /* Contains program counter */ > +#define ALPHA_FP_REGNUM 65 /* Virtual frame pointer */ > + > +/* The alpha has two different virtual pointers for arguments and locals. > + > + The virtual argument pointer is pointing to the bottom of the argument > + transfer area, which is located immediately below the virtual frame > + pointer. Its size is fixed for the native compiler, it is either zero > + (for the no arguments case) or large enough to hold all argument registers. > + gcc uses a variable sized argument transfer area. As it has > + to stay compatible with the native debugging tools it has to use the same > + virtual argument pointer and adjust the argument offsets accordingly. > + > + The virtual local pointer is localoff bytes below the virtual frame > + pointer, the value of localoff is obtained from the PDR. */ > +#define ALPHA_NUM_ARG_REGS 6 Andrew