Mercurial > hg > graal-jvmci-8
diff agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegisters.java @ 0:a61af66fc99e jdk7-b24
Initial load
author | duke |
---|---|
date | Sat, 01 Dec 2007 00:00:00 +0000 |
parents | |
children | c18cbe5936b8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegisters.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,189 @@ +/* + * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package sun.jvm.hotspot.asm.sparc; + +import sun.jvm.hotspot.utilities.*; + +public class SPARCRegisters { + + public static final SPARCRegister G0; + public static final SPARCRegister G1; + public static final SPARCRegister G2; + public static final SPARCRegister G3; + public static final SPARCRegister G4; + public static final SPARCRegister G5; + public static final SPARCRegister G6; + public static final SPARCRegister G7; + public static final SPARCRegister O0; + public static final SPARCRegister O1; + public static final SPARCRegister O2; + public static final SPARCRegister O3; + public static final SPARCRegister O4; + public static final SPARCRegister O5; + public static final SPARCRegister O6; + public static final SPARCRegister O7; + public static final SPARCRegister L0; + public static final SPARCRegister L1; + public static final SPARCRegister L2; + public static final SPARCRegister L3; + public static final SPARCRegister L4; + public static final SPARCRegister L5; + public static final SPARCRegister L6; + public static final SPARCRegister L7; + public static final SPARCRegister I0; + public static final SPARCRegister I1; + public static final SPARCRegister I2; + public static final SPARCRegister I3; + public static final SPARCRegister I4; + public static final SPARCRegister I5; + public static final SPARCRegister I6; + public static final SPARCRegister I7; + + private static String registerNames[]; + public static final int NUM_REGISTERS = 32; + private static SPARCRegister registers[]; + + static { + G0 = new SPARCRegister(0); + G1 = new SPARCRegister(1); + G2 = new SPARCRegister(2); + G3 = new SPARCRegister(3); + G4 = new SPARCRegister(4); + G5 = new SPARCRegister(5); + G6 = new SPARCRegister(6); + G7 = new SPARCRegister(7); + O0 = new SPARCRegister(8); + O1 = new SPARCRegister(9); + O2 = new SPARCRegister(10); + O3 = new SPARCRegister(11); + O4 = new SPARCRegister(12); + O5 = new SPARCRegister(13); + O6 = new SPARCRegister(14); + O7 = new SPARCRegister(15); + L0 = new SPARCRegister(16); + L1 = new SPARCRegister(17); + L2 = new SPARCRegister(18); + L3 = new SPARCRegister(19); + L4 = new SPARCRegister(20); + L5 = new SPARCRegister(21); + L6 = new SPARCRegister(22); + L7 = new SPARCRegister(23); + I0 = new SPARCRegister(24); + I1 = new SPARCRegister(25); + I2 = new SPARCRegister(26); + I3 = new SPARCRegister(27); + I4 = new SPARCRegister(28); + I5 = new SPARCRegister(29); + I6 = new SPARCRegister(30); + I7 = new SPARCRegister(31); + registerNames = new String[NUM_REGISTERS]; + registerNames[G0.getNumber()] = "%g0"; + registerNames[G1.getNumber()] = "%g1"; + registerNames[G2.getNumber()] = "%g2"; + registerNames[G3.getNumber()] = "%g3"; + registerNames[G4.getNumber()] = "%g4"; + registerNames[G5.getNumber()] = "%g5"; + registerNames[G6.getNumber()] = "%g6"; + registerNames[G7.getNumber()] = "%g7"; + registerNames[O0.getNumber()] = "%o0"; + registerNames[O1.getNumber()] = "%o1"; + registerNames[O2.getNumber()] = "%o2"; + registerNames[O3.getNumber()] = "%o3"; + registerNames[O4.getNumber()] = "%o4"; + registerNames[O5.getNumber()] = "%o5"; + registerNames[O6.getNumber()] = "%sp"; + registerNames[O7.getNumber()] = "%o7"; + registerNames[I0.getNumber()] = "%i0"; + registerNames[I1.getNumber()] = "%i1"; + registerNames[I2.getNumber()] = "%i2"; + registerNames[I3.getNumber()] = "%i3"; + registerNames[I4.getNumber()] = "%i4"; + registerNames[I5.getNumber()] = "%i5"; + registerNames[I6.getNumber()] = "%fp"; + registerNames[I7.getNumber()] = "%i7"; + registerNames[L0.getNumber()] = "%l0"; + registerNames[L1.getNumber()] = "%l1"; + registerNames[L2.getNumber()] = "%l2"; + registerNames[L3.getNumber()] = "%l3"; + registerNames[L4.getNumber()] = "%l4"; + registerNames[L5.getNumber()] = "%l5"; + registerNames[L6.getNumber()] = "%l6"; + registerNames[L7.getNumber()] = "%l7"; + registers = (new SPARCRegister[] { + G0, G1, G2, G3, G4, G5, G6, G7, O0, O1, + O2, O3, O4, O5, O6, O7, L0, L1, L2, L3, + L4, L5, L6, L7, I0, I1, I2, I3, I4, I5, + I6, I7 + }); + } + + public static final SPARCRegister FP = I6; + public static final SPARCRegister SP = O6; + + // Interpreter frames + + public static final SPARCRegister Lesp = L0; // expression stack pointer + public static final SPARCRegister Lbcp = L1; // pointer to next bytecode + public static final SPARCRegister Lmethod = L2; + public static final SPARCRegister Llocals = L3; + public static final SPARCRegister Lmonitors = L4; + public static final SPARCRegister Lbyte_code = L5; + public static final SPARCRegister Lscratch = L5; + public static final SPARCRegister Lscratch2 = L6; + public static final SPARCRegister LcpoolCache = L6; // constant pool cache + + public static final SPARCRegister OparamAddr = O0; // Callers Parameter area address + public static final SPARCRegister IsavedSP = I5; // Saved SP before bumping for locals + public static final SPARCRegister IsizeCalleeParms = I4; // Saved size of Callee parms used to pop arguments + public static final SPARCRegister IdispatchAddress = I3; // Register which saves the dispatch address for each bytecode + public static final SPARCRegister IdispatchTables = I2; // Base address of the bytecode dispatch tables + + + /** Prefer to use this instead of the constant above */ + public static int getNumRegisters() { + return NUM_REGISTERS; + } + + + public static String getRegisterName(int regNum) { + if (regNum < 0 || regNum >= NUM_REGISTERS) { + return "[Illegal register " + regNum + "]"; + } + + if (Assert.ASSERTS_ENABLED) { + Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!"); + } + + return registerNames[regNum]; + } + + public static SPARCRegister getRegister(int regNum) { + if (Assert.ASSERTS_ENABLED) { + Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!"); + } + + return registers[regNum]; + } +}