From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12502 invoked by alias); 7 Nov 2007 16:09:14 -0000 Received: (qmail 12451 invoked by uid 22791); 7 Nov 2007 16:09:12 -0000 X-Spam-Status: No, hits=0.3 required=5.0 tests=AWL,BAYES_50,DATE_IN_PAST_48_96,DK_POLICY_SIGNSOME,DNS_FROM_RFC_ABUSE,SPF_PASS,UPPERCASE_25_50 X-Spam-Check-By: sourceware.org Received: from igw3.br.ibm.com (HELO igw3.br.ibm.com) (32.104.18.26) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 07 Nov 2007 16:09:05 +0000 Received: from mailhub1.br.ibm.com (unknown [9.18.232.109]) by igw3.br.ibm.com (Postfix) with ESMTP id 89237390263 for ; Wed, 7 Nov 2007 14:01:54 -0200 (BRDT) Received: from d24av02.br.ibm.com (d24av02.br.ibm.com [9.18.232.47]) by mailhub1.br.ibm.com (8.13.8/8.13.8/NCO v8.6) with ESMTP id lA7G8njk3076348 for ; Wed, 7 Nov 2007 14:08:58 -0200 Received: from d24av02.br.ibm.com (loopback [127.0.0.1]) by d24av02.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id lA7G8n2c015247 for ; Wed, 7 Nov 2007 14:08:49 -0200 Received: from [9.67.44.66] (wecm-9-67-44-66.wecm.ibm.com [9.67.44.66]) by d24av02.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id lA7G8k80015122 for ; Wed, 7 Nov 2007 14:08:47 -0200 Subject: Correcting Power64 registers (groups, construcor) From: Jose Flavio Aguilar Paulino To: Frysk Content-Type: multipart/mixed; boundary="=-Eq+N2+v/x0ycXXOhULSI" Date: Wed, 07 Nov 2007 16:09:00 -0000 Message-Id: <1194192473.25281.4.camel@kandinsky.prado> Mime-Version: 1.0 X-Mailer: Evolution 2.8.2 X-Virus-Checked: Checked by ClamAV on sourceware.org Mailing-List: contact frysk-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-owner@sourceware.org X-SW-Source: 2007-q4/txt/msg00116.txt.bz2 --=-Eq+N2+v/x0ycXXOhULSI Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 137 -- Jose Flavio Aguilar Paulino (jflavio@br.ibm.com) System / Software Engineer Toolchain Team LTC, Linux Technology Center IBM Brazil --=-Eq+N2+v/x0ycXXOhULSI Content-Disposition: attachment; filename=frysk_isa2_power64 Content-Type: text/x-patch; name=frysk_isa2_power64; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 4298 Index: frysk/frysk-core/frysk/isa/PPC64Registers.java =================================================================== --- frysk.orig/frysk-core/frysk/isa/PPC64Registers.java +++ frysk/frysk-core/frysk/isa/PPC64Registers.java @@ -173,9 +173,88 @@ public class PPC64Registers extends Regi public static final Register FPR31 = new Register("fpr31", StandardTypes.FLOAT64B_T); + /* Special Registers */ + public static final Register LR + = new Register("lr", StandardTypes.VOIDPTR64B_T); + public static final Register CTR + = new Register("ctr", StandardTypes.INT64B_T); + public static final Register ARG + = new Register("arg", StandardTypes.INT64B_T); + public static final Register CR + = new Register("cr", StandardTypes.INT64B_T); + public static final Register XER + = new Register("xer", StandardTypes.INT64B_T); + + /* Alti-vec special register */ + public static final Register VRSAVE + = new Register("vrsave", StandardTypes.INT64B_T); + public static final Register VSCR + = new Register("vscr", StandardTypes.INT64B_T); + + /* SPUs special registers (for CELL processors) */ + public static final Register SPEACC + = new Register("speacc", StandardTypes.INT64B_T); + public static final Register SPEFSCR + = new Register("spefscr", StandardTypes.INT64B_T); + + /* Frame-Pointer */ + public static final Register FRP + = new Register("frp", StandardTypes.VOIDPTR64B_T); + + /* Next-Instruction Pointer (Program Pointer) */ public static final Register NIP = new Register("nip", StandardTypes.VOIDPTR64B_T); + /* + * Defining Register Groups + */ + public static final RegisterGroup GENERAL + = new RegisterGroup("general", + new Register[] { + GPR0 , GPR1 , GPR2 , GPR3 , GPR4 , GPR5 , GPR6 , GPR7 , GPR8 , GPR9 , + GPR10, GPR11, GPR12, GPR13, GPR14, GPR15, GPR16, GPR17, GPR18, GPR19, + GPR20, GPR21, GPR22, GPR23, GPR24, GPR25, GPR26, GPR27, GPR28, GPR29, + GPR30, GPR31 }); + + public static final RegisterGroup SPECIAL + = new RegisterGroup("special", + new Register[] { LR, CTR, ARG, CR, XER, + VRSAVE, VSCR, SPEACC, SPEFSCR, + FRP, NIP }); + + public static final RegisterGroup FLOATING_POINTER + = new RegisterGroup("floatingpointer", + new Register[] { + FPR0 , FPR1 , FPR2 , FPR3 , FPR4 , FPR5 , FPR6 , FPR7 , FPR8 , FPR9 , + FPR10, FPR11, FPR12, FPR13, FPR14, FPR15, FPR16, FPR17, FPR18, FPR19, + FPR20, FPR21, FPR22, FPR23, FPR24, FPR25, FPR26, FPR27, FPR28, FPR29, + FPR30, FPR31 }); + + /* + * Creating the special ALL group + */ + public static final RegisterGroup ALL; + static { + Register[] allRegs = new Register[ + GENERAL.getRegisters().length + + SPECIAL.getRegisters().length + + FLOATING_POINTER.getRegisters().length]; + + System.arraycopy(GENERAL.getRegisters(), 0, + allRegs, 0, + GENERAL.getRegisters().length); + + System.arraycopy(SPECIAL.getRegisters(), 0, + allRegs, GENERAL.getRegisters().length, + SPECIAL.getRegisters().length); + + System.arraycopy(FLOATING_POINTER.getRegisters(), 0, + allRegs, GENERAL.getRegisters().length + SPECIAL.getRegisters().length, + FLOATING_POINTER.getRegisters().length); + + ALL = new RegisterGroup("all", allRegs); + } + public Register getProgramCounter() { return NIP; } @@ -185,17 +264,17 @@ public class PPC64Registers extends Regi } public RegisterGroup getDefaultRegisterGroup() { - // FIXME! - return null; + return GENERAL; } public RegisterGroup getAllRegistersGroup() { - // FIXME! - return null; + return ALL; } + /* + * Default Constructor + */ PPC64Registers() { - // FIXME! - super(null); + super(new RegisterGroup[] { GENERAL, SPECIAL, FLOATING_POINTER, ALL }); } } --=-Eq+N2+v/x0ycXXOhULSI--