From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32730 invoked by alias); 4 May 2004 01:14:56 -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 32708 invoked from network); 4 May 2004 01:14:54 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 4 May 2004 01:14:54 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.10/8.12.10) with ESMTP id i441EskG028354 for ; Mon, 3 May 2004 21:14:54 -0400 Received: from zenia.home.redhat.com (porkchop.devel.redhat.com [172.16.58.2]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i441Eqv26715; Mon, 3 May 2004 21:14:52 -0400 To: gdb-patches@sources.redhat.com Subject: RFA: don't assume gprs, fprs, some SPRS are contiguous From: Jim Blandy Date: Tue, 04 May 2004 01:14:00 -0000 Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2004-05/txt/msg00086.txt.bz2 Here's a revision of a patch I posted previously, in light of the other patches I've posted today. 2004-04-20 Jim Blandy * ppc-linux-nat.c (fetch_ppc_registers, store_ppc_registers): Don't assume that the gprs, fprs, and UISA sprs are contiguous, start at register number zero, and end with fpscr. Instead, use the numbers from the tdep structure, FP0_REGNUM, and FPLAST_REGNUM. *** gdb/ppc-linux-nat.c 2004-05-03 18:50:56.000000000 -0500 --- gdb/ppc-linux-nat.c 2004-05-03 19:00:50.000000000 -0500 *************** *** 311,320 **** int i; struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); ! for (i = 0; i <= tdep->ppc_fpscr_regnum; i++) ! fetch_register (tid, i); if (tdep->ppc_mq_regnum != -1) fetch_register (tid, tdep->ppc_mq_regnum); if (have_ptrace_getvrregs) if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1) fetch_altivec_registers (tid); --- 311,336 ---- int i; struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); ! for (i = 0; i < ppc_num_gprs; i++) ! fetch_register (tid, tdep->ppc_gp0_regnum + i); ! if (FP0_REGNUM >= 0) ! for (i = 0; i < ppc_num_fprs; i++) ! fetch_register (tid, FP0_REGNUM + i); ! fetch_register (tid, PC_REGNUM); ! if (tdep->ppc_ps_regnum != -1) ! fetch_register (tid, tdep->ppc_ps_regnum); ! if (tdep->ppc_cr_regnum != -1) ! fetch_register (tid, tdep->ppc_cr_regnum); ! if (tdep->ppc_lr_regnum != -1) ! fetch_register (tid, tdep->ppc_lr_regnum); ! if (tdep->ppc_ctr_regnum != -1) ! fetch_register (tid, tdep->ppc_ctr_regnum); ! if (tdep->ppc_xer_regnum != -1) ! fetch_register (tid, tdep->ppc_xer_regnum); if (tdep->ppc_mq_regnum != -1) fetch_register (tid, tdep->ppc_mq_regnum); + if (tdep->ppc_fpscr_regnum != -1) + fetch_register (tid, tdep->ppc_fpscr_regnum); if (have_ptrace_getvrregs) if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1) fetch_altivec_registers (tid); *************** *** 480,489 **** int i; struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); ! for (i = 0; i <= tdep->ppc_fpscr_regnum; i++) ! store_register (tid, i); if (tdep->ppc_mq_regnum != -1) store_register (tid, tdep->ppc_mq_regnum); if (have_ptrace_getvrregs) if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1) store_altivec_registers (tid); --- 496,521 ---- int i; struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); ! for (i = 0; i < ppc_num_gprs; i++) ! store_register (tid, tdep->ppc_gp0_regnum + i); ! if (FP0_REGNUM >= 0) ! for (i = 0; i < ppc_num_fprs; i++) ! store_register (tid, FP0_REGNUM + i); ! store_register (tid, PC_REGNUM); ! if (tdep->ppc_ps_regnum != -1) ! store_register (tid, tdep->ppc_ps_regnum); ! if (tdep->ppc_cr_regnum != -1) ! store_register (tid, tdep->ppc_cr_regnum); ! if (tdep->ppc_lr_regnum != -1) ! store_register (tid, tdep->ppc_lr_regnum); ! if (tdep->ppc_ctr_regnum != -1) ! store_register (tid, tdep->ppc_ctr_regnum); ! if (tdep->ppc_xer_regnum != -1) ! store_register (tid, tdep->ppc_xer_regnum); if (tdep->ppc_mq_regnum != -1) store_register (tid, tdep->ppc_mq_regnum); + if (tdep->ppc_fpscr_regnum != -1) + store_register (tid, tdep->ppc_fpscr_regnum); if (have_ptrace_getvrregs) if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1) store_altivec_registers (tid);