20 // or visit www.oracle.com if you need additional information or have any
21 // questions.
22 //
23 //
24
25
26 // Support for u8 os::setup_fpu()
27 .inline _solaris_raw_setup_fpu,1
28 movl 0(%esp), %eax
29 fldcw (%eax)
30 .end
31
32 // The argument size of each inline directive is ignored by the compiler
33 // and is set to 0 for compatibility reason.
34
35 // Get the raw thread ID from %gs:0
36 .inline _raw_thread_id,0
37 movl %gs:0, %eax
38 .end
39
40 // Get current fp
41 .inline _get_current_fp,0
42 .volatile
43 movl %ebp, %eax
44 .end
45
46 // Support for os::rdtsc()
47 .inline _raw_rdtsc,0
48 rdtsc
49 .end
50
51 // Support for jint Atomic::add(jint inc, volatile jint* dest)
52 // An additional bool (os::is_MP()) is passed as the last argument.
53 .inline _Atomic_add,3
54 movl 0(%esp), %eax // inc
55 movl 4(%esp), %edx // dest
56 movl %eax, %ecx
57 cmpl $0, 8(%esp) // MP test
58 jne 1f
59 xaddl %eax, (%edx)
|
20 // or visit www.oracle.com if you need additional information or have any
21 // questions.
22 //
23 //
24
25
26 // Support for u8 os::setup_fpu()
27 .inline _solaris_raw_setup_fpu,1
28 movl 0(%esp), %eax
29 fldcw (%eax)
30 .end
31
32 // The argument size of each inline directive is ignored by the compiler
33 // and is set to 0 for compatibility reason.
34
35 // Get the raw thread ID from %gs:0
36 .inline _raw_thread_id,0
37 movl %gs:0, %eax
38 .end
39
40 // Get current sp
41 .inline _get_current_sp,0
42 .volatile
43 movl %esp, %eax
44 .end
45
46 // Get current fp
47 .inline _get_current_fp,0
48 .volatile
49 movl %ebp, %eax
50 .end
51
52 // Support for os::rdtsc()
53 .inline _raw_rdtsc,0
54 rdtsc
55 .end
56
57 // Support for jint Atomic::add(jint inc, volatile jint* dest)
58 // An additional bool (os::is_MP()) is passed as the last argument.
59 .inline _Atomic_add,3
60 movl 0(%esp), %eax // inc
61 movl 4(%esp), %edx // dest
62 movl %eax, %ecx
63 cmpl $0, 8(%esp) // MP test
64 jne 1f
65 xaddl %eax, (%edx)
|