From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10724 invoked by alias); 29 May 2003 15:33:09 -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 10707 invoked from network); 29 May 2003 15:33:08 -0000 Received: from unknown (HELO crack.them.org) (146.82.138.56) by sources.redhat.com with SMTP; 29 May 2003 15:33:08 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 19LPPU-0003kb-00; Thu, 29 May 2003 10:33:44 -0500 Received: from drow by nevyn.them.org with local (Exim 3.36 #1 (Debian)) id 19LPOr-0002qX-00; Thu, 29 May 2003 11:33:05 -0400 Date: Thu, 29 May 2003 15:33:00 -0000 From: Daniel Jacobowitz To: Jim Blandy Cc: gdb-patches@sources.redhat.com Subject: Re: [ppc64-linux]: Support gdbserver on PPC64 Linux Message-ID: <20030529153304.GB10807@nevyn.them.org> Mail-Followup-To: Jim Blandy , gdb-patches@sources.redhat.com References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.1i X-SW-Source: 2003-05/txt/msg00542.txt.bz2 A couple of small comments. On Thu, May 29, 2003 at 01:39:54AM -0500, Jim Blandy wrote: > + /* GNU/Linux/PowerPC specific low level interface, for the remote server for > + GDB. Comment's out of date. > + Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002 So is the copyright year. > + 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. */ > + > + #include "server.h" > + #include "linux-low.h" > + > + #include > + > + #define ppc64_num_regs 71 > + > + #define FPR(n) ((PT_FPR0 + (n)) * 8) > + > + /* Currently, don't check/send MQ. */ > + static int ppc64_regmap[] = > + { > + PT_R0 * 8, PT_R1 * 8, PT_R2 * 8, PT_R3 * 8, > + PT_R4 * 8, PT_R5 * 8, PT_R6 * 8, PT_R7 * 8, > + PT_R8 * 8, PT_R9 * 8, PT_R10 * 8, PT_R11 * 8, > + PT_R12 * 8, PT_R13 * 8, PT_R14 * 8, PT_R15 * 8, > + PT_R16 * 8, PT_R17 * 8, PT_R18 * 8, PT_R19 * 8, > + PT_R20 * 8, PT_R21 * 8, PT_R22 * 8, PT_R23 * 8, > + PT_R24 * 8, PT_R25 * 8, PT_R26 * 8, PT_R27 * 8, > + PT_R28 * 8, PT_R29 * 8, PT_R30 * 8, PT_R31 * 8, > + FPR (0), FPR (1), FPR (2), FPR (3), > + FPR (4), FPR (5), FPR (6), FPR (7), > + FPR (8), FPR (9), FPR (10), FPR (11), > + FPR (12), FPR (13), FPR (14), FPR (15), > + FPR (16), FPR (17), FPR (18), FPR (19), > + FPR (20), FPR (21), FPR (22), FPR (23), > + FPR (24), FPR (25), FPR (26), FPR (27), > + FPR (28), FPR (29), FPR (30), FPR (31), > + PT_NIP * 8, PT_MSR * 8, PT_CCR * 8, PT_LNK * 8, > + PT_CTR * 8, PT_XER * 8, PT_FPSCR * 8, > + }; > + > + static int > + ppc64_cannot_store_register (int regno) > + { > + /* Some kernels do not allow us to store fpscr. */ > + if (regno == find_regno ("fpscr")) > + return 2; Could you please check whether this applies to any usable PowerPC64 kernel? > + > + return 0; > + } > + > + static int > + ppc64_cannot_fetch_register (int regno) > + { > + return 0; > + } > + > + static CORE_ADDR > + ppc64_get_pc (void) > + { > + unsigned long pc; > + > + collect_register_by_name ("pc", &pc); > + return (CORE_ADDR) pc; > + } > + > + static void > + ppc64_set_pc (CORE_ADDR pc) > + { > + unsigned long newpc = pc; > + > + supply_register_by_name ("pc", &newpc); > + } > + > + /* Correct in either endianness. Note that this file is > + for PowerPC only, not PowerPC64. > + This instruction is "twge r2, r2", which GDB uses as a software > + breakpoint. */ > + static const unsigned int ppc64_breakpoint = 0x7d821008; > + #define ppc64_breakpoint_len 4 The comment is definitely wrong. How about the breakpoint instruction? > + > + static int > + ppc64_breakpoint_at (CORE_ADDR where) > + { > + unsigned int insn; > + > + (*the_target->read_memory) (where, (char *) &insn, 4); > + if (insn == ppc64_breakpoint) > + return 1; > + /* If necessary, recognize more trap instructions here. GDB only uses the > + one. */ > + return 0; > + } > + > + struct linux_target_ops the_low_target = { > + ppc64_num_regs, > + ppc64_regmap, > + ppc64_cannot_fetch_register, > + ppc64_cannot_store_register, > + ppc64_get_pc, > + ppc64_set_pc, > + (const char *) &ppc64_breakpoint, > + ppc64_breakpoint_len, > + NULL, > + 0, > + ppc64_breakpoint_at, > + }; -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer