# HG changeset patch # User Stefan Anzinger # Date 1424946394 -3600 # Node ID 3ba5b1c55996ad0ae427e16c8765993c27ef543a # Parent 15ef24874df796913c2f68144287d798c752db4a [SPARC] Configure caller saved register with FPU registers diff -r 15ef24874df7 -r 3ba5b1c55996 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Wed Feb 25 19:13:16 2015 -0800 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Thu Feb 26 11:26:34 2015 +0100 @@ -93,14 +93,14 @@ @SuppressWarnings("unused") private static Value[] createNativeABICallerSaveRegisters(HotSpotVMConfig config, RegisterConfig regConfig) { - List callerSaveRegisters = new ArrayList<>(); - Collections.addAll(callerSaveRegisters, regConfig.getCallerSaveRegisters()); - // TODO: Saving callee saved registers as well seems unneccessary, however as of now it does - // not work without; needs further investigation - Collections.addAll(callerSaveRegisters, regConfig.getCalleeSaveLayout().registers); - Value[] nativeABICallerSaveRegisters = new Value[callerSaveRegisters.size()]; - for (int i = 0; i < callerSaveRegisters.size(); i++) { - nativeABICallerSaveRegisters[i] = callerSaveRegisters.get(i).asValue(); + Set callerSavedRegisters = new HashSet<>(); + Collections.addAll(callerSavedRegisters, regConfig.getCalleeSaveLayout().registers); + Collections.addAll(callerSavedRegisters, SPARC.fpuRegisters); + Value[] nativeABICallerSaveRegisters = new Value[callerSavedRegisters.size()]; + int i = 0; + for (Register reg : callerSavedRegisters) { + nativeABICallerSaveRegisters[i] = reg.asValue(); + i++; } return nativeABICallerSaveRegisters; }