diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java
--- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java
+++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanThread.java
@@ -310,7 +310,8 @@
}
/* If a thread started via createVM or attachVM, base may need scaning */
- checkJNIBase();
+ // TODO implement this if necessary. It was previously only implemented for
+ // AIX which is no longer supported.
if (verbosity >= 2) Log.writeln("--- End Of Stack Scan ---\n");
}
@@ -582,35 +583,6 @@
processCodeLocation(code, retaddrLoc);
}
-
- /**
- * AIX-specific code.
- *
- * If we are scanning the stack of a thread that entered the VM via
- * a createVM or attachVM then the "bottom" of the stack had native
- * C frames instead of the usual java frames. The JNIEnv for the
- * thread may still contain jniRefs that have been returned to the
- * native C code, but have not been reported for GC. calling
- * getNextReferenceAddress without first calling setup... will
- * report the remaining jniRefs in the current "frame" of the
- * jniRefs stack. (this should be the bottom frame)
- *
- * FIXME: SB: Why is this AIX specific? Why depend on the
- * preprocessor?
- *
- */
- private void checkJNIBase() {
- if (VM.BuildForAix) {
- GCMapIterator iterator = iteratorGroup.getJniIterator();
- Address refaddr = iterator.getNextReferenceAddress();
- while (!refaddr.isZero()) {
- reportDelayedRootEdge(trace, refaddr);
- refaddr = iterator.getNextReferenceAddress();
- }
- }
- }
-
-
/***********************************************************************
*
* Debugging etc
diff --git a/build.xml b/build.xml
--- a/build.xml
+++ b/build.xml
@@ -375,9 +375,6 @@
-
-
-
@@ -982,9 +979,6 @@
-
-
-
@@ -1032,7 +1026,6 @@
-
@@ -1775,7 +1768,6 @@
-
diff --git a/build/components/classpath.xml b/build/components/classpath.xml
--- a/build/components/classpath.xml
+++ b/build/components/classpath.xml
@@ -197,7 +197,6 @@
-
@@ -216,27 +215,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -254,14 +236,13 @@
64 bit system the libraries are created appropriately -->
-
-
+
@@ -278,9 +259,6 @@
-
-
-
diff --git a/build/components/harmony.xml b/build/components/harmony.xml
--- a/build/components/harmony.xml
+++ b/build/components/harmony.xml
@@ -138,9 +138,6 @@
-
-
-
diff --git a/build/hosts/ppc32-aix.properties b/build/hosts/ppc32-aix.properties
deleted file mode 100644
--- a/build/hosts/ppc32-aix.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# This file is part of the Jikes RVM project (http://jikesrvm.org).
-#
-# This file is licensed to You under the Eclipse Public License (EPL);
-# You may not use this file except in compliance with the License. You
-# may obtain a copy of the License at
-#
-# http://www.opensource.org/licenses/eclipse-1.0.php
-#
-# See the COPYRIGHT.txt file distributed with this work for information
-# regarding copyright ownership.
-#
-bison.exe=/usr/bin/bison
-c++.exe=/usr/gnu/bin/g++
-c++.args=-w -O -pthread -Wa,-mppc
-c.exe=/usr/gnu/bin/gcc
-c.args=${c++.args}
-cpp.exe=/usr/gnu/bin/gcc
-cpp.args=-E
-shld.args=${c++.args} -shared
-perl.exe=/usr/bin/perl
-bash.exe=/bin/bash
-
-# optional unless downloading and installing classpath or gcspy
-make.exe=/usr/gnu/bin/make
-
-# optional unless downloading and installing classpath
-tar.exe=/usr/gnu/bin/tar
-git.exe=/usr/bin/git
-autoconf.exe=/usr/bin/autoconf
diff --git a/build/hosts/ppc64-aix.properties b/build/hosts/ppc64-aix.properties
deleted file mode 100644
--- a/build/hosts/ppc64-aix.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# This file is part of the Jikes RVM project (http://jikesrvm.org).
-#
-# This file is licensed to You under the Eclipse Public License (EPL);
-# You may not use this file except in compliance with the License. You
-# may obtain a copy of the License at
-#
-# http://www.opensource.org/licenses/eclipse-1.0.php
-#
-# See the COPYRIGHT.txt file distributed with this work for information
-# regarding copyright ownership.
-#
-bison.exe=/usr/bin/bison
-c++.exe=/usr/gnu/bin/g++
-c++.args=-w -O -pthread -Wa,-mppc64 -Wa,-a64 -maix64
-c.exe=/usr/gnu/bin/gcc
-c.args=${c++.args}
-cpp.exe=/usr/gnu/bin/gcc
-cpp.args=-E
-shld.args=${c++.args} -shared -maix64
-perl.exe=/usr/bin/perl
-bash.exe=/bin/bash
-
-# optional unless downloading and installing classpath or gcspy
-make.exe=/usr/gnu/bin/make
-
-# optional unless downloading and installing classpath
-tar.exe=/usr/gnu/bin/tar
-git.exe=/usr/bin/git
-autoconf.exe=/usr/bin/autoconf
diff --git a/build/targets/ppc32-aix.properties b/build/targets/ppc32-aix.properties
deleted file mode 100644
--- a/build/targets/ppc32-aix.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# This file is part of the Jikes RVM project (http://jikesrvm.org).
-#
-# This file is licensed to You under the Eclipse Public License (EPL);
-# You may not use this file except in compliance with the License. You
-# may obtain a copy of the License at
-#
-# http://www.opensource.org/licenses/eclipse-1.0.php
-#
-# See the COPYRIGHT.txt file distributed with this work for information
-# regarding copyright ownership.
-#
-target.arch=ppc
-target.endianness=big
-target.os=AIX
-target.bootimage.code.address=0x34000000
-target.bootimage.data.address=0x30000000
-target.bootimage.rmap.address=0x37000000
-target.max-mappable.address=0xd0000000
-target.address.size=32
-target.dll-prefix=lib
-target.dll-ext=.a
-target.jni-suffix=${target.dll-ext}
-target.arch.sse2=none
-target.arch.hw_fsqrt=true
diff --git a/build/targets/ppc64-aix.properties b/build/targets/ppc64-aix.properties
deleted file mode 100644
--- a/build/targets/ppc64-aix.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# This file is part of the Jikes RVM project (http://jikesrvm.org).
-#
-# This file is licensed to You under the Eclipse Public License (EPL);
-# You may not use this file except in compliance with the License. You
-# may obtain a copy of the License at
-#
-# http://www.opensource.org/licenses/eclipse-1.0.php
-#
-# See the COPYRIGHT.txt file distributed with this work for information
-# regarding copyright ownership.
-#
-target.arch=ppc
-target.endianness=big
-target.os=AIX
-target.bootimage.code.address=0x34000000
-target.bootimage.data.address=0x30000000
-target.bootimage.rmap.address=0x37000000
-target.max-mappable.address=0xd0000000L
-target.address.size=64
-target.dll-prefix=lib
-target.dll-ext=.a
-target.jni-suffix=${target.dll-ext}
-target.arch.sse2=none
-target.arch.hw_fsqrt=true
diff --git a/build/targets/target.properties.example b/build/targets/target.properties.example
--- a/build/targets/target.properties.example
+++ b/build/targets/target.properties.example
@@ -13,7 +13,7 @@
# Must be one of ia32 or ppc
target.arch=
-# Must be one of AIX, Linux or OSX
+# Must be one of Linux or OSX
target.os=
# Must be 32 or 64
target.address.size=
diff --git a/rvm/src-generated/opt-burs/jburg/jburg.c b/rvm/src-generated/opt-burs/jburg/jburg.c
--- a/rvm/src-generated/opt-burs/jburg/jburg.c
+++ b/rvm/src-generated/opt-burs/jburg/jburg.c
@@ -1182,12 +1182,8 @@
size_t nwrote;
assert(ret >= 0);
nwrote = ret;
- /* The %z modifier appears in ANSI C '99, for "size_t".
- We still have platforms (AIX 5.1, to be precise) which don't appear to
- support %z. How ugly; we have to work around this. */
if (nwrote >= bufsz) {
-// fprintf(stderr, "Needed %d chars of space; had only %zu\n",
- fprintf(stderr, "Needed %d chars of space; had only %lu\n",
+ fprintf(stderr, "Needed %d chars of space; had only %zu\n",
ret + 1, (unsigned long) nwrote);
/* skip on */
}
diff --git a/rvm/src-generated/vm-configuration/Configuration.template b/rvm/src-generated/vm-configuration/Configuration.template
--- a/rvm/src-generated/vm-configuration/Configuration.template
+++ b/rvm/src-generated/vm-configuration/Configuration.template
@@ -32,10 +32,9 @@
public static final boolean BuildFor32Addr = @_RVM_FOR_32_ADDR_@;
public static final boolean BuildFor64Addr = !BuildFor32Addr;
- public static final boolean BuildForAix = @_RVM_FOR_AIX_@;
public static final boolean BuildForLinux = @_RVM_FOR_LINUX_@;
public static final boolean BuildForSolaris = @_RVM_FOR_SOLARIS_@;
- public static final boolean BuildForOsx = !BuildForAix && !BuildForLinux && !BuildForSolaris;
+ public static final boolean BuildForOsx = !BuildForLinux && !BuildForSolaris;
public static final boolean BuildForGnuClasspath = @_RVM_WITH_GNU_CLASSPATH_@;
public static final boolean BuildForHarmony = @_RVM_WITH_HARMONY_@;
@@ -44,19 +43,12 @@
/* ABI selection. Exactly one of these variables will be true in each build. */
public static final boolean BuildForMachOABI = BuildForOsx;
- public static final boolean BuildForPowerOpenABI = BuildForAix || (BuildForLinux && BuildForPowerPC && BuildFor64Addr);
+ public static final boolean BuildForPowerOpenABI = BuildForLinux && BuildForPowerPC && BuildFor64Addr;
public static final boolean BuildForSVR4ABI = !(BuildForPowerOpenABI || BuildForMachOABI);
/** Are we using Classpath's portable native sync feature? */
public static final boolean PortableNativeSync = @_PORTABLE_NATIVE_SYNC_@;
- /**
- * Can a dereference of a null pointer result in an access
- * to 'low' memory addresses that must be explicitly guarded because the
- * target OS doesn't allow us to read protect low memory?
- */
- public static final boolean ExplicitlyGuardLowMemory = BuildForAix;
-
/** Assertion checking.
- false
- no assertion checking at runtime
diff --git a/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java b/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java
--- a/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java
+++ b/rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java
@@ -2276,7 +2276,6 @@
} else {
// T2 = object reference
popAddr(T2);
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T2);
if (fieldType.isReferenceType() || fieldType.isWordLikeType()) {
// 32/64bit reference/word load
asm.emitLAddrX(T0, T1, T2);
@@ -2325,7 +2324,6 @@
pushAddr(T0);
} else {
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
if (fieldType.isReferenceType() || fieldType.isWordLikeType()) {
// 32/64bit reference/word load
asm.emitLAddrOffset(T0, T1, fieldOffset);
@@ -2382,7 +2380,6 @@
} else {
popAddr(T0); // T0 = address value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTAddrX(T0, T1, T2);
}
} else if (NEEDS_BOOLEAN_PUTFIELD_BARRIER && fieldType.isBooleanType()) {
@@ -2413,32 +2410,27 @@
// 32/64bit word store
popAddr(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTAddrX(T0, T1, T2);
} else if (fieldType.isBooleanType() || fieldType.isByteType()) {
// 8bit store
popInt(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTBX(T0, T1, T2);
} else if (fieldType.isShortType() || fieldType.isCharType()) {
// 16bit store
popInt(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTHX(T0, T1, T2);
} else if (fieldType.isIntType() || fieldType.isFloatType()) {
// 32bit store
popInt(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTWX(T0, T1, T2);
} else {
// 64bit store
if (VM.VerifyAssertions) VM._assert(fieldType.isLongType() || fieldType.isDoubleType());
popDouble(F0); // F0 = doubleword value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTFDX(F0, T1, T2);
}
@@ -2465,7 +2457,6 @@
} else {
popAddr(T0); // T0 = address value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTAddrOffset(T0, T1, fieldOffset);
}
} else if (NEEDS_BOOLEAN_PUTFIELD_BARRIER && fieldType.isBooleanType()) {
@@ -2496,32 +2487,27 @@
// 32/64bit word store
popAddr(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTAddrOffset(T0, T1, fieldOffset);
} else if (fieldType.isBooleanType() || fieldType.isByteType()) {
// 8bit store
popInt(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTBoffset(T0, T1, fieldOffset);
} else if (fieldType.isShortType() || fieldType.isCharType()) {
// 16bit store
popInt(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTHoffset(T0, T1, fieldOffset);
} else if (fieldType.isIntType() || fieldType.isFloatType()) {
// 32bit store
popInt(T0); // T0 = value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTWoffset(T0, T1, fieldOffset);
} else {
// 64bit store
if (VM.VerifyAssertions) VM._assert(fieldType.isLongType() || fieldType.isDoubleType());
popDouble(F0); // F0 = doubleword value
popAddr(T1); // T1 = object reference
- if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);
asm.emitSTFDoffset(F0, T1, fieldOffset);
}
if (field.isVolatile()) {
@@ -3551,7 +3537,6 @@
// store parameters from registers into local variables of current method.
private void genMoveParametersToLocals() {
- // AIX computation will differ
int spillOff = frameSize + STACKFRAME_HEADER_SIZE;
short gp = FIRST_VOLATILE_GPR;
short fp = FIRST_VOLATILE_FPR;
@@ -3642,7 +3627,6 @@
// load parameters into registers before calling method "m".
private void genMoveParametersToRegisters(boolean hasImplicitThisArg, MethodReference m) {
- // AIX computation will differ
spillOffset = STACKFRAME_HEADER_SIZE;
int gp = FIRST_VOLATILE_GPR;
int fp = FIRST_VOLATILE_FPR;
diff --git a/rvm/src/org/jikesrvm/compilers/opt/NullCheckCombining.java b/rvm/src/org/jikesrvm/compilers/opt/NullCheckCombining.java
--- a/rvm/src/org/jikesrvm/compilers/opt/NullCheckCombining.java
+++ b/rvm/src/org/jikesrvm/compilers/opt/NullCheckCombining.java
@@ -12,7 +12,6 @@
*/
package org.jikesrvm.compilers.opt;
-import org.jikesrvm.VM;
import org.jikesrvm.compilers.opt.driver.CompilerPhase;
import org.jikesrvm.compilers.opt.ir.Binary;
import org.jikesrvm.compilers.opt.ir.GuardCarrier;
@@ -23,14 +22,12 @@
import org.jikesrvm.compilers.opt.ir.IR;
import org.jikesrvm.compilers.opt.ir.Instruction;
import org.jikesrvm.compilers.opt.ir.Operator;
-import org.jikesrvm.compilers.opt.ir.Operators;
import org.jikesrvm.compilers.opt.ir.operand.MemoryOperand;
import org.jikesrvm.compilers.opt.ir.operand.Operand;
import static org.jikesrvm.compilers.opt.ir.Operators.GUARD_COMBINE;
import static org.jikesrvm.compilers.opt.ir.Operators.GUARD_MOVE;
import static org.jikesrvm.compilers.opt.ir.Operators.NULL_CHECK;
-import org.vmmagic.unboxed.Offset;
/**
* This module performs two tasks:
@@ -183,19 +180,14 @@
private boolean canFold(Instruction s, Operand activeGuard, boolean isStore) {
if (GuardCarrier.conforms(s) && GuardCarrier.hasGuard(s) && activeGuard.similar(GuardCarrier.getGuard(s))) {
- if (!VM.ExplicitlyGuardLowMemory) return true;
- // TODO: In theory, lowMemory is protected even on AIX.
- // However, enabling this causes a large number of failures.
- // Figure out why that is the case and enable some variant of this.
- // if (isStore) return true; // Even on AIX low memory is write protected
- return VM.BuildForPowerPC && Operators.helper.canFoldNullCheckAndLoad(s);
+ return true;
}
for (int i = 0, n = s.getNumberOfOperands(); i < n; i++) {
Operand op = s.getOperand(i);
if (op instanceof MemoryOperand) {
MemoryOperand memOp = (MemoryOperand) op;
if (activeGuard.similar(memOp.guard)) {
- return !VM.ExplicitlyGuardLowMemory || isStore || ((memOp.index == null) && (memOp.disp.sLT(Offset.zero())));
+ return true;
}
}
}
diff --git a/rvm/src/org/jikesrvm/compilers/opt/ir/ppc/PhysicalRegisterSet.java b/rvm/src/org/jikesrvm/compilers/opt/ir/ppc/PhysicalRegisterSet.java
--- a/rvm/src/org/jikesrvm/compilers/opt/ir/ppc/PhysicalRegisterSet.java
+++ b/rvm/src/org/jikesrvm/compilers/opt/ir/ppc/PhysicalRegisterSet.java
@@ -73,7 +73,7 @@
* The condition registers that we allocate
* To avoid expensive save/restores when
* making a JNI transition Jikes RVM only uses the
- * CR that AIX defines to be volatile
+ * CR that the PowerOpenABI defines to be volatile.
*
* We reserve one of the volatiles, CR7 for use only in yieldpoints.
* This ensures that a yieldpoint won't bash an allocated CR.
diff --git a/rvm/src/org/jikesrvm/compilers/opt/regalloc/ppc/CallingConvention.java b/rvm/src/org/jikesrvm/compilers/opt/regalloc/ppc/CallingConvention.java
--- a/rvm/src/org/jikesrvm/compilers/opt/regalloc/ppc/CallingConvention.java
+++ b/rvm/src/org/jikesrvm/compilers/opt/regalloc/ppc/CallingConvention.java
@@ -117,7 +117,10 @@
/**
* Calling convention to implement calls to
- * native (C) routines using the AIX linkage conventions
+ * native (C) routines using the AIX linkage conventions.
+ *
+ * TODO AIX support has been dropped. Update the documentation.
+ * TODO is this actually the 64-bit PowerPC ELF convention?
*/
public static void expandSysCall(Instruction s, IR ir) {
RegisterOperand ip = (RegisterOperand) Call.getClearAddress(s);
diff --git a/rvm/src/org/jikesrvm/jni/JNIFunctions.java b/rvm/src/org/jikesrvm/jni/JNIFunctions.java
--- a/rvm/src/org/jikesrvm/jni/JNIFunctions.java
+++ b/rvm/src/org/jikesrvm/jni/JNIFunctions.java
@@ -62,7 +62,7 @@
/**
* This class implements the 232 JNI functions.
* All methods here will be specially compiled with the necessary prolog to
- * perform the transition from native code (Linux/AIX/OSX convention) to RVM.
+ * perform the transition from native code (Linux/OSX convention) to RVM.
* For this reason, no Java methods (including the JNI methods here) can call
* any methods in this class from within Java. These JNI methods are to
* be invoked from native C or C++. They're all declared private to enforce
diff --git a/rvm/src/org/jikesrvm/jni/ppc/JNICompiler.java b/rvm/src/org/jikesrvm/jni/ppc/JNICompiler.java
--- a/rvm/src/org/jikesrvm/jni/ppc/JNICompiler.java
+++ b/rvm/src/org/jikesrvm/jni/ppc/JNICompiler.java
@@ -72,7 +72,6 @@
*
Push a new JREF frame on the JNIRefs stack
* Supply the first JNI argument: the JNI environment pointer
* Supply the second JNI argument: class object if static, "this" if virtual
- * Setup the TOC (AIX only) and IP to the corresponding native code
*
*
* The stub performs the following tasks in the epilogue:
@@ -424,7 +423,7 @@
public static int getFrameSize(NativeMethod m) {
// space for:
- // -NATIVE header (AIX 6 words, LINUX 2 words)
+ // -NATIVE header (LINUX 2 words)
// -parameters and 2 extra JNI parameters (jnienv + obj), minimum 8 words
// -JNI_SAVE_AREA_OFFSET; see JNIStackframeLayoutConstants
int argSpace = BYTES_IN_STACKSLOT * (m.getParameterWords() + 2);
@@ -1308,7 +1307,7 @@
}
}
- // Save AIX non-volatile GPRs that will not be saved and restored by RVM.
+ // Save non-volatile GPRs that will not be saved and restored by RVM.
//
offset = STACKFRAME_HEADER_SIZE + JNI_GLUE_SAVED_VOL_SIZE; // skip 20 word volatile reg save area
for (int i = FIRST_RVM_RESERVED_NV_GPR; i <= LAST_RVM_RESERVED_NV_GPR; i++) {
@@ -1330,6 +1329,7 @@
// We first adjust this in place to be a pointer to a JNIEnvironment and then use
// it to acquire THREAD_REGISTER (and JTOC on OSX/Linux).
//
+ // TODO update for AIX removal
// AIX non volatile gprs 13-16 have been saved & are available (also gprs 11-13 can be used).
// S0=13, S1=14, TI=15, THREAD_REGISTER=16 are available (&have labels) for changing state.
// we leave the passed arguments untouched, unless we are blocked and have to call sysVirtualProcessorYield
@@ -1342,8 +1342,9 @@
// acquire Jikes RVM THREAD_REGISTER (and JTOC OSX/Linux only).
asm.emitLAddrOffset(THREAD_REGISTER, T0, Entrypoints.JNIEnvSavedTRField.getOffset());
if (VM.BuildForSVR4ABI || VM.BuildForMachOABI) {
- // on AIX JTOC is part of AIX Linkage triplet and this already set by our caller.
- // Thus, we only need this load on non-AIX platforms
+ // When using the 64-bit PowerPC ELF ABI (e.g. on PPC64 Linux), the JTOC is part of
+ // the Linkage triplet and this already set by our caller.
+ // Thus, we only need this load when not on PPC64 Linux.
asm.emitLAddrOffset(JTOC, T0, Entrypoints.JNIEnvSavedJTOCField.getOffset());
}
@@ -1410,7 +1411,7 @@
T0,
Entrypoints.JNITopJavaFPField.getOffset()); // get addr of top java frame from JNIEnv
asm.emitSUBFC(S0, FP, S0); // S0 <- offset from current FP
- // AIX -4, LINUX - 8
+ // LINUX - 8
asm.emitSTW(S0, glueFrameSize + JNI_GLUE_OFFSET_TO_PREV_JFRAME, FP); // store offset at end of glue frame
// BRANCH TO THE PROLOG FOR THE JNI FUNCTION
@@ -1437,7 +1438,7 @@
// frame pointer if it is necessary to do GC with a processors active thread
// stuck (and blocked) in native C, ie. GC starts scanning the threads stack at that frame.
- // AIX -4, LINUX -8
+ // LINUX -8
asm.emitLInt(T3, glueFrameSize + JNI_GLUE_OFFSET_TO_PREV_JFRAME, FP); // load offset from FP to top java frame
asm.emitADD(T3, FP, T3); // T3 <- address of top java frame
asm.emitSTAddrOffset(T3, T2, Entrypoints.JNITopJavaFPField.getOffset()); // store TopJavaFP back into JNIEnv
@@ -1484,7 +1485,7 @@
enteredJNIRef.resolve(asm);
- // Restore those AIX nonvolatile registers saved in the prolog above
+ // Restore the nonvolatile registers saved in the prolog above
// Here we only save & restore ONLY those registers not restored by RVM
//
offset = STACKFRAME_HEADER_SIZE + JNI_GLUE_SAVED_VOL_SIZE; // skip 20 word volatile reg save area
diff --git a/rvm/src/org/jikesrvm/jni/ppc/JNIHelpers.java b/rvm/src/org/jikesrvm/jni/ppc/JNIHelpers.java
--- a/rvm/src/org/jikesrvm/jni/ppc/JNIHelpers.java
+++ b/rvm/src/org/jikesrvm/jni/ppc/JNIHelpers.java
@@ -120,7 +120,7 @@
if (VM.BuildForPowerOpenABI) {
Address varargAddress = pushVarArgToSpillArea(methodID, false);
- return packageAndInvoke(null, methodID, varargAddress, expectReturnType, false, AIX_VARARG);
+ return packageAndInvoke(null, methodID, varargAddress, expectReturnType, false, PPC64_ELF_VARARG);
} else if (VM.BuildForSVR4ABI) {
Address glueFP = Magic.getCallerFramePointer(Magic.getCallerFramePointer(Magic.getFramePointer()));
return packageAndInvoke(null, methodID, glueFP, expectReturnType, false, SVR4_DOTARG);
@@ -147,7 +147,7 @@
if (VM.BuildForPowerOpenABI) {
Address varargAddress = pushVarArgToSpillArea(methodID, skip4Args);
- return packageAndInvoke(obj, methodID, varargAddress, expectReturnType, skip4Args, AIX_VARARG);
+ return packageAndInvoke(obj, methodID, varargAddress, expectReturnType, skip4Args, PPC64_ELF_VARARG);
} else if (VM.BuildForSVR4ABI) {
Address glueFP = Magic.getCallerFramePointer(Magic.getCallerFramePointer(Magic.getFramePointer()));
return packageAndInvoke(obj, methodID, glueFP, expectReturnType, skip4Args, SVR4_DOTARG);
@@ -161,6 +161,8 @@
/**
* This method supports var args passed from C.
*
+ * TODO update for AIX removal
+ *
* In the AIX C convention, the caller keeps the first 8 words in registers and
* the rest in the spill area in the caller frame. The callee will push the values
* in registers out to the spill area of the caller frame and use the beginning
@@ -408,7 +410,7 @@
public static Object invokeWithVarArg(int methodID, Address argAddress, TypeReference expectReturnType)
throws Exception {
if (VM.BuildForPowerOpenABI) {
- return packageAndInvoke(null, methodID, argAddress, expectReturnType, false, AIX_VARARG);
+ return packageAndInvoke(null, methodID, argAddress, expectReturnType, false, PPC64_ELF_VARARG);
} else {
return packageAndInvoke(null, methodID, argAddress, expectReturnType, false, SVR4_VARARG);
}
@@ -426,7 +428,7 @@
public static Object invokeWithVarArg(Object obj, int methodID, Address argAddress, TypeReference expectReturnType,
boolean skip4Args) throws Exception {
if (VM.BuildForPowerOpenABI) {
- return packageAndInvoke(obj, methodID, argAddress, expectReturnType, skip4Args, AIX_VARARG);
+ return packageAndInvoke(obj, methodID, argAddress, expectReturnType, skip4Args, PPC64_ELF_VARARG);
} else {
return packageAndInvoke(obj, methodID, argAddress, expectReturnType, skip4Args, SVR4_VARARG);
}
@@ -458,10 +460,10 @@
}
public static final int SVR4_DOTARG = 0; // Linux/PPC SVR4 normal
- public static final int AIX_DOTARG = 1; // AIX normal
+ public static final int PPC64_ELF_DOTARG = 1; // 64-bit PowerPC ELF normal
public static final int JVALUE_ARG = 2; // javlue
public static final int SVR4_VARARG = 3; // Linux/PPC SVR4 vararg
- public static final int AIX_VARARG = 4; // AIX vararg
+ public static final int PPC64_ELF_VARARG = 4; // 64-bit PowerPC ELF vararg
public static final int OSX_DOTARG = 5; // Darwin normal
/**
@@ -513,7 +515,7 @@
// of argtypes tested on each platform.
// But, this can't actually be the way this code should be written...
if (VM.BuildForPowerOpenABI) {
- if (VM.VerifyAssertions) VM._assert(argtype == AIX_VARARG);
+ if (VM.VerifyAssertions) VM._assert(argtype == PPC64_ELF_VARARG);
argObjectArray = packageParameterFromVarArg(targetMethod, argAddress);
} else if (VM.BuildForSVR4ABI) {
switch (argtype) {
@@ -524,7 +526,7 @@
case SVR4_VARARG:
argObjectArray = packageParameterFromVarArgSVR4(targetMethod, argAddress);
break;
- case AIX_VARARG:
+ case PPC64_ELF_VARARG:
// TODO: Is this branch actually reachable code???
argObjectArray = packageParameterFromVarArg(targetMethod, argAddress);
break;
@@ -537,7 +539,7 @@
case SVR4_DOTARG:
case SVR4_VARARG:
case OSX_DOTARG:
- case AIX_VARARG:
+ case PPC64_ELF_VARARG:
argObjectArray = packageParameterFromVarArg(targetMethod, argAddress);
break;
default:
diff --git a/rvm/src/org/jikesrvm/objectmodel/ObjectModel.java b/rvm/src/org/jikesrvm/objectmodel/ObjectModel.java
--- a/rvm/src/org/jikesrvm/objectmodel/ObjectModel.java
+++ b/rvm/src/org/jikesrvm/objectmodel/ObjectModel.java
@@ -101,9 +101,6 @@
* process, loads/stores through such a pointer will cause a trap that
* we can catch with a unix signal handler.
*
- * Note that on AIX we are forced to perform explicit null checks on
- * scalar field accesses as we are unable to protect low memory.
- *
* Note the key invariant that all elements of the header are
* available at the same offset from an objref for both arrays and
* scalar objects.
diff --git a/rvm/src/org/jikesrvm/ppc/RegisterConstants.java b/rvm/src/org/jikesrvm/ppc/RegisterConstants.java
--- a/rvm/src/org/jikesrvm/ppc/RegisterConstants.java
+++ b/rvm/src/org/jikesrvm/ppc/RegisterConstants.java
@@ -27,7 +27,7 @@
int INSTRUCTION_WIDTH = 1 << LG_INSTRUCTION_WIDTH;
// OS register convention (for mapping parameters in JNI calls)
- // These constants encode conventions for AIX, OSX, and Linux.
+ // These constants encode conventions for OSX and Linux.
int FIRST_OS_PARAMETER_GPR = 3;
int LAST_OS_PARAMETER_GPR = 10;
int FIRST_OS_VOLATILE_GPR = 3;
@@ -40,13 +40,13 @@
int LAST_OS_VOLATILE_FPR = 13;
int FIRST_OS_NONVOLATILE_FPR = 14;
int LAST_OS_NONVOLATILE_FPR = 31;
- int LAST_OS_VARARG_PARAMETER_FPR = VM.BuildForAix ? 6 : 8;
+ int LAST_OS_VARARG_PARAMETER_FPR = 8;
// Jikes RVM's general purpose register usage (32 or 64 bits wide based on VM.BuildFor64Addr).
//
/** special instruction semantics on this register */
int REGISTER_ZERO = 0;
- /** same as AIX/OSX/Linux */
+ /** same as OSX/Linux */
int FRAME_POINTER = 1;
int FIRST_VOLATILE_GPR = FIRST_OS_PARAMETER_GPR;
// ...
@@ -57,7 +57,7 @@
int FIRST_RVM_RESERVED_NV_GPR = VM.BuildFor64Addr ? 14 : 13;
int THREAD_REGISTER = FIRST_RVM_RESERVED_NV_GPR;
- // 2 is used by Linux for thread context, on AIX it's the toc and on OS X it's a scratch.
+ // 2 is used by Linux for thread context and on OS X it's a scratch.
int JTOC_POINTER = (VM.BuildForLinux && VM.BuildFor32Addr) ? THREAD_REGISTER + 1 : 2;
int KLUDGE_TI_REG = THREAD_REGISTER + ((VM.BuildForLinux && VM.BuildFor32Addr) ? 2 : 1);
@@ -69,9 +69,9 @@
// Floating point register usage. (FPR's are 64 bits wide).
- /** AIX/OSX/Linux is 0 */
+ /** OSX/Linux is 0 */
int FIRST_SCRATCH_FPR = 0;
- /** AIX/OSX/Linux is 0 */
+ /** OSX/Linux is 0 */
int LAST_SCRATCH_FPR = 0;
int FIRST_VOLATILE_FPR = FIRST_OS_VOLATILE_FPR;
//
diff --git a/rvm/src/org/jikesrvm/runtime/DynamicLibrary.java b/rvm/src/org/jikesrvm/runtime/DynamicLibrary.java
--- a/rvm/src/org/jikesrvm/runtime/DynamicLibrary.java
+++ b/rvm/src/org/jikesrvm/runtime/DynamicLibrary.java
@@ -159,7 +159,7 @@
* look up this dynamic library for a symbol
* @param symbolName symbol name
* @return The Address
of the symbol system handler
- * (actually an address to an AixLinkage triplet).
+ * (or an address of a PowerPC Linkage triplet).
* (-1: not found or couldn't be created)
*/
public Address getSymbol(String symbolName) {
diff --git a/rvm/src/org/jikesrvm/tools/header_gen/GenArch.java b/rvm/src/org/jikesrvm/tools/header_gen/GenArch.java
--- a/rvm/src/org/jikesrvm/tools/header_gen/GenArch.java
+++ b/rvm/src/org/jikesrvm/tools/header_gen/GenArch.java
@@ -15,7 +15,6 @@
/**
* Emit the architecture-specific part of a header file containing declarations
* required to access VM data structures from C++.
- * Posix version: AIX PPC, Linux PPC, Linux IA32
*/
abstract class GenArch extends GenerateInterfaceDeclarations {
abstract void emitArchVirtualMachineDeclarations();
diff --git a/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ia32.java b/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ia32.java
--- a/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ia32.java
+++ b/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ia32.java
@@ -24,7 +24,6 @@
/**
* Emit the architecture-specific part of a header file containing declarations
* required to access VM data structures from C++.
- * Posix version: AIX PPC, Linux PPC, Linux IA32
*/
final class GenArch_ia32 extends GenArch {
@Override
diff --git a/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ppc.java b/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ppc.java
--- a/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ppc.java
+++ b/rvm/src/org/jikesrvm/tools/header_gen/GenArch_ppc.java
@@ -24,7 +24,6 @@
/**
* Emit the architecture-specific part of a header file containing declarations
* required to access VM data structures from C++.
- * Posix version: AIX PPC, Linux PPC, Linux IA32
*/
final class GenArch_ppc extends GenArch {
@Override
@@ -99,9 +98,7 @@
pln(".set T2," + BaselineConstants.T2);
pln(".set T3," + BaselineConstants.T3);
pln(".set STACKFRAME_RETURN_ADDRESS_OFFSET," + StackframeLayoutConstants.STACKFRAME_RETURN_ADDRESS_OFFSET);
- if (!VM.BuildForAix) {
- pln(".set T4," + (BaselineConstants.T3 + 1));
- }
+ pln(".set T4," + (BaselineConstants.T3 + 1));
}
}
}
diff --git a/rvm/src/org/jikesrvm/tools/header_gen/GenerateInterfaceDeclarations.java b/rvm/src/org/jikesrvm/tools/header_gen/GenerateInterfaceDeclarations.java
--- a/rvm/src/org/jikesrvm/tools/header_gen/GenerateInterfaceDeclarations.java
+++ b/rvm/src/org/jikesrvm/tools/header_gen/GenerateInterfaceDeclarations.java
@@ -48,7 +48,6 @@
/**
* Emit a header file containing declarations required to access VM
* data structures from C++.
- * Posix version: AIX PPC, Linux PPC, Linux IA32
*/
public class GenerateInterfaceDeclarations {
diff --git a/rvm/src/org/jikesrvm/tools/oth/OptTestHarness.java b/rvm/src/org/jikesrvm/tools/oth/OptTestHarness.java
--- a/rvm/src/org/jikesrvm/tools/oth/OptTestHarness.java
+++ b/rvm/src/org/jikesrvm/tools/oth/OptTestHarness.java
@@ -247,7 +247,6 @@
OptimizingCompiler.setBootOptions(options);
} else if ("-longcommandline".equals(arg)) {
// the -longcommandline option reads options from a file.
- // use for cases when the command line is too long for AIX
String fileName = args[++i];
String[] optionString = fileAccess.readOptionStringFromFile(fileName);
processOptionString(optionString);
diff --git a/testing/tests/jni/src/ArgumentPassing.c b/testing/tests/jni/src/ArgumentPassing.c
--- a/testing/tests/jni/src/ArgumentPassing.c
+++ b/testing/tests/jni/src/ArgumentPassing.c
@@ -12,6 +12,9 @@
*/
/**
* Native code for ArgumentPassing.java
+ *
+ * Note: Support for AIX has been dropped but test cases for AIX
+ * have been kept.
*/
#include
diff --git a/testing/tests/jni/src/ArgumentPassing.java b/testing/tests/jni/src/ArgumentPassing.java
--- a/testing/tests/jni/src/ArgumentPassing.java
+++ b/testing/tests/jni/src/ArgumentPassing.java
@@ -10,6 +10,11 @@
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
+
+/**
+ * Note: Support for AIX has been dropped but test cases for AIX
+ * have been kept.
+ */
class ArgumentPassing {
static boolean verbose = true; // set to true to get messages for each test
diff --git a/testing/tests/jni/src/tNativeThreads.c b/testing/tests/jni/src/tNativeThreads.c
--- a/testing/tests/jni/src/tNativeThreads.c
+++ b/testing/tests/jni/src/tNativeThreads.c
@@ -50,14 +50,7 @@
}
**********/
-
-#if _AIX43
- sched_yield();
-#else
pthread_yield();
-#endif
-
-
/* printf("tNativeThreads.c: after loops: sum1 = %d , sum2 = %d \n", sum1,sum2); */
diff --git a/tools/ant-tasks/src/org/jikesrvm/tools/template/GenerateFromTemplate.java b/tools/ant-tasks/src/org/jikesrvm/tools/template/GenerateFromTemplate.java
--- a/tools/ant-tasks/src/org/jikesrvm/tools/template/GenerateFromTemplate.java
+++ b/tools/ant-tasks/src/org/jikesrvm/tools/template/GenerateFromTemplate.java
@@ -227,9 +227,10 @@
}
// When driven from ant (on AIX), there's a problem keeping tokens that
- // are separated by blanks from being split into separate tokens when
+ // are separated by blanks from being split into separate tokens
// when the java command is forked. Each token should contain an "=".
// Verify this and reassemble them if they don't.
+ // TODO AIX support has been dropped. Is this code still necessary?
int limit = argc;
argc = 2;
for (int i = 2; i < limit; i++) {
diff --git a/tools/bootloader/ppc/AixLinkageLayout.h b/tools/bootloader/ppc/AixLinkageLayout.h
deleted file mode 100644
--- a/tools/bootloader/ppc/AixLinkageLayout.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * This file is part of the Jikes RVM project (http://jikesrvm.org).
- *
- * This file is licensed to You under the Eclipse Public License (EPL);
- * You may not use this file except in compliance with the License. You
- * may obtain a copy of the License at
- *
- * http://www.opensource.org/licenses/eclipse-1.0.php
- *
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership.
- */
-
-// Layout of an AIX function linkage area.
-//
-//
-#include
-#ifdef RVM_FOR_32_ADDR
-struct AixLinkageLayout
-{
- uint32_t ip; // value to put in IP register
- uint32_t toc; // value to put in TOC register
- uint32_t environ; // value to put in R11 (for PASCAL only)
-};
-#else
-struct AixLinkageLayout
-{
- uint64_t ip; // value to put in IP register
- uint64_t toc; // value to put in TOC register
- uint64_t environ; // value to put in R11 (for PASCAL only)
-};
-#endif
diff --git a/tools/bootloader/ppc/initBootRecord.c b/tools/bootloader/ppc/initBootRecord.c
--- a/tools/bootloader/ppc/initBootRecord.c
+++ b/tools/bootloader/ppc/initBootRecord.c
@@ -19,5 +19,4 @@
#define NEED_BOOT_RECORD_DECLARATIONS
#define NEED_BOOT_RECORD_INITIALIZATION
-#include
#include
diff --git a/tools/bootloader/ppc/libvm.c b/tools/bootloader/ppc/libvm.c
--- a/tools/bootloader/ppc/libvm.c
+++ b/tools/bootloader/ppc/libvm.c
@@ -19,7 +19,7 @@
* exception handling. The file "sys.cpp" contains the o/s support services
* required by the java class libraries.
*
- * PowerPC version for AIX, Linux, and Mac OS X
+ * PowerPC version for Linux and Mac OS X
*
*
* everything except the command line parsing in main().
@@ -53,7 +53,6 @@
#define NEED_STRSIGNAL
#endif
-#ifndef RVM_FOR_AIX
#include
#include
#include
@@ -70,28 +69,14 @@
typedef unsigned long elf_greg_t;
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
struct linux_sigregs {
- elf_gregset_t gp_regs;
- double fp_regs[ELF_NFPREG];
- unsigned long tramp[2];
+ elf_gregset_t gp_regs;
+ double fp_regs[ELF_NFPREG];
+ unsigned long tramp[2];
/* Programs using the rs6000/xcoff abi can save up to 19 gp regs
and 18 fp regs below sp before decrementing it. */
- int abigap[56];
+ int abigap[56];
};
-#else
-#include
-#include
-extern "C" char *sys_siglist[];
-#define NEED_STRSIGNAL
-
-#endif // RVM_FOR_AIX
-
-#ifdef NEED_STRSIGNAL
-#define strsignal(signum) ((signum) < NSIG ? sys_siglist[(signum)] : "?")
-#endif // NEED_STRSIGNAL
-
-
-
// #define PTRS_X_WITHOUT_PUNCTUATION
#define PTRS_VIA_PERCENT_P
//#define PTRS_X_WITH_PUNCTUATION
@@ -440,21 +425,6 @@
#if 0
} // so emacs knows to match up { and } nicely :)
#endif
-#ifdef RVM_FOR_AIX
-void
-cSignalHandler(int signum, int UNUSED zero, sigcontext *context)
-{
-#ifdef RVM_FOR_32_ADDR
- mstsave *save = &context->sc_jmpbuf.jmp_context; // see "/usr/include/sys/mstsave.h"
-#endif
-#ifdef RVM_FOR_64_ADDR
- context64 *save = &context->sc_jmpbuf.jmp_context; // see "/usr/include/sys/context.h"
-#endif
- Word iar = save->iar;
-#endif
-#if 0
-} // so emacs knows to match up { and } nicely :)
-#endif
#ifdef RVM_FOR_OSX
void
cSignalHandler(int signum, siginfo_t * UNUSED zero, struct ucontext *context)
@@ -534,9 +504,6 @@
#elif defined RVM_FOR_OSX
save->lr = save->srr0 + 4; // +4 so it looks like a return address
save->srr0 = dumpStack;
-#elif defined RVM_FOR_AIX
- save->lr = save->iar + 4; // +4 so it looks like a return address
- save->iar = dumpStack;
#endif
SET_GPR(save, Constants_FIRST_VOLATILE_GPR,
GET_GPR(save, Constants_FRAME_POINTER));
@@ -559,55 +526,6 @@
the signal stack might need to be made larger. [--DL].
*/
-/* First an aux. routine: */
-#ifdef RVM_FOR_AIX
-uintptr_t testFaultingAddress = 0xdead1234;
-
-int faultingAddressLocation = -1; // uninitialized
-uintptr_t
-#ifdef RVM_FOR_32_ADDR
-getFaultingAddress(mstsave *save)
-#else
-getFaultingAddress(context64 *save)
-#endif
-{
- if (lib_verbose) {
-#if (_AIX51)
- CONSOLE_PRINTF("save->except[0]=" FMTrvmPTR "\n",
- rvmPTR_ARG(save->except[0]));
-#else
- CONSOLE_PRINTF("save->o_vaddr=" FMTrvmPTR "\n", rvmPTR_ARG(save->o_vaddr));
-#endif
- }
-
-#if (_AIX51)
- if (faultingAddressLocation == -1) {
- if (save->except[0] == testFaultingAddress)
- faultingAddressLocation = 0;
- else {
- ERROR_PRINTF("Could not figure out where faulting address is stored - exiting\n");
- exit(EXIT_STATUS_DYING_WITH_UNCAUGHT_EXCEPTION);
- }
- }
- return save->except[0];
-#else
- if (faultingAddressLocation == -1) {
- if (save->o_vaddr == testFaultingAddress) {
- faultingAddressLocation = 0;
- } else {
- ERROR_PRINTF("Could not figure out where"
- " faulting address is stored - exiting\n");
- exit(EXIT_STATUS_DYING_WITH_UNCAUGHT_EXCEPTION);
- }
- }
- return save->o_vaddr;
-#endif
-}
-#endif // RVM_FOR_AIX
-
-
-
-
static const int noise = 0;
/** Now we define the start of the hardware trap handler. It needs
@@ -646,27 +564,6 @@
uintptr_t faultingAddress = (uintptr_t)siginfo->si_addr;
#endif // RVM_FOR_OSX
-#ifdef RVM_FOR_AIX
- void
- cTrapHandler(int signum, int UNUSED zero, sigcontext *context)
- {
- // See "/usr/include/sys/mstsave.h"
-#if defined RVM_FOR_32_ADDR
- mstsave *save = &context->sc_jmpbuf.jmp_context;
-#else
- context64 *save = &context->sc_jmpbuf.jmp_context;
-#endif
- int firstFault = (faultingAddressLocation == -1);
- uintptr_t faultingAddress = getFaultingAddress(save);
- if (firstFault) {
- save->iar += 4; // skip faulting instruction used for auto-detect
- return;
- }
- uintptr_t ip = save->iar;
- uintptr_t lr = save->lr;
- Address jtoc = save->gpr[Constants_JTOC_POINTER];
-#endif // RVM_FOR_AIX
-
if (noise) CONSOLE_PRINTF("just got into cTrapHandler, my jtoc = %p, while the real jtoc = %p\n",jtoc,getJTOC());
jtoc=(Address)getJTOC();
@@ -788,10 +685,6 @@
save->lr = save->srr0 + 4; // +4 so it looks like a return address
save->srr0 = dumpStack;
#endif
-#ifdef RVM_FOR_AIX
- save->lr = save->iar + 4; // +4 so it looks like a return address
- save->iar = dumpStack;
-#endif
return;
}
@@ -817,15 +710,6 @@
*lrLoc = save->lr;
#endif
-#ifdef RVM_FOR_AIX
- for (int i = 0; i < NGPRS; ++i)
- gprs[i] = save->gpr[i];
- if (noise) CONSOLE_PRINTF("just got into cTrapHandler (5)\n");
- for (int i = 0; i < NFPRS; ++i)
- fprs[i] = save->fpr[i];
- *ipLoc = save->iar+ 4; // +4 so it looks like return address
- *lrLoc = save->lr;
-#endif
*inuse = 1;
// Insert artificial stackframe at site of trap.
@@ -841,9 +725,6 @@
*(int *)(oldFp + Constants_STACKFRAME_RETURN_ADDRESS_OFFSET) = save->srr0 + 4; // +4 so it looks like return address
#endif
-#ifdef RVM_FOR_AIX
- *(Address *)(oldFp + Constants_STACKFRAME_RETURN_ADDRESS_OFFSET) = save->iar + 4; // +4 so it looks like return address
-#endif
if (noise) CONSOLE_PRINTF("just got into cTrapHandler (6)\n");
*(int *)(newFp + Constants_STACKFRAME_METHOD_ID_OFFSET)
= HardwareTrapMethodId;
@@ -968,9 +849,6 @@
#elif (defined RVM_FOR_OSX)
save->lr = save->srr0 + 4; // +4 so it looks like a return address
save->srr0 = dumpStack;
-#elif defined RVM_FOR_AIX
- save->lr = save->iar + 4; // +4 so it looks like a return address
- save->iar = dumpStack;
#endif
return;
}
@@ -1016,15 +894,6 @@
} else {
save->lr = save->srr0 + 4; // +4 so it looks like a return address
}
-#elif defined RVM_FOR_AIX
- if (save->iar == 0) {
- do {
- /* A bad branch -- use the contents of the link register as
- our best guess of the call site. */
- } while(0);
- } else {
- save->lr = save->iar + 4; // +4 so it looks like a return address
- }
#endif
} else {
/* We haven't actually bought the stackframe yet, so pretend that
@@ -1033,7 +902,7 @@
*/
#ifdef RVM_FOR_LINUX
*(Address *)(oldFp + Constants_STACKFRAME_RETURN_ADDRESS_OFFSET) = save->link;
-#elif defined RVM_FOR_AIX || defined RVM_FOR_OSX
+#elif defined RVM_FOR_OSX
*(Address *)(oldFp + Constants_STACKFRAME_RETURN_ADDRESS_OFFSET) = save->lr;
#endif
}
@@ -1045,10 +914,7 @@
save->nip = javaExceptionHandler;
#elif (defined RVM_FOR_OSX)
save->srr0 = javaExceptionHandler;
-#elif defined RVM_FOR_AIX
- save->iar = javaExceptionHandler;
#endif
-
if (noise) CONSOLE_PRINTF("just got into cTrapHandler (10)\n");
#ifdef RVM_FOR_OSX
@@ -1311,21 +1177,6 @@
ERROR_PRINTF("%s: sigaction failed (errno=%d)\n", Me, errno);
return 1;
}
-#elif defined RVM_FOR_AIX
- struct sigstack stackInfo;
- stackInfo.ss_sp = topOfSignalStack;
- stackInfo.ss_onstack = 0;
- if (sigstack(&stackInfo, 0)) {
- ERROR_PRINTF("%s: sigstack failed (errno=%d)\n", Me, errno);
- return 1;
- }
- // install hardware trap handler
- //
- struct sigaction action;
- action.sa_handler = (SIGNAL_HANDLER) cTrapHandler;
- action.sa_flags = SA_ONSTACK | SA_RESTART;
- SIGFILLSET(action.sa_mask);
- SIGDELSET(action.sa_mask, SIGCONT);
#endif
if (sigaction(SIGSEGV, &action, 0) // catch null pointer references
|| sigaction(SIGTRAP, &action, 0) // catch array bounds violations
@@ -1387,14 +1238,6 @@
//
sysSyncCache(bootCodeRegion, roundedCodeRegionSize);
-#ifdef RVM_FOR_AIX
- if (lib_verbose)
- CONSOLE_PRINTF("Testing faulting-address location\n");
- *((uintptr_t *) testFaultingAddress) = 42;
- if (lib_verbose)
- CONSOLE_PRINTF("Done testing faulting-address location\n");
-#endif
-
if (setjmp(primordial_jb)) {
*(int*)(tr + RVMThread_execStatus_offset) = RVMThread_TERMINATED;
// cannot return or else the process will exit. this is how pthreads
diff --git a/tools/bootloader/sys.h b/tools/bootloader/sys.h
--- a/tools/bootloader/sys.h
+++ b/tools/bootloader/sys.h
@@ -79,19 +79,6 @@
* needed to the respective sys*.cpp files.
*/
-// Work around AIX headerfile differences: AIX 4.3 vs earlier releases
-#ifdef _AIX43
-#include
-EXTERNAL void profil(void *, uint, ulong, uint);
-EXTERNAL int sched_yield(void);
-#endif
-
-#ifdef _AIX
-EXTERNAL timer_t gettimerid(int timer_type, int notify_type);
-EXTERNAL int incinterval(timer_t id, itimerstruc_t *newvalue, itimerstruc_t *oldvalue);
-#include
-#endif
-
#if (defined RVM_FOR_SOLARIS)
#include
#endif