comparison src/os_cpu/solaris_x86/vm/solaris_x86_64.il @ 1547:fb1a39993f69

6951319: enable solaris builds using Sun Studio 12 update 1 Reviewed-by: kamg, ysr, dholmes, johnc
author jcoomes
date Tue, 18 May 2010 11:02:18 -0700
parents 0fbdb4381b99
children c18cbe5936b8
comparison
equal deleted inserted replaced
1546:a00b51b2dda4 1547:fb1a39993f69
35 .volatile 35 .volatile
36 movq %rbp, %rax 36 movq %rbp, %rax
37 .end 37 .end
38 38
39 // Support for jint Atomic::add(jint add_value, volatile jint* dest) 39 // Support for jint Atomic::add(jint add_value, volatile jint* dest)
40 // An additional bool (os::is_MP()) is passed as the last argument. 40 .inline _Atomic_add,2
41 .inline _Atomic_add,3
42 movl %edi, %eax // save add_value for return 41 movl %edi, %eax // save add_value for return
43 testl %edx, %edx // MP test
44 je 1f
45 lock 42 lock
46 1: xaddl %edi, (%rsi) 43 xaddl %edi, (%rsi)
47 addl %edi, %eax 44 addl %edi, %eax
48 .end 45 .end
49 46
50 // Support for jlong Atomic::add(jlong add_value, volatile jlong* dest) 47 // Support for jlong Atomic::add(jlong add_value, volatile jlong* dest)
51 // An additional bool (os::is_MP()) is passed as the last argument. 48 .inline _Atomic_add_long,2
52 .inline _Atomic_add_long,3
53 movq %rdi, %rax // save add_value for return 49 movq %rdi, %rax // save add_value for return
54 testq %rdx, %rdx // MP test
55 je 1f
56 lock 50 lock
57 1: xaddq %rdi, (%rsi) 51 xaddq %rdi, (%rsi)
58 addq %rdi, %rax 52 addq %rdi, %rax
59 .end 53 .end
60 54
61 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). 55 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest).
62 .inline _Atomic_xchg,2 56 .inline _Atomic_xchg,2
71 .end 65 .end
72 66
73 // Support for jint Atomic::cmpxchg(jint exchange_value, 67 // Support for jint Atomic::cmpxchg(jint exchange_value,
74 // volatile jint *dest, 68 // volatile jint *dest,
75 // jint compare_value) 69 // jint compare_value)
76 // An additional bool (os::is_MP()) is passed as the last argument. 70 .inline _Atomic_cmpxchg,3
77 .inline _Atomic_cmpxchg,4
78 movl %edx, %eax // compare_value 71 movl %edx, %eax // compare_value
79 testl %ecx, %ecx // MP test
80 je 1f
81 lock 72 lock
82 1: cmpxchgl %edi, (%rsi) 73 cmpxchgl %edi, (%rsi)
83 .end 74 .end
84 75
85 // Support for jlong Atomic::cmpxchg(jlong exchange_value, 76 // Support for jlong Atomic::cmpxchg(jlong exchange_value,
86 // volatile jlong* dest, 77 // volatile jlong* dest,
87 // jlong compare_value) 78 // jlong compare_value)
88 // An additional bool (os::is_MP()) is passed as the last argument. 79 .inline _Atomic_cmpxchg_long,3
89 .inline _Atomic_cmpxchg_long,6
90 movq %rdx, %rax // compare_value 80 movq %rdx, %rax // compare_value
91 testq %rcx, %rcx // MP test
92 je 1f
93 lock 81 lock
94 1: cmpxchgq %rdi, (%rsi) 82 cmpxchgq %rdi, (%rsi)
95 .end 83 .end
96 84
97 // Support for OrderAccess::acquire() 85 // Support for OrderAccess::acquire()
98 .inline _OrderAccess_acquire,0 86 .inline _OrderAccess_acquire,0
99 movl 0(%rsp), %eax 87 movl 0(%rsp), %eax