JDK-5003738 : On Intel VM does not handle the %mxcsr register correctly
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: x86
  • Submitted: 2004-02-26
  • Updated: 2012-10-08
  • Resolved: 2004-04-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 b45Fixed
Related Reports
Relates :  
Relates :  
Description
On systems which support it, the server compiler uses the SSE
instructions.  The operation of these instructions depends on
the setting of the %mxcsr register.  Currently the VM assumes
that the %mxcsr register is set correctly at VM startup and does
not change.  However the Intel SVR4 ABI does mandate a particular
setting for this register and implies that it is volatile across
function calls.  The VM needs to be changed to properly initialize the
%mxcsr register and restore the setting at any point where it may have
changed.

This problem exists on 32-bit Intel platforms as well as Linux on
AMD64.  On AMD64 Windows, this register is required to be maintained
at the correct value.

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger-beta2 FIXED IN: tiger-beta2 INTEGRATED IN: tiger-b45 tiger-beta2
14-06-2004

WORK AROUND A work-around for 32-bit Intel systems is to use the -XX:UseSSE=0 option.
11-06-2004

SUGGESTED FIX See: http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/export2/archived_workspaces/main/c2_baseline/2004/20040322153248.steved.tiger_bugs/workspace/webrevs/webrev-2004.03.22/index.html
11-06-2004

EVALUATION It is sufficient to set the %mxcsr in the following 2 cases: (1) Calls into Java from native code. (2) Return to Java from a native call. In addition, in case (1), the incoming %mxcsr register value will be saved and retored when returning to native code so that the native code will not see Java changing this register. ###@###.### 2004-02-25
25-02-2004