comparison src/os_cpu/solaris_x86/vm/solaris_x86_32.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 665be97e8704
children c18cbe5936b8
comparison
equal deleted inserted replaced
1546:a00b51b2dda4 1547:fb1a39993f69
48 .inline _Atomic_add,3 48 .inline _Atomic_add,3
49 movl 0(%esp), %eax // inc 49 movl 0(%esp), %eax // inc
50 movl 4(%esp), %edx // dest 50 movl 4(%esp), %edx // dest
51 movl %eax, %ecx 51 movl %eax, %ecx
52 cmpl $0, 8(%esp) // MP test 52 cmpl $0, 8(%esp) // MP test
53 je 1f 53 jne 1f
54 lock 54 xaddl %eax, (%edx)
55 1: xaddl %eax, (%edx) 55 jmp 2f
56 addl %ecx, %eax 56 1: lock
57 xaddl %eax, (%edx)
58 2: addl %ecx, %eax
57 .end 59 .end
58 60
59 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). 61 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest).
60 .inline _Atomic_xchg,2 62 .inline _Atomic_xchg,2
61 movl 0(%esp), %eax // exchange_value 63 movl 0(%esp), %eax // exchange_value
70 .inline _Atomic_cmpxchg,4 72 .inline _Atomic_cmpxchg,4
71 movl 8(%esp), %eax // compare_value 73 movl 8(%esp), %eax // compare_value
72 movl 0(%esp), %ecx // exchange_value 74 movl 0(%esp), %ecx // exchange_value
73 movl 4(%esp), %edx // dest 75 movl 4(%esp), %edx // dest
74 cmp $0, 12(%esp) // MP test 76 cmp $0, 12(%esp) // MP test
75 je 1f 77 jne 1f
76 lock 78 cmpxchgl %ecx, (%edx)
77 1: cmpxchgl %ecx, (%edx) 79 jmp 2f
80 1: lock
81 cmpxchgl %ecx, (%edx)
82 2:
78 .end 83 .end
79 84
80 // Support for jlong Atomic::cmpxchg(jlong exchange_value, 85 // Support for jlong Atomic::cmpxchg(jlong exchange_value,
81 // volatile jlong* dest, 86 // volatile jlong* dest,
82 // jlong compare_value) 87 // jlong compare_value)
88 movl 24(%esp), %edx // compare_value (high) 93 movl 24(%esp), %edx // compare_value (high)
89 movl 16(%esp), %edi // dest 94 movl 16(%esp), %edi // dest
90 movl 8(%esp), %ebx // exchange_value (low) 95 movl 8(%esp), %ebx // exchange_value (low)
91 movl 12(%esp), %ecx // exchange_high (high) 96 movl 12(%esp), %ecx // exchange_high (high)
92 cmp $0, 28(%esp) // MP test 97 cmp $0, 28(%esp) // MP test
93 je 1f 98 jne 1f
94 lock 99 cmpxchg8b (%edi)
95 1: cmpxchg8b (%edi) 100 jmp 2f
96 popl %edi 101 1: lock
102 cmpxchg8b (%edi)
103 2: popl %edi
97 popl %ebx 104 popl %ebx
98 .end 105 .end
99 106
100 // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest). 107 // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest).
101 .inline _Atomic_load_long,2 108 .inline _Atomic_load_long,2